This document discusses using Titanium+Plus modules and JavaScript bridges to control hardware from a web language like JavaScript. It provides examples of using modules to access device hardware like barometers and Bluetooth. Developing native Android modules for hardware access requires modifying build scripts but allows focusing expertise on specific parts like firmware, electrical engineering, or the Titanium app. Localization also requires creating resource files for different languages. Titanium+Plus helps lower the barrier to hardware access and enables control of devices from web technologies.
1. Titanium+Plus Modules and Javascript Bridges: Controlling Hardware with a Web Language
Rob Chohan
Chief Technologist, ePi Rational
(C) 2011 ePi Rational, LLC
6. Mobile Architecture,
extending Titanium example
One Barcode app idea to rule them all!!!
Titanium –
Open source User Interface
& Hardware API Library
(Software to be written to tie these together)
Zxing or Zebra Crossing –
Open source barcode library
encode/decode
iOS Android
Killer Barcode App = Camera +
7. Libraries that are ripe for
Titanium+Plus
• DropBox • My Tracks, Map or Lat/Long?
-117.117203, 32.784180
• Airpush -117.116966,
-117.116501,
32.784218
32.784386
-117.116501, 32.784439
-117.116341, 32.784527
• Square -117.116280, 32.784618
• Networking
• Google Analytics*
• A cryptographically secure RNG
that your app needs that
Javascript can't provide (e.g.,
SecureRandom)
8. 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
9. Hardware that could be
interesting to Titanium
Developers
• Barometer
• WiFi
• Bluetooth
• Near Field Communications (NFC)
• ANT+
• GPS
10. Barometer
• Motorola chose a What is a Barometer good for
Digital Pressure (courtesy of the chip manufacturer, Bosch)
Sensor in their • Enhancement of GPS
Motorola Xoom navigation
• Indoor and outdoor
navigation
• Leisure and sports
• Weather forecast
• Vertical velocity indication
11. 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
12. 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;
}
}
17. 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?
18. Bluetooth now becomes
very interesting for
Titanium Users
What is a Bluetooth good for in the context
of Titanium
• Chat programs
• Getting data from custom sensor
boards
var btLib = require('epi.bt');
bt = btLib.turnOnRadio();
// discovery
bt.discovery();
// pairing
// exchanging of data
19. San Diego Based Fitness Startup
• San Diego based startup Mobile Phone
focusing on Bicycle fitness
• Patent pending nutrition and
hydration algorithm for
cyclists
• 100% bootstrapped
• Developed a custom sensor
board with
o wheel revolution counters
o digital pressure barometer
o another type of pressure
sensor
o Bluetooth 3 radio Custom Device
comm over Bluetooth
20. San Diego Based Fitness Startup
why Titanium worked for them
• 100% bootstrapped Mobile Phone
• team is comprised of
o 1 firmware
o 1 electrical engineer
o 1 Titanium Dev
o 1 Bluetooth Dev
o 1 Marketing
• Each team member was
able to focus on their
particular part
• Team currently at funding
stage
Custom Device
comm over Bluetooth
21. Bluetooth on Android &
Titanium+Plus
• Android module built for
Android 1.6 • Many pitfalls
o older firmware and Android
• Relies on the Bluetooth phones (wait for supported
hardware!)
Backport open source jar o building for Titanium
from Sosuke Masui, Japan required modifying the
Python build scripts for both
• Development was started back the Module and the
before Bluetooth was Application
o Android resources!!!,
supported on Android 2.0
created a two-step build
process
o Port to iOS coming after
funding
22. Localization Notes on
Titanium+Plus with Android
• Android res files for each locale (en, ja, es, ...)
23. Titanium+Plus Modules and Javascript Bridges: Controlling Hardware with a Web Language
Rob Chohan
Chief Technologist, ePi Rational
(C) 2011 ePi Rational, LLC