Programming Advanced Nokia Features with Flash Lite
As part of a Nokia Developer event, I gave this presentation on developing mobile device content using Adobe Flash Lite technology back in 2008, for a room of about 30 professionals.
• Founder/Technical Director, Hooken Mobile • Creating Flash Experiences (games, UI’s, applications, etc) on “Non-PC devices” (i.e. mobile, embedded) • Some of my Community Efforts • Forum Nokia Champion • Adobe Community Expert and Evangelist for Flash Mobile and Devices • Certified Flash Lite Instructor (1.1/2.x/3.x) • Co-Manager, Boston Adobe Mobile & Devices User Group • Author, Foundation Flash Apps for Mobile Devices: www.flashmobilebook.com • Frame27 – http://frame27.blogspot.com Slide 5
to Mobile & Device Development with Flash Lite” • AdvancED Book: Friends of Ed • Covers advanced topics: • Flash Lite 2.x, 3.x features • Flash Mobile Application Development • Tools & Frameworks • Popular Mobile Platforms/Flash integration • Device APIs and Flash • … and more • Targets both existing Mobile and Flash (Lite) Developers Slide 7
Recap) • Series 60, or “S60” S60 Platform (formerly Series 60 User Interface) is a software platform for mobile phones that runs on Symbian OS. S60 is currently amongst the leading smartphone platforms in the world. It is developed primarily by Nokia and licensed by them to other manufacturers. • Nokia 3rd Edition S60 devices support Flash Lite • S60 3rd Edition FP2, or “Feature Pack 2” is newest Slide 9
Devices Shipped = +150 Million •S60 3rd Edition devices = +80 Million •All 3rd Edition = Flash Lite support •Kuneri Lite runs under S60 3rd edition So, +80 million = target market Slide 10 Note: Nokia S60 statistics are from January 2008
overview) • “An optimized Adobe Flash run-time player for mobile and other non-pc devices” • Versions: 1.0→ 1.1→ 2.0→ 2.1→ 3.0→ 3.1 • +800,000,000 devices worldwide support Flash • Nokia S40 and S60 = Flash Lite support • +90 Nokia devices support Flash Lite! • Nokia supports Flash Lite content types: • S60 Web Browser, WRT, Standalone Apps, Wallpapers, Screensavers Slide 12
Symbian Development Challenges • More $$$ • More Time • More Product Management/Lifecycle • More Highly skilled Developers Slide 18 … ANSWER to these problems? Flash Lite + 3rd Party Software Extender
• By using 3rd party products ... • All are supported under S60 platform • All are available TODAY • We will focus on Kuneri Lite in this presentation: • Was the 1st product to market • Plug-in architecture makes it easy to use and talk about • Minimal ActionScript = Maximum results with Kuneri Lite! Slide 19 Janus
vs Cons • Some Pros • Reach “outside the box” of current functionality • Tap really low-level, powerful device API capabilities • Create really cool and innovative applications • No need to learn Symbian S60 Programming , just use the products! • Saves Development Time! • Some Cons • Platform Fragmentation (outside of S60) • More Rigid Target Areas for Deployment • Company Support reliance • Symbian Signing (for some Device APIs) • Inflexible compared to custom S60 solutions Slide 20
Product Explanation Slide 21 • “Rapid Application Development Toolkit for Flash Lite” What? KuneriLite is an innovative Rapid Application Development toolkit to extend Flash Lite capabilities and create great- looking S60 applications without any Symbian knowledge. Why? KuneriLite helps you to create great-looking S60 applications faster, easier and cheaper. KuneriLite provides a common, reusable and user friendly platform for you. How much? KuneriLite is created with creativity, innovation and diversity in mind. If your application is non-commercial, KuneriLite is completely free for you. For Whom? You have rocking ideas? Need to develop advanced mobile applications? Is S60 challenging and Flash Lite lacking some cool features?
Accelerometer Read Sensor Values • Camera Access the devices camera (if supported) • Connect Send text/binary via Bluetooth • DTMF DTMF tone support (for checking vmail, etc) • File Persistent data via file system • GPS Location Based Services • Protect Very Simple SWF Security Protection • Ringtone Animated SWF ringtones • Rotate Detect physical rotation of device • System Launcher for applications • Timer Countdown to event • Upload/Download Upload content via HTTP Slide 24
FREE Developer Version Professional (Non Commercial) • 3 versions that offer same feature set • Developer → Professional → Commercial Commercial $99 per app package
Flash 8/CS3/CS4 (Commercial) Kuneri Lite Wizard (FREE) Nokia S60 SDK (FREE) Flash Lite (1.1/2.x/3.x) ActionScript Kuneri Lite Server Symbian C++ Kuneri Lite Plug-ins (GPS, Camera, etc) S60 on device Kuneri Lite Architecture/Development .sis Local HTTP calls Native Native
); loadVariables( "http://127.0.0.1:1001/Basic/accelerometer?klCommand=startsensor", kl_mc ); Kuneri Lite Communication via ActionScript • Flash Lite 1.1 • “Flash 4 syntax” - Create and off stage movieclip and target it with ActionScript • Flash Lite 2.x/3.x • ActionScript 2.0 and “polling” loadVariables( "http://127.0.0.1:1001/Basic/accelerometer?klCommand=startsensor", kl_mc );
System Features • Features / APIs not accessible (by default) in Flash Lite • Camera • Messaging • Landmarks • Location • Contacts • Calendar • Logging • Application Manager • System Info • Sensors • Etc.
• Language and runtime neutral interface to platform service APIs • Available with S60 5th Edition devices • No plans for S60 3rd Edition Feature Pack 1 • Maybe S60 3rd Edition Feature Pack 2
API Support • The first release of S60 Platform Services for Flash Lite supports these APIs • ApplicationManager • Calendar • Contacts • Landmarks • Location • Logging • MediaManagement • Messaging • Sensor • SysInfo
Location API import com.nokia.lib.*; var locationUpdateParams = new Object(); var locationUpdateCallback = new Object(); //Create the location service provider (generic binding) var locationService = new Service("Service.Location", "ILocation"); locationService.Trace(locationUpdateParams,locationUpdateCallback); locationUpdateCallback.onLoad = function(transactionID:String,eventID:String,locUpdateOutput){ var locationOutput = locUpdateOutput.ReturnValue; var lat = locationOutput.Latitude; var lon = locationOutput.Longitude; };