FINHTML5 - Breaking the mobile web

267
Max Firtman @firt BREAKING LIMITS ON MOBILE HTML5 Helsinki, Oct 31, 2013

description

Talk at FINHTML5 Helsinki Finland.

Transcript of FINHTML5 - Breaking the mobile web

Page 1: FINHTML5 - Breaking the mobile web

Max Firtman @firt !

!

BREAKING LIMITS

ON MOBILE

HTML5

!

!

!

!Helsinki, Oct 31, 2013

Page 2: FINHTML5 - Breaking the mobile web
Page 3: FINHTML5 - Breaking the mobile web
Page 4: FINHTML5 - Breaking the mobile web
Page 5: FINHTML5 - Breaking the mobile web
Page 6: FINHTML5 - Breaking the mobile web

questions

yes, please !

QA at the end

Page 7: FINHTML5 - Breaking the mobile web

agenda

Mobile HTML5 Hacks for breaking limits Next step: Google Glass

Page 8: FINHTML5 - Breaking the mobile web

mobile development

Page 9: FINHTML5 - Breaking the mobile web

mobile

1- websites 2- apps

Page 10: FINHTML5 - Breaking the mobile web

mobile

1- websites 2- apps

Page 11: FINHTML5 - Breaking the mobile web

mobile

1- websites 2- apps

Page 12: FINHTML5 - Breaking the mobile web

with html5 we can create...

Page 13: FINHTML5 - Breaking the mobile web

we can create

1- websites

Page 14: FINHTML5 - Breaking the mobile web

Using the browser

URL

Web Server

1- websiteswe can create

Page 15: FINHTML5 - Breaking the mobile web

we can create

2- webapps

Page 16: FINHTML5 - Breaking the mobile web

Browser to install

Full-screen

Icon on home screen

Web Server

2- webappswe can create

Page 17: FINHTML5 - Breaking the mobile web

full screen webapps

home screen webapps

webapps are also known as(

)

Page 18: FINHTML5 - Breaking the mobile web

we can create

3- native webapps

Page 19: FINHTML5 - Breaking the mobile web

Package, compile, sign

Icon on home screen

App Store

No web server

3- native webappswe can create

Page 20: FINHTML5 - Breaking the mobile web

hybrid apps

packaged webapps

native webapps are also known as

(

)

Page 21: FINHTML5 - Breaking the mobile web

mobile

1- websites 2- apps

Page 22: FINHTML5 - Breaking the mobile web

a- native b- webapps c- native webapps

mobile

1- websites 2- apps

Page 23: FINHTML5 - Breaking the mobile web

web platforms

Page 24: FINHTML5 - Breaking the mobile web

How many browsers do you know on desktop?

web platforms

Page 25: FINHTML5 - Breaking the mobile web

5web platforms

Page 26: FINHTML5 - Breaking the mobile web

How many browsers do you know on mobile?

web platforms

Page 27: FINHTML5 - Breaking the mobile web

...web platforms

Page 28: FINHTML5 - Breaking the mobile web
Page 29: FINHTML5 - Breaking the mobile web

Android Browser

Page 30: FINHTML5 - Breaking the mobile web

Android Browser 2.2

Page 31: FINHTML5 - Breaking the mobile web

Android Browser 2.3

Page 32: FINHTML5 - Breaking the mobile web

Android Browser 4.x

Page 33: FINHTML5 - Breaking the mobile web

Did I mention it is NOT Google Chrome?

(

)

Page 34: FINHTML5 - Breaking the mobile web

Google Chrome

Page 35: FINHTML5 - Breaking the mobile web

Google Chrome Android

Page 36: FINHTML5 - Breaking the mobile web

Google Chrome iOS

Page 37: FINHTML5 - Breaking the mobile web

Safari on iOS

Page 38: FINHTML5 - Breaking the mobile web

Opera

Page 39: FINHTML5 - Breaking the mobile web

Opera Mobile

Page 40: FINHTML5 - Breaking the mobile web

Opera Mini

Page 41: FINHTML5 - Breaking the mobile web

Opera for Android

Page 42: FINHTML5 - Breaking the mobile web

Firefox

Page 43: FINHTML5 - Breaking the mobile web

Firefox OS

Page 44: FINHTML5 - Breaking the mobile web

Internet Explorer

Page 45: FINHTML5 - Breaking the mobile web

BlackBerry Browser 5-7.x

Page 46: FINHTML5 - Breaking the mobile web

BlackBerry Browser 5-7.x

Page 47: FINHTML5 - Breaking the mobile web

BlackBerry Browser PB

Page 48: FINHTML5 - Breaking the mobile web

BlackBerry Browser BB10

Page 49: FINHTML5 - Breaking the mobile web

Nokia Browser

Page 50: FINHTML5 - Breaking the mobile web

Nokia Browser Symbian

Page 51: FINHTML5 - Breaking the mobile web

Nokia Browser MeeGo

Page 52: FINHTML5 - Breaking the mobile web

Nokia Browser Series 40

Page 53: FINHTML5 - Breaking the mobile web

Silk

Page 54: FINHTML5 - Breaking the mobile web

UC Web

Page 55: FINHTML5 - Breaking the mobile web

Dolfin

Page 56: FINHTML5 - Breaking the mobile web

should I continue?

(

)

Page 57: FINHTML5 - Breaking the mobile web

Proxy browsers

web platforms

Page 58: FINHTML5 - Breaking the mobile web

And it’s not just browsers!

web platforms

Page 59: FINHTML5 - Breaking the mobile web

Web View

web platforms

Page 60: FINHTML5 - Breaking the mobile web

Web View

web platforms

Page 61: FINHTML5 - Breaking the mobile web

Web View

web platforms

Page 62: FINHTML5 - Breaking the mobile web

Web View

web platforms

Page 63: FINHTML5 - Breaking the mobile web

Official (native) webapp platforms

web platforms

Page 64: FINHTML5 - Breaking the mobile web

Official (native) webapp platforms

web platforms

Page 65: FINHTML5 - Breaking the mobile web

unknown future

Page 66: FINHTML5 - Breaking the mobile web

2013: glasses

Page 67: FINHTML5 - Breaking the mobile web

hacks, why?

Page 68: FINHTML5 - Breaking the mobile web
Page 69: FINHTML5 - Breaking the mobile web
Page 70: FINHTML5 - Breaking the mobile web

1- UI hacks

Page 71: FINHTML5 - Breaking the mobile web

UI

Full screen

Page 72: FINHTML5 - Breaking the mobile web

full screen

Page 73: FINHTML5 - Breaking the mobile web

full screen

3 solutions

Page 74: FINHTML5 - Breaking the mobile web

full screen

Solution #1

Page 75: FINHTML5 - Breaking the mobile web

full screen

<meta name="apple-mobile-web-app-capable" content="yes">

Page 76: FINHTML5 - Breaking the mobile web

full screen

<meta name="mobile-web-app-capable" content="yes">

Page 77: FINHTML5 - Breaking the mobile web

full screen

<meta name="apple-mobile-web-app-capable" content="yes">

if (navigator.standalone) { }

Page 78: FINHTML5 - Breaking the mobile web

full screen

<meta name="apple-mobile-web-app-capable" content="yes"><meta name="viewport" content="width=320.1">

Page 79: FINHTML5 - Breaking the mobile web

full screen

<meta name="apple-mobile-web-app-capable" content="yes">

<meta name="viewport" content="width=device-width"> <meta name="viewport" content="..." media="device-height: 568px">

Page 80: FINHTML5 - Breaking the mobile web

full screen

Page 81: FINHTML5 - Breaking the mobile web

full screen

Solution #2

future platforms

Page 82: FINHTML5 - Breaking the mobile web

full screenvar body = document.documentElement; !

if (body.requestFullScreen) { body.requestFullScreen(); }

Page 83: FINHTML5 - Breaking the mobile web

full screenvar body = document.documentElement; !

if (body.requestFullScreen) { body.requestFullScreen(); } else if (body.webkitRequestFullScreen) { body.webkitRequestFullScreen(); }

Page 84: FINHTML5 - Breaking the mobile web

full screenvar body = document.documentElement; !

if (body.requestFullScreen) { body.requestFullScreen(); } else if (body.webkitRequestFullScreen) { body.webkitRequestFullScreen(); } else if (body.mozRequestFullScreen) { body.mozRequestFullScreen(); }

Page 85: FINHTML5 - Breaking the mobile web

full screen

Solution #3

...

Page 86: FINHTML5 - Breaking the mobile web

full screen

window.addEventListener("load", function() { window.scrollTo(0, 0); }); !

// use with care document.addEventListener("touchmove", function(e) { e.preventDefault() });

Page 87: FINHTML5 - Breaking the mobile web

UI

Snapped mode Windows 8

Page 88: FINHTML5 - Breaking the mobile web

snapped mode

Page 89: FINHTML5 - Breaking the mobile web

snapped mode

@media only screen and (max-width: 400px) { @-ms-viewport {  width: 320px;  } }

Page 90: FINHTML5 - Breaking the mobile web

UI

High resolution canvas

Page 91: FINHTML5 - Breaking the mobile web

hi-res canvas

<canvas width="300" height="200"> </canvas>

300px

Page 92: FINHTML5 - Breaking the mobile web

hi-res canvas

300 CSS pixels

300 1.00 390 1.30 450 1.50 600 2.00 672 2.24 900 3.00 !

!

device px px ratio

Page 93: FINHTML5 - Breaking the mobile web

hi res canvas

<canvas width="300" height="200"> </canvas>

300px

Page 94: FINHTML5 - Breaking the mobile web

hi res canvas

var devPxRatio = window.devicePixelRatio; !

var canvasPxRatio = document.querySelector("canvas") .getContext("2d") .webkitBackingStorePixelRatio;

Page 95: FINHTML5 - Breaking the mobile web

hi res canvas

<canvas width="300" height="200"> </canvas>

300px

devPxRatio = 2 canvasPxRatio = 1

Page 96: FINHTML5 - Breaking the mobile web

hi res canvas

<canvas width="300" height="200"> </canvas>

300px

devPxRatio >= 1 canvasPxRatio = undefined

Page 97: FINHTML5 - Breaking the mobile web

Solution #1

hi res canvas

Page 98: FINHTML5 - Breaking the mobile web

hi res canvas

<meta name="viewport" content="width=640"> !

<canvas width="600" height="400"> </canvas>

600px

Page 99: FINHTML5 - Breaking the mobile web

Solution #2

hi res canvas

Page 100: FINHTML5 - Breaking the mobile web

hi res canvas<script>document.querySelector("canvas") .getContext("2d") .setScale(2, 2); </script>

300px

Page 101: FINHTML5 - Breaking the mobile web

hi res canvas

<canvas width="600" height="400"> </canvas>

300px

<script>document.querySelector("canvas") .getContext("2d") .setScale(2, 2); </script>

Page 102: FINHTML5 - Breaking the mobile web

hi res canvas

<canvas width="600" height="400" style="width: 300px; height: 200px"> </canvas>

300px

<script>document.querySelector("canvas") .getContext("2d") .setScale(2, 2); </script>

Page 103: FINHTML5 - Breaking the mobile web

multi-platform & multi-resolution

Page 104: FINHTML5 - Breaking the mobile web

execution & memory

Page 105: FINHTML5 - Breaking the mobile web

UI

truly numeric field

Page 106: FINHTML5 - Breaking the mobile web

numeric

<input type="number">

Page 107: FINHTML5 - Breaking the mobile web

numeric

<input type="number">

Page 108: FINHTML5 - Breaking the mobile web

numeric

<input type="number">

Page 109: FINHTML5 - Breaking the mobile web

Solution

Page 110: FINHTML5 - Breaking the mobile web

numeric

<input type="number" pattern="[0-9]*">

Page 111: FINHTML5 - Breaking the mobile web

numeric

<input type="password" pattern="[0-9]*">

Page 112: FINHTML5 - Breaking the mobile web

UI

rich editor

Page 113: FINHTML5 - Breaking the mobile web

rich editor

<ul contenteditable> <li>First item </ul>

Page 114: FINHTML5 - Breaking the mobile web

rich editor

<ul contenteditable> <li>First item </ul>

Page 115: FINHTML5 - Breaking the mobile web

rich editor

<ul contenteditable> <li>First item </ul>

Page 116: FINHTML5 - Breaking the mobile web

UI

background tab resurrection

Page 117: FINHTML5 - Breaking the mobile web

background

Page 118: FINHTML5 - Breaking the mobile web

background

Page 119: FINHTML5 - Breaking the mobile web

<marquee>Welcome to my website!</marquee>

Page 120: FINHTML5 - Breaking the mobile web

<font family="Arial" size="20">

Page 121: FINHTML5 - Breaking the mobile web

background

<meta http-equiv="refresh" content="60">

Page 122: FINHTML5 - Breaking the mobile web

background<meta http-equiv="refresh" content="2"> !

Page 123: FINHTML5 - Breaking the mobile web

background<meta http-equiv="refresh" content="2"> !

<script> var mr = document.querySelector("meta"); setInterval(function() { mr.content=mr.content; }, 1000); </script>

Page 124: FINHTML5 - Breaking the mobile web
Page 125: FINHTML5 - Breaking the mobile web

background

Page 126: FINHTML5 - Breaking the mobile web

DISCLAIMER

Page 127: FINHTML5 - Breaking the mobile web

only from iOS 6.1

Page 128: FINHTML5 - Breaking the mobile web

UI

images for different screen densities

Page 129: FINHTML5 - Breaking the mobile web

screen densities

<img src="photo.png" width="300">

Page 130: FINHTML5 - Breaking the mobile web

screen densities

Page 131: FINHTML5 - Breaking the mobile web

300 CSS pixels

300 1.00 390 1.30 450 1.50 600 2.00 672 2.24 900 3.00 !

!

device px px ratio

screen densities

Page 132: FINHTML5 - Breaking the mobile web

Solution #1

Page 133: FINHTML5 - Breaking the mobile web

screen densitiesuse vector images <img src="photo.svg" width="300">

<svg></svg>

@font-face {}

Page 134: FINHTML5 - Breaking the mobile web

screen densities

Page 135: FINHTML5 - Breaking the mobile web

screen densities

Page 136: FINHTML5 - Breaking the mobile web

Solution #2

Page 137: FINHTML5 - Breaking the mobile web

screen densities

<img src="photo.png" width="300">

if (window.devicePixelRatio > 1.5) { // change URL }

Page 138: FINHTML5 - Breaking the mobile web

Solution #3

Page 139: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

#photoContainer { background-image: -webkit-image-set(url('photo-lo.png') 1x, url('photo-hi.png') 2x); width: 300px; height: 200px; }

Page 140: FINHTML5 - Breaking the mobile web

Solution #4

Page 141: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

#photoContainer { background-image: url('photo-lo.png'); width: 300px; height: 200px; }

Page 142: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

@media (-webkit-min-device-pixel-ratio: 1.5) { #photoContainer { background-image: url('photo-hi.png'); background-size: 100%; width: 300px; height: 200px; }

}

Page 143: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5) { !

!

!

!

!

}

Page 144: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1/2) { !

!

!

!

}

Page 145: FINHTML5 - Breaking the mobile web

screen densities

<div id="photoContainer">

@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1/2), (min-resolution: 1.5dppx) { !

!

!

}

Page 146: FINHTML5 - Breaking the mobile web

always query on ranges

@media (-webkit-device-pixel-ratio: 2)

Page 147: FINHTML5 - Breaking the mobile web

always query on ranges

@media (-webkit-min-device-pixel-ratio: 1.7)

Page 148: FINHTML5 - Breaking the mobile web

find the balance300x300 900x900

Page 149: FINHTML5 - Breaking the mobile web

2- device interaction hacks

Page 150: FINHTML5 - Breaking the mobile web

device

media capture

Page 151: FINHTML5 - Breaking the mobile web

media capture

<input type="file">

Page 152: FINHTML5 - Breaking the mobile web

Solution

Page 153: FINHTML5 - Breaking the mobile web

media capture

<input type="file" accept="image/*">

<input type="file" accept="video/*">

<input type="file" accept="audio/*">

Page 154: FINHTML5 - Breaking the mobile web

media capture

<input type="file" accept="image/*" capture="camera">

<input type="file" accept="video/*" capture="camcorder">

<input type="file" accept="video/*" capture="microphone">

(old spec)

Page 155: FINHTML5 - Breaking the mobile web

media capture

Live demo

Page 156: FINHTML5 - Breaking the mobile web

device

interacting with native apps

Page 157: FINHTML5 - Breaking the mobile web

native integration

Page 158: FINHTML5 - Breaking the mobile web
Page 159: FINHTML5 - Breaking the mobile web

Solution, part I

Page 160: FINHTML5 - Breaking the mobile web

DON'T DO THAT

Page 161: FINHTML5 - Breaking the mobile web

Solution, part II

Page 162: FINHTML5 - Breaking the mobile web

native integration

<meta name="apple-itunes-app" content="app-id=999">

Page 163: FINHTML5 - Breaking the mobile web

native integration

Page 164: FINHTML5 - Breaking the mobile web

native integration

<meta name="apple-itunes-app" content="app-id=999">

<meta name="app-argument" content="">

Page 165: FINHTML5 - Breaking the mobile web

native integration

<meta name="msApplication-ID" content="App"> <meta name="msApplication-PackageFamilyName" content="myPackage">

Page 166: FINHTML5 - Breaking the mobile web

native integration

Page 167: FINHTML5 - Breaking the mobile web

native integration

Page 168: FINHTML5 - Breaking the mobile web

native integration

Page 169: FINHTML5 - Breaking the mobile web

native integration

<meta name="msApplication-ID" content="App"> <meta name="msApplication-PackageFamilyName" content="myPackage"> !

<meta name="msApplication-Arguments" content=""> !

Page 170: FINHTML5 - Breaking the mobile web

no api no android

Page 171: FINHTML5 - Breaking the mobile web

Solution, part III

Page 172: FINHTML5 - Breaking the mobile web

native integration

<a href="customprotocol://">Open app</a> !

Page 173: FINHTML5 - Breaking the mobile web

native integration

<a href="twitter://post?message=HTML5"> Tweet this</a> !

Page 174: FINHTML5 - Breaking the mobile web

native integration

Page 175: FINHTML5 - Breaking the mobile web

native integration

function tweet() { location.href="twitter://post?message=HTML5"; setTimeout(function() {

location.href="postCall.html"; }, 1000); } !

Page 176: FINHTML5 - Breaking the mobile web

native integration

Page 177: FINHTML5 - Breaking the mobile web

native integrationfunction tweet() { iframe.location.href= "twitter://post?message=HTML5"; setTimeout(function() {

appNotInstalled(); }, 1000); } !

Page 178: FINHTML5 - Breaking the mobile web

device

push notification

Page 179: FINHTML5 - Breaking the mobile web

push

<a href="suscription.passbook"> Subscribe to this site </a>

Page 180: FINHTML5 - Breaking the mobile web

push

Page 181: FINHTML5 - Breaking the mobile web

push

Page 182: FINHTML5 - Breaking the mobile web

3- enhancing your app hacks

Page 183: FINHTML5 - Breaking the mobile web

enhance your app

iOS home screen title

Page 184: FINHTML5 - Breaking the mobile web

home screen

Page 185: FINHTML5 - Breaking the mobile web

home screen

Page 186: FINHTML5 - Breaking the mobile web

home screen

<title>My long title for SEO</title> <meta name="apple-web-app-title" content="My App">

UNDOCUMENTED

Page 187: FINHTML5 - Breaking the mobile web

enhance your app

Changing tint iOS 7

Page 188: FINHTML5 - Breaking the mobile web

tint

body { background-color: blue; /* for the tint */ background-image: linear-gradient(to bottom, green 0%, green 100%); /* for the body */ }

Page 189: FINHTML5 - Breaking the mobile web

enhance your app

IE10 Live Tile

Page 190: FINHTML5 - Breaking the mobile web

live tile

Page 191: FINHTML5 - Breaking the mobile web

live tile

Page 192: FINHTML5 - Breaking the mobile web

live tile

<meta name="msapplication-TileImage" content="tile.png"> !

<meta name="msapplication-TileColor" content="#ef0303">

Page 193: FINHTML5 - Breaking the mobile web

enhance your app

You've said live tile!!!

Page 194: FINHTML5 - Breaking the mobile web

live tile

<meta name="msapplication-badge" content="frequency=60;polling-uri=XXX"> !

!

Page 195: FINHTML5 - Breaking the mobile web

live tile<meta name="msapplication-badge" content="frequency=60;polling-uri=XXX"> !

<?xml version="1.0" ?> <badge value="3" /> !

Page 196: FINHTML5 - Breaking the mobile web

live tile<meta name="msapplication-badge" content="frequency=60;polling-uri=XXX"> !

<?xml version="1.0" ?> <badge value="newMessage" /> !

Page 197: FINHTML5 - Breaking the mobile web

enhance your app

It’s even better on IE11

Page 198: FINHTML5 - Breaking the mobile web

enhance your app

Storage limits

Page 199: FINHTML5 - Breaking the mobile web

storage

AppCache, localStorage, WebSQL, IDB

Page 200: FINHTML5 - Breaking the mobile web

storage

Different domains, iframes and Cross Document Messaging API !

Page 201: FINHTML5 - Breaking the mobile web

storage

Page 202: FINHTML5 - Breaking the mobile web

this might not work in the future

Page 203: FINHTML5 - Breaking the mobile web

do you really need more space?

Page 204: FINHTML5 - Breaking the mobile web

4- tools

Page 205: FINHTML5 - Breaking the mobile web

Tools

Bandwidth simulators

Page 206: FINHTML5 - Breaking the mobile web

netlimiter.com

Page 207: FINHTML5 - Breaking the mobile web

slowyapp.com

Page 208: FINHTML5 - Breaking the mobile web

charlesproxy.com

Page 209: FINHTML5 - Breaking the mobile web

Tools

Virtual Mobile Labs

Page 210: FINHTML5 - Breaking the mobile web

developer.nokia.com

Page 211: FINHTML5 - Breaking the mobile web

developer.samsung.com

Page 212: FINHTML5 - Breaking the mobile web

keynotedeviceanywhere.com

Page 213: FINHTML5 - Breaking the mobile web

most used key combinations?

Page 214: FINHTML5 - Breaking the mobile web
Page 215: FINHTML5 - Breaking the mobile web
Page 216: FINHTML5 - Breaking the mobile web

Tools

Live Reload

Page 217: FINHTML5 - Breaking the mobile web

livereload.com

Page 218: FINHTML5 - Breaking the mobile web

wrapping up

Page 219: FINHTML5 - Breaking the mobile web

we need hacks because

• browsers are different • no enough information • undocumented features • buggy

Page 220: FINHTML5 - Breaking the mobile web

however

• usability and Performance matters • be careful • your app should work anyway • use feature detection

Page 221: FINHTML5 - Breaking the mobile web
Page 222: FINHTML5 - Breaking the mobile web

“change is the only constant“Heraclitus

Page 223: FINHTML5 - Breaking the mobile web

1- glass experience

Page 224: FINHTML5 - Breaking the mobile web

quick video( )

Page 225: FINHTML5 - Breaking the mobile web

MYTHS

Page 226: FINHTML5 - Breaking the mobile web
Page 227: FINHTML5 - Breaking the mobile web
Page 228: FINHTML5 - Breaking the mobile web
Page 229: FINHTML5 - Breaking the mobile web
Page 230: FINHTML5 - Breaking the mobile web
Page 231: FINHTML5 - Breaking the mobile web
Page 232: FINHTML5 - Breaking the mobile web
Page 233: FINHTML5 - Breaking the mobile web
Page 234: FINHTML5 - Breaking the mobile web
Page 235: FINHTML5 - Breaking the mobile web

Notifications on your head

Page 236: FINHTML5 - Breaking the mobile web

Notifications on your head

Page 237: FINHTML5 - Breaking the mobile web

Your content is not so important

Page 238: FINHTML5 - Breaking the mobile web

specs

nHD transparent 640x360 25" - 2.5m / 8 ft away

Page 239: FINHTML5 - Breaking the mobile web

specs

Sensors

Page 240: FINHTML5 - Breaking the mobile web

specs

Camera

Page 241: FINHTML5 - Breaking the mobile web

specs

Multi-touch panel

Page 242: FINHTML5 - Breaking the mobile web

specs

wifi bluetooth

Page 243: FINHTML5 - Breaking the mobile web

specs

Android 4.0

Page 244: FINHTML5 - Breaking the mobile web

specs

bone conduction transducer

Page 245: FINHTML5 - Breaking the mobile web

quick demo( )

Page 246: FINHTML5 - Breaking the mobile web

native GDK vs

cloud Mirror API

Page 247: FINHTML5 - Breaking the mobile web

https

Page 248: FINHTML5 - Breaking the mobile web

httpscontent

Page 249: FINHTML5 - Breaking the mobile web

httpscontent

actions

Page 250: FINHTML5 - Breaking the mobile web

https

http(s)

content

actions

Page 251: FINHTML5 - Breaking the mobile web

glassware

Page 252: FINHTML5 - Breaking the mobile web

glassware

Page 253: FINHTML5 - Breaking the mobile web

timeline

past, now, future

Page 254: FINHTML5 - Breaking the mobile web

quick demo( )

Page 255: FINHTML5 - Breaking the mobile web

timeline

timeline items = card

Page 256: FINHTML5 - Breaking the mobile web

timeline

card

Page 257: FINHTML5 - Breaking the mobile web

code!

built-in menu items share navigate to read aloud delete

voice call reply toggle pin view website

Page 258: FINHTML5 - Breaking the mobile web

timeline

contextual eventsgeolocation !

Page 259: FINHTML5 - Breaking the mobile web

browser

invocationgoogle search card's action

Page 260: FINHTML5 - Breaking the mobile web

quick demo( )

Page 261: FINHTML5 - Breaking the mobile web

browser

interactionscroll point and click

Page 262: FINHTML5 - Breaking the mobile web

browser

responsive web designmobile user agent width: 427px pixel ratio: 1.5

Page 263: FINHTML5 - Breaking the mobile web

browser

html5video, audio devicemotion scroll and touch events no geo, speech, camera yet

Page 264: FINHTML5 - Breaking the mobile web

timeline

contextual eventsgeolocation share

Page 265: FINHTML5 - Breaking the mobile web

timeline

contextual eventsgeolocation share launch "ok glass" menu

Page 266: FINHTML5 - Breaking the mobile web

glass

- understand the experience - mirror api vs gdk vs browser - Glassware cloud-based - it's just the beginning

Page 267: FINHTML5 - Breaking the mobile web

you can reach a good experience

Pictures)from)freedigitalphotos.net)

thank you!

[email protected] @firt

firt.mobi/pmw Next Tuesday @ Tallin

Mobile HTML5 Workshop

topconf.com