KEMBAR78
jQTouch – Mobile Web Apps with HTML, CSS and JavaScript | KEY
jQTouch
Mobile Web Apps with
HTML, CSS & JavaScript




@philippbosch
February 18, 2010 – jsberlin
Hi, I’m Philipp.
Hi, I’m Philipp.
• Freelance Web Developer
Hi, I’m Philipp.
• Freelance Web Developer
• Working in Kreuzberg
Hi, I’m Philipp.
• Freelance Web Developer
• Working in Kreuzberg
• Creating websites & web applications since 1995
Hi, I’m Philipp.
• Freelance Web Developer
• Working in Kreuzberg
• Creating websites & web applications since 1995
• Been doing some mobile projects recently
Mobile Apps.
Mobile Apps.
• Two different ways to develop for mobile devices:
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
    • Objective-C (iPhone)
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
    • Objective-C (iPhone)
    • Java (Android)
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
    • Objective-C (iPhone)
    • Java (Android)
  • «Web Apps»
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
    • Objective-C (iPhone)
    • Java (Android)
  • «Web Apps»
    • HTML, CSS, JavaScript
Mobile Apps.
• Two different ways to develop for mobile devices:
  • «Native Apps»
    • Objective-C (iPhone)
    • Java (Android)
  • «Web Apps»
    • HTML, CSS, JavaScript
    • run on all devices with a web browser
Web Apps.
Web Apps.
• Any regular website can be a web app.
Web Apps.
• Any regular website can be a web app.
• On the iPhone you can add web apps to the
 home screen.
jQuery.com WebClip
jQuery.com WebClip
jQuery API Browser
jQuery API Browser
Voilà: jQTouch.
Voilà: jQTouch.
• Plugin for jQuery
Voilà: jQTouch.
• Plugin for jQuery
• User interface elements (iPhone style)
Voilà: jQTouch.
• Plugin for jQuery
• User interface elements (iPhone style)
• Themes
Voilà: jQTouch.
• Plugin for jQuery
• User interface elements (iPhone style)
• Themes
• Automatic Navigation
Voilà: jQTouch.
• Plugin for jQuery
• User interface elements (iPhone style)
• Themes
• Automatic Navigation
• Animations
Voilà: jQTouch.
• Plugin for jQuery
• User interface elements (iPhone style)
• Themes
• Automatic Navigation
• Animations
• Supports mobile Webkit browsers (iPhone,
 Android, Palm Pre, …)
How does it work?
How does it work?
• One HTML file.
How does it work?
• One HTML file.
• Inside the <body> element create a <div>
 element for each panel of your app.
How does it work?
• One HTML file.
• Inside the <body> element create a <div>
 element for each panel of your app.
• Use class name conventions in your HTML, e.g.
 div.toolbar, ul.rounded, a.back, …
How does it work?
• One HTML file.
• Inside the <body> element create a <div>
 element for each panel of your app.
• Use class name conventions in your HTML, e.g.
 div.toolbar, ul.rounded, a.back, …

• Add jqtouch.js, jqtouch.css, theme.css.
How does it work?
• One HTML file.
• Inside the <body> element create a <div>
 element for each panel of your app.
• Use class name conventions in your HTML, e.g.
 div.toolbar, ul.rounded, a.back, …

• Add jqtouch.js, jqtouch.css, theme.css.
• Call $.jQTouch().
<!doctype html>
<html>
  <head>
    <title>jsberlin</title>
    <script src="jqtouch/jquery.1.3.2.min.js">…
    <script src="jqtouch/jqtouch.min.js">…
    <style type="text/css">
       @import "jqtouch/jqtouch.min.css";
    </style>
    <style type="text/css">
       @import "themes/jqt/theme.min.css";
    </style>
    <script>
       $.jQTouch();
    </script>
  </head>
  …
…
  <body>
    <div id="home">
      <div class="toolbar"><h1>My app</h1></div>
      <ul class="rounded">
         <li><a href="#foo">Foo</a></li>
         <li><a href="#bar">Bar</a></li>
      </ul>
    </div>
    <div id="foo">
      <div class="toolbar">
         <h1>Foo</h1>
         <a href="#" class="back">Back</a>
      </div>
    </div>
  </body>
</html>
Animation.
Animation.
• 8 built-in animations: slide, slideup,
 dissolve, fade, flip, pop, swap and cube.
Animation.
• 8 built-in animations: slide, slideup,
 dissolve, fade, flip, pop, swap and cube.
Animation.
• 8 built-in animations: slide, slideup,
 dissolve, fade, flip, pop, swap and cube.

• Use these as class names for links to another
 panel (<a href="#foo" class="swap">).
Animation.
• 8 built-in animations: slide, slideup,
 dissolve, fade, flip, pop, swap and cube.

• Use these as class names for links to another
 panel (<a href="#foo" class="swap">).

• Default is slide.
Animation.
• 8 built-in animations: slide, slideup,
  dissolve, fade, flip, pop, swap and cube.

• Use these as class names for links to another
  panel (<a href="#foo" class="swap">).

• Default is slide.
• If you click on a back button the reverse
  animation is applied automatically.
…
<div id="home">
  <div class="toolbar"><h1>My app</h1></div>
  <ul class="rounded">
    <li><a href="#foo" class="flip">Foo</a></li>
    <li><a href="#bar">Bar</a></li>
  </ul>
</div>
…
Events.
Events.
• Five new events you can bind callbacks to:
Events.
• Five new events you can bind callbacks to:
 • tap
Events.
• Five new events you can bind callbacks to:
 • tap
 • http://blog.jqtouch.com/post/205113875/
Events.
• Five new events you can bind callbacks to:
 • tap
 • http://blog.jqtouch.com/post/205113875/

 • pageAnimationStart
Events.
• Five new events you can bind callbacks to:
 • tap
 • http://blog.jqtouch.com/post/205113875/

 • pageAnimationStart
 • pageAnimationEnd
Events.
• Five new events you can bind callbacks to:
 • tap
 • http://blog.jqtouch.com/post/205113875/

 • pageAnimationStart
 • pageAnimationEnd
 • turn
Events.
• Five new events you can bind callbacks to:
 • tap
 • http://blog.jqtouch.com/post/205113875/

 • pageAnimationStart
 • pageAnimationEnd
 • turn
 • swipe
$('#mybutton').tap(function() {
    // do something when the button is tapped on
});
$('#mypanel').bind('pageAnimationStart',
   function(event, info) {
     if (info.direction == 'in') {
       populateThePanelWithAjaxData();
     }
   }
);
$('body').bind('turn', function(event, info) {
    console.log(info.orientation);
    // landscape or profile
});
$('#swipeme').bind('swipe',
    function(event, info) {
        console.log(info.direction);
        // left or right
    }
);
Init Options.
Init Options.
$.jqTouch({
    icon: "path/to/homescreen-icon.png",
    startupScreen: "path/to/startup-image.png",
    statusBar: "default|black|black-translucent",
    addGlossToIcon: true|false,
    fixedViewport: true|false,
    preloadImages: ["img1.png","img2.png", …],
    ...
});
Themes.
Themes.
• Comes with two complete themes:
Themes.
• Comes with two complete themes:
 • «apple» mimics the default iPhone look
Themes.
• Comes with two complete themes:
 • «apple» mimics the default iPhone look
 • «jqt» is based on «apple» but darkermore
   universal
Themes.
• Comes with two complete themes:
 • «apple» mimics the default iPhone look
 • «jqt» is based on «apple» but darkermore
   universal
• Custom theming is easy: alter the CSS, throw in
 some graphics and you're done.
Themes.
• Comes with two complete themes:
  • «apple» mimics the default iPhone look
  • «jqt» is based on «apple» but darkermore
    universal
• Custom theming is easy: alter the CSS, throw in
  some graphics and you're done.
• Most graphical fx (gradients, round corners,
  shadows) are CSS3-based, so no gfx needed.
Pros & Cons.
Web apps: Pros.
Web apps: Pros.
• Ease of development.
Web apps: Pros.
• Ease of development.
• Cross-device compatibility.
Web apps: Pros.
• Ease of development.
• Cross-device compatibility.
• No AppStore approval needed.
Web apps: Pros.
• Ease of development.
• Cross-device compatibility.
• No AppStore approval needed.
• Easy updates.
Web apps: Cons.
Web apps: Cons.
• Only few APIs for device features available in JS.
Web apps: Cons.
• Only few APIs for device features available in JS.
• No AppStore.
Web apps: Cons.
• Only few APIs for device features available in JS.
• No AppStore.
• Hard to sell your app.
PhoneGap.
PhoneGap.
• Container for your web app.
PhoneGap.
• Container for your web app.
• Enables you to create a native app with your
 web app in it.
PhoneGap.
• Container for your web app.
• Enables you to create a native app with your
 web app in it.
• Put it in the AppStore, Android Market, …
PhoneGap.
• Container for your web app.
• Enables you to create a native app with your
 web app in it.
• Put it in the AppStore, Android Market, …
• Provides JS access to otherwise inaccessible
 device APIs.
Device APIs in JS.
Device APIs in JS.
• Device          • Camera
• Location        • Vibrate
• Accelerometer   • Sound
• Contacts        • Telephony
• Orientation     (if supported by the device)
PhoneGap.
PhoneGap.
• Supported platforms: iPhone, Android,
 Blackberry, Symbian, Palm.
PhoneGap.
• Supported platforms: iPhone, Android,
 Blackberry, Symbian, Palm.
• Windows Mobile, N900/Maemo to be added.
PhoneGap.
• Supported platforms: iPhone, Android,
 Blackberry, Symbian, Palm.
• Windows Mobile, N900/Maemo to be added.
• Open Source (MIT license).
Summing it up.
Summing it up.
Combine jQTouch with PhoneGap and the
possibilities of HTML 5 (Offline Cache,
localStorage/sessionStorage, client-side
databases) and you're gonna have a lot of fun.
Further reading.
Further reading.
• jQTouch » jqtouch.com
Further reading.
• jQTouch » jqtouch.com
• PhoneGap » phonegap.com
Further reading.
• jQTouch » jqtouch.com
• PhoneGap » phonegap.com
• Jonathan Stark: Building iPhone Apps with
 HTML, CSS, and JavaScript » building-iphone-
 apps.labs.oreilly.com
Thanks.




   CC-BY
Thanks.
Slides available at » pb.io/talks/jqtouch/.




        CC-BY
Thanks.
Slides available at » pb.io/talks/jqtouch/.
Tomorrow :)




        CC-BY
Demo
Showtime
Showtime
Todo
Todo
That's it.

jQTouch – Mobile Web Apps with HTML, CSS and JavaScript

  • 1.
    jQTouch Mobile Web Appswith HTML, CSS & JavaScript @philippbosch February 18, 2010 – jsberlin
  • 2.
  • 3.
    Hi, I’m Philipp. •Freelance Web Developer
  • 4.
    Hi, I’m Philipp. •Freelance Web Developer • Working in Kreuzberg
  • 5.
    Hi, I’m Philipp. •Freelance Web Developer • Working in Kreuzberg • Creating websites & web applications since 1995
  • 6.
    Hi, I’m Philipp. •Freelance Web Developer • Working in Kreuzberg • Creating websites & web applications since 1995 • Been doing some mobile projects recently
  • 7.
  • 8.
    Mobile Apps. • Twodifferent ways to develop for mobile devices:
  • 9.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps»
  • 10.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps» • Objective-C (iPhone)
  • 11.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps» • Objective-C (iPhone) • Java (Android)
  • 12.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps» • Objective-C (iPhone) • Java (Android) • «Web Apps»
  • 13.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps» • Objective-C (iPhone) • Java (Android) • «Web Apps» • HTML, CSS, JavaScript
  • 14.
    Mobile Apps. • Twodifferent ways to develop for mobile devices: • «Native Apps» • Objective-C (iPhone) • Java (Android) • «Web Apps» • HTML, CSS, JavaScript • run on all devices with a web browser
  • 15.
  • 16.
    Web Apps. • Anyregular website can be a web app.
  • 17.
    Web Apps. • Anyregular website can be a web app. • On the iPhone you can add web apps to the home screen.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    Voilà: jQTouch. • Pluginfor jQuery • User interface elements (iPhone style)
  • 25.
    Voilà: jQTouch. • Pluginfor jQuery • User interface elements (iPhone style) • Themes
  • 26.
    Voilà: jQTouch. • Pluginfor jQuery • User interface elements (iPhone style) • Themes • Automatic Navigation
  • 27.
    Voilà: jQTouch. • Pluginfor jQuery • User interface elements (iPhone style) • Themes • Automatic Navigation • Animations
  • 28.
    Voilà: jQTouch. • Pluginfor jQuery • User interface elements (iPhone style) • Themes • Automatic Navigation • Animations • Supports mobile Webkit browsers (iPhone, Android, Palm Pre, …)
  • 29.
  • 30.
    How does itwork? • One HTML file.
  • 31.
    How does itwork? • One HTML file. • Inside the <body> element create a <div> element for each panel of your app.
  • 32.
    How does itwork? • One HTML file. • Inside the <body> element create a <div> element for each panel of your app. • Use class name conventions in your HTML, e.g. div.toolbar, ul.rounded, a.back, …
  • 33.
    How does itwork? • One HTML file. • Inside the <body> element create a <div> element for each panel of your app. • Use class name conventions in your HTML, e.g. div.toolbar, ul.rounded, a.back, … • Add jqtouch.js, jqtouch.css, theme.css.
  • 34.
    How does itwork? • One HTML file. • Inside the <body> element create a <div> element for each panel of your app. • Use class name conventions in your HTML, e.g. div.toolbar, ul.rounded, a.back, … • Add jqtouch.js, jqtouch.css, theme.css. • Call $.jQTouch().
  • 35.
    <!doctype html> <html> <head> <title>jsberlin</title> <script src="jqtouch/jquery.1.3.2.min.js">… <script src="jqtouch/jqtouch.min.js">… <style type="text/css"> @import "jqtouch/jqtouch.min.css"; </style> <style type="text/css"> @import "themes/jqt/theme.min.css"; </style> <script> $.jQTouch(); </script> </head> …
  • 36.
    … <body> <div id="home"> <div class="toolbar"><h1>My app</h1></div> <ul class="rounded"> <li><a href="#foo">Foo</a></li> <li><a href="#bar">Bar</a></li> </ul> </div> <div id="foo"> <div class="toolbar"> <h1>Foo</h1> <a href="#" class="back">Back</a> </div> </div> </body> </html>
  • 40.
  • 41.
    Animation. • 8 built-inanimations: slide, slideup, dissolve, fade, flip, pop, swap and cube.
  • 43.
    Animation. • 8 built-inanimations: slide, slideup, dissolve, fade, flip, pop, swap and cube.
  • 44.
    Animation. • 8 built-inanimations: slide, slideup, dissolve, fade, flip, pop, swap and cube. • Use these as class names for links to another panel (<a href="#foo" class="swap">).
  • 45.
    Animation. • 8 built-inanimations: slide, slideup, dissolve, fade, flip, pop, swap and cube. • Use these as class names for links to another panel (<a href="#foo" class="swap">). • Default is slide.
  • 46.
    Animation. • 8 built-inanimations: slide, slideup, dissolve, fade, flip, pop, swap and cube. • Use these as class names for links to another panel (<a href="#foo" class="swap">). • Default is slide. • If you click on a back button the reverse animation is applied automatically.
  • 47.
    … <div id="home"> <div class="toolbar"><h1>My app</h1></div> <ul class="rounded"> <li><a href="#foo" class="flip">Foo</a></li> <li><a href="#bar">Bar</a></li> </ul> </div> …
  • 49.
  • 50.
    Events. • Five newevents you can bind callbacks to:
  • 51.
    Events. • Five newevents you can bind callbacks to: • tap
  • 52.
    Events. • Five newevents you can bind callbacks to: • tap • http://blog.jqtouch.com/post/205113875/
  • 53.
    Events. • Five newevents you can bind callbacks to: • tap • http://blog.jqtouch.com/post/205113875/ • pageAnimationStart
  • 54.
    Events. • Five newevents you can bind callbacks to: • tap • http://blog.jqtouch.com/post/205113875/ • pageAnimationStart • pageAnimationEnd
  • 55.
    Events. • Five newevents you can bind callbacks to: • tap • http://blog.jqtouch.com/post/205113875/ • pageAnimationStart • pageAnimationEnd • turn
  • 56.
    Events. • Five newevents you can bind callbacks to: • tap • http://blog.jqtouch.com/post/205113875/ • pageAnimationStart • pageAnimationEnd • turn • swipe
  • 57.
    $('#mybutton').tap(function() { // do something when the button is tapped on });
  • 58.
    $('#mypanel').bind('pageAnimationStart', function(event, info) { if (info.direction == 'in') { populateThePanelWithAjaxData(); } } );
  • 59.
    $('body').bind('turn', function(event, info){ console.log(info.orientation); // landscape or profile });
  • 60.
    $('#swipeme').bind('swipe', function(event, info) { console.log(info.direction); // left or right } );
  • 61.
  • 62.
    Init Options. $.jqTouch({ icon: "path/to/homescreen-icon.png", startupScreen: "path/to/startup-image.png", statusBar: "default|black|black-translucent", addGlossToIcon: true|false, fixedViewport: true|false, preloadImages: ["img1.png","img2.png", …], ... });
  • 63.
  • 64.
    Themes. • Comes withtwo complete themes:
  • 65.
    Themes. • Comes withtwo complete themes: • «apple» mimics the default iPhone look
  • 66.
    Themes. • Comes withtwo complete themes: • «apple» mimics the default iPhone look • «jqt» is based on «apple» but darkermore universal
  • 67.
    Themes. • Comes withtwo complete themes: • «apple» mimics the default iPhone look • «jqt» is based on «apple» but darkermore universal • Custom theming is easy: alter the CSS, throw in some graphics and you're done.
  • 68.
    Themes. • Comes withtwo complete themes: • «apple» mimics the default iPhone look • «jqt» is based on «apple» but darkermore universal • Custom theming is easy: alter the CSS, throw in some graphics and you're done. • Most graphical fx (gradients, round corners, shadows) are CSS3-based, so no gfx needed.
  • 70.
  • 71.
  • 72.
    Web apps: Pros. •Ease of development.
  • 73.
    Web apps: Pros. •Ease of development. • Cross-device compatibility.
  • 74.
    Web apps: Pros. •Ease of development. • Cross-device compatibility. • No AppStore approval needed.
  • 75.
    Web apps: Pros. •Ease of development. • Cross-device compatibility. • No AppStore approval needed. • Easy updates.
  • 76.
  • 77.
    Web apps: Cons. •Only few APIs for device features available in JS.
  • 78.
    Web apps: Cons. •Only few APIs for device features available in JS. • No AppStore.
  • 79.
    Web apps: Cons. •Only few APIs for device features available in JS. • No AppStore. • Hard to sell your app.
  • 80.
  • 81.
  • 82.
    PhoneGap. • Container foryour web app. • Enables you to create a native app with your web app in it.
  • 83.
    PhoneGap. • Container foryour web app. • Enables you to create a native app with your web app in it. • Put it in the AppStore, Android Market, …
  • 84.
    PhoneGap. • Container foryour web app. • Enables you to create a native app with your web app in it. • Put it in the AppStore, Android Market, … • Provides JS access to otherwise inaccessible device APIs.
  • 85.
  • 86.
    Device APIs inJS. • Device • Camera • Location • Vibrate • Accelerometer • Sound • Contacts • Telephony • Orientation (if supported by the device)
  • 87.
  • 88.
    PhoneGap. • Supported platforms:iPhone, Android, Blackberry, Symbian, Palm.
  • 89.
    PhoneGap. • Supported platforms:iPhone, Android, Blackberry, Symbian, Palm. • Windows Mobile, N900/Maemo to be added.
  • 90.
    PhoneGap. • Supported platforms:iPhone, Android, Blackberry, Symbian, Palm. • Windows Mobile, N900/Maemo to be added. • Open Source (MIT license).
  • 91.
  • 92.
    Summing it up. CombinejQTouch with PhoneGap and the possibilities of HTML 5 (Offline Cache, localStorage/sessionStorage, client-side databases) and you're gonna have a lot of fun.
  • 93.
  • 94.
  • 95.
    Further reading. • jQTouch» jqtouch.com • PhoneGap » phonegap.com
  • 96.
    Further reading. • jQTouch» jqtouch.com • PhoneGap » phonegap.com • Jonathan Stark: Building iPhone Apps with HTML, CSS, and JavaScript » building-iphone- apps.labs.oreilly.com
  • 97.
    Thanks. CC-BY
  • 98.
    Thanks. Slides available at» pb.io/talks/jqtouch/. CC-BY
  • 99.
    Thanks. Slides available at» pb.io/talks/jqtouch/. Tomorrow :) CC-BY
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.

Editor's Notes

  • #3 Share my experiences / lessons learned with you.
  • #4 Share my experiences / lessons learned with you.
  • #5 Share my experiences / lessons learned with you.
  • #6 Share my experiences / lessons learned with you.
  • #7 Native: device-specific framework / environment
  • #8 Native: device-specific framework / environment
  • #9 Native: device-specific framework / environment
  • #10 Native: device-specific framework / environment
  • #11 Native: device-specific framework / environment
  • #12 Native: device-specific framework / environment
  • #13 Native: device-specific framework / environment
  • #24 One HTML file makes the skeleton of your app.
  • #25 One HTML file makes the skeleton of your app.
  • #26 One HTML file makes the skeleton of your app.
  • #27 One HTML file makes the skeleton of your app.
  • #28 One HTML file makes the skeleton of your app.
  • #53 Easy customizing
  • #54 Easy customizing
  • #55 Easy customizing
  • #56 Easy customizing
  • #57 Easy customizing
  • #71 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #72 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #73 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #74 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #75 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #76 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #77 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #78 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #79 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.
  • #80 Device: properties of the phone, device ID, model, and OS version number. Location: Latitude/Longitude, course, speed, altitude. Accelerometer: detect orientation, shaking etc. Contacts: addressbook, read the users contacts. Orientation: device layout orientation, e.g. landscape vs portrait. Camera: Brings up the camera or photo browser. Vibrate: vibration alert if supported. Sound: Play sound files (WAV, MP3, etc). Telephony: Trigger and activate phone calls.