Post on 26-Dec-2014
description
transcript
Titanium+Plus Modules and Javascript Bridges: Controlling Hardware with a Web Language
Rob ChohanChief Technologist, ePi Rational
(C) 2011 ePi Rational, LLC
2001: A Space OdysseyStart around 57'20''
Streaming BBC Channel 12 to Space
Sweet Spot = Hardware + Software + Content
Mobile Architecture,extending Titanium example
Zxing or Zebra Crossing –Open source barcode library encode/decode
Titanium –Open source User Interface & Hardware API Library
Killer Barcode App = Camera +
iOS Android
One Barcode app idea to rule them all!!!
(Software to be written to tie these together)
Libraries that are ripe for Titanium+Plus
• DropBox
• Airpush
• Square
• Networking
• Google Analytics*
• A cryptographically secure RNG that your app needs that Javascript can't provide (e.g., SecureRandom)
• My Tracks, Map or Lat/Long?-117.117203, 32.784180-117.116966, 32.784218-117.116501, 32.784386-117.116501, 32.784439-117.116341, 32.784527-117.116280, 32.784618
How To:Appcelerator makes it easy
to get started
• Titanium generates stubs• From their it is up to you to fill in the blanks• Pull in your favorite JAR, Java, or Obj-C or C++ code• Build and distribute on the Appcelerator Marketplace
Hardware that could beinteresting to Titanium
Developers
• Barometer
• WiFi
• Bluetooth
• Near Field Communications (NFC)
• ANT+
• GPS
Barometer
• Motorola chose a Digital Pressure Sensor in their Motorola Xoom
What is a Barometer good for (courtesy of the chip manufacturer, Bosch)• Enhancement of GPS
navigation• Indoor and outdoor
navigation• Leisure and sports• Weather forecast• Vertical velocity indication
Barometer,Javascript example
• This is a perfect example of how Titanium+Plus can be extended• Barometer usage (targeting Motorola XOOM)
var baro = require('epi.baro');data = baro.getBaro(); // in milliBars, of course
Titanium+Module Implementation for a Barometer on Android
public void onSensorChanged(SensorEvent event) {long curTime = System.currentTimeMillis(); switch (event.sensor.getType()) { case Sensor.TYPE_PRESSURE: if (lastUpdate == -1 || (curTime - lastUpdate) > mTime){ float pressure = event.values[0]; } break; case Sensor.TYPE_ACCELEROMETER: if (lastUpdate == -1 || (curTime - lastUpdate) > mTime){ float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; } break; }}
Screen from Motorola Xoom, Native App by Noosters500+ Downloads as of Sep 2011
Screen from Motorola Xoom, Native App by Guild Software5,000+ Downloads as of Sep 2011
Screen from Motorola Xoom, Native App by David Momenso100+ Downloads as of Sep 2011
Titanium+Plus Moduleshelps to lower the bar
Data Mining on Android Bluetooth Hardware Apps,
Data mined from AndBOT.com, April 2011
• Bluetooth Samples• Bluetooth Bar Widget• Bluetooth Backport for pre-Android 2.0• Bluetooth Fileshare - Bluex• Bluetooth On/Off for Droid• Bluetooth Remote• Bluetooth text & paint Chat• Bluetooth Terminal• Bluetooth Widget
Very useful apps, but what else can be done?
Bluetooth now becomes very interesting for
Titanium Users
var btLib = require('epi.bt');bt = btLib.turnOnRadio(); // discoverybt.discovery();// pairing// exchanging of data
What is a Bluetooth good for in the context of Titanium• Chat programs• Getting data from custom sensor
boards
San Diego Based Fitness Startup
• San Diego based startup focusing on Bicycle fitness
• Patent pending nutrition and hydration algorithm for cyclists
• 100% bootstrapped• Developed a custom sensor
board witho wheel revolution counterso digital pressure barometero another type of pressure
sensoro Bluetooth 3 radio
Mobile Phone
Custom Devicecomm over Bluetooth
San Diego Based Fitness Startupwhy Titanium worked for them
• 100% bootstrapped• team is comprised of
o 1 firmwareo 1 electrical engineer o 1 Titanium Dev o 1 Bluetooth Devo 1 Marketing
• Each team member was able to focus on their particular part
• Team currently at funding stage
Mobile Phone
Custom Devicecomm over Bluetooth
Bluetooth on Android & Titanium+Plus
• Android module built for Android 1.6
• Relies on the Bluetooth Backport open source jar from Sosuke Masui, Japan
• Development was started back before Bluetooth was supported on Android 2.0
• Many pitfallso older firmware and Android
phones (wait for supported hardware!)
o building for Titanium required modifying the Python build scripts for both the Module and the Application
o Android resources!!!, created a two-step build process
o Port to iOS coming after funding
Localization Notes on Titanium+Plus with Android
• Android res files for each locale (en, ja, es, ...)
Titanium+Plus Modules and Javascript Bridges: Controlling Hardware with a Web Language
Rob ChohanChief Technologist, ePi Rational
(C) 2011 ePi Rational, LLC