SlideShare a Scribd company logo
Mobile for the rest of us
         Mobile 2.0 Conference
          Mountain View, CA




         Jeff Haynie
          @jhaynie
About Me

• @jhaynie @appcelerator
• http://blog.jeffhaynie.us
• jhaynie@appcelerator.com
• #titanium_app on freenode
Explosion of
       opportunities

20% year over year growth anticipated for
next 5 years in smart phones
Oh no.
• iPhone (Objective-C, 28th!)
• Android (Java, Google Style)
• RIM (Java, Blackberry or Midlet style)
• Symbian (old school C)
• Palm Pre (Web 2.0)
• Windows Mobile (.NET compact)
• Maemo (GTK+)
Oh, yeah...
• Web Browsers
• Desktop Apps
• Net books
• E-Book readers
• Tablets
• etc etc.
We                Web
• HTML, CSS, JavaScript
• Presentation / UI can easily be built with
  HTML/ CSS
• JavaScript API for mobile features, platform,
  UI
• Run locally, integrate cloud services
It’s the UX

Build applications that fit the
use cases that are tailored for
the modality
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
What we want
• Skills
• Tools
• Reusability
• Platforms
• Portability
• Speed / Cost
• Open source / Standards
Appcelerator

Empower developers to quickly create and
commercialize web, desktop and mobile
applications
Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium
Titanium

• Desktop: Win32, OSX, Linux
• Mobile: iPhone and Android (Palm WebOS)
• 100% code on github.com/appcelerator
• Apache Public License
• Active Open Source Community
Appcelerator Products
        Create, test, and commercialize native mobile and desktop
        applications with the web technologies you use today.




Develop Native iPhone   Build Desktop apps      Cloud services used for   Web development tools
and Android apps with   that can be deployed    testing, packaging,       that enable rapid RIA
full access to each     with one code base on   distribution, and         development.
device’s APIs.          the PC, Mac, or Linux   analytics.
                        platforms.
Product Architecture
  Mobile      Desktop
Programming Model

Titanium supports JavaScript, HTML, CSS for
building mobile applications
UI

• Clean separation of Design from Code
• UI is constructed via HTML, CSS
• JavaScript access to create native controls,
  native views, windows, etc.
JavaScript
• JavaScript is used to program Mobile
  Features, Access local Resources,
  Database, Remote Web Services, etc.
• Use your favorite JS Toolkit - jQuery,YUI,
  Dojo, Mootools, etc etc.
App Assembly

Titanium SDK compiles (using Titanium
Developer) the application using the Mobile
SDK into a native application
Mobile APIs
                Geolocation
Accelerometer
                 Gesture
   Analytics
                  Media
      App
                 Network
  Database
                 Platform
  Facebook
                    UI
  Filesystem
                  Yahoo
Building the UI
• <html> accepted here (including HTML5)
• optimized native UI controls
• hybrid UI composition
• custom native UI controls
Typical iPhone UI
Typical Android UI
<html>
Native UI views
Grouped View   Table View
Composite UI
Composite Views
Custom OpenGL UI
Simple APIs
Titanium.UI.setTabBadge(10)




 Titanium.UI.createMenu()
Native UI Controls
• Toolbars
• Tab Bars
• Status Bars
• Dialogs
• Controls
Native UI (Android)
Databases

var db = Titanium.Database.open('mydb');
db.execute('INSERT INTO DATABASETEST (ID,   NAME ) VALUES(?,?)',
1,'Name 1');
db.execute('INSERT INTO DATABASETEST (ID,   NAME ) VALUES(?,?)',
2,'Name 2');
db.execute('INSERT INTO DATABASETEST (ID,   NAME ) VALUES(?,?)',
3,'Name 3');
db.execute('INSERT INTO DATABASETEST (ID,   NAME ) VALUES(?,?)',
4,'Name 4');
Camera

Titanium.Media.showCamera(
{
    success:function(image,details)
    {
        $("status").innerHTML="Uploading...."+image.url;
    }
});
Video
var video = Titanium.Media.
createVideoPlayer({ contentURL : "movie.mp4"});

var listenerId = video.addEventListener("complete", function()
{
   video.removeEventListener('complete', listenerId);
   var dlg = Titanium.UI.createAlertDialog({
    'title' : 'Video Complete',
    'message' : 'video completed',
    'buttonNames' : [ 'OK' ]
   });
   dlg.show();
});
video.play();
Gestures
function onShake()
{
   document.getElementById("status").innerHTML = 'Stop
Shaking me';  

}

var listenerId = Titanium.Gesture.addEventListener("shake",
onShake);
Accelerometer

Titanium.Accelerometer.addEventListener('update',function(e){

   document.getElementById('x').innerHTML = e.x;
   document.getElementById('y').innerHTML = e.y;
   document.getElementById('z').innerHTML = e.z
});
Titanium Info
• http://www.appcelerator.com
• http://github.com/appcelerator
• @appcelerator
• #titanium_app on irc.freenode.net
• http://slideshare.net/jhaynie

More Related Content

Mobile 2.0 Event: Mobile for the rest of us using Appcelerator Titanium