Building Apps for BlackBerry PlayBook Terry Ryan Adobe Developer Evangelist http://terrenceryan.com @tpryan I work for Adobe Not for RIM Why am I here? The PlayBook Dimentions Height 5.1” / 130mm Width 7.6” / 194mm Depth 0.4” / 10mm Weight 0.9 lbs /400g Hardware Performance 7” LCD display 1024 x 600 Multi-touch capacitive screen 1 GHz dual-core processor 1 GB RAM Media Symmetric multi-processing 3 MP forward facing camera 5 MP rear-facing camera 1080p HD video; H.264, MPEG4, WMV HDMI video output (full OS output, not limited to image/video) Stereo sound speakers Connections Micro USB and Micro HDMI ports Wi-Fi® 802.11 a/b/g/n Bluetooth ® 2.1 +EDR BlackBerry Tablet OS • Based on QNX® Neutrino® RTOS • Reliable, high-performance kernel engineered for multi-core hardware • Multi-threaded POSIX OS (Portable Operating System for Unix) for true multitasking BlackBerry Ta b l e t O S Developer Options • Tablet OS SDK for Adobe AIR • Browser based • Flash Player 10.1 • HTML 5 • WebWorks for Tablet OS • Native C/C++ Open GL SDK (tbd) • Java SDK (tbd) • Android dealio (tbd) AIR SDK • Used in default Applications AIR SDK Adobe AIR What is AIR? AIR is Flash outside the browser Has hooks to interact with the system Flash on Mobile Flash Player 10.1 + • In-browser content • Games, video • Deploy as a SWF, put on the web • Currently 10.2 Air 2.5 + • Mobile applications • Native APIs, extra functionality • Package to target individual devices AIR for Desktop app.a ir AIR for Devices app.bar app.apk app.ipa “Native Application” • AIR for Device Applications are “Native” • That means they can be put on app stores • NOT that the UI components are native We can use Flash to build “native applications” Except on the PlayBook On PlayBook AIR = Native Applications not “Native Applications” Why Flash on Devices AIR is MultiScreen Is it “write once, run everywhere”? No Write once, tweak and configure everywhere Developing Roll your own ActionScript UI QNX UI Framework Flex Mobile UI Framework QNX Pros • Low Level • High Performance • Default UI • Complete UI Cons • Limits app to PlayBook • Data components not as rich as UI Demo Getting Started with QNX Flex Pros • Higher Level • Slight Performance Cost • Rich Data model Cons • UI options aren’t as Rich Demo Going a little further with Flex The Spectrum of Frameworks Performance - Simplicity Advantages Advantages Same components native apps are using Performance Basic skinning, container, layout and invalidation Features - Complexity CSS Skinning Model (Complex but more robust, with tooling) Application Framework Binding/MXML Extensive layout and container classes Invalidation and component life cycle More components Roll your own Pros • Extreme Performance • Great for traditional Flashers Cons • Lot of work • Not so hot for traditional coders AIR APIs Accelerometer CameraRoll CacheAsBitMapMatrix GeoLocation To u c h , M u l t i To u c h , a n d G e s t u r e StageOrientation SystemIdleMode N a v i g a t e To U R L PlayBook APIs qnx.media.QNXStageWebView qnx.system.QNXApplication StageWebView with more integration into the webkit on the PlayBook Bevel swipe down event q nx.system.Device Battery level, state, and monitor Device info (bsn, hardwareID, vendorID, etc…) qnx.media.MediaPlayer Hardware accelerated play black of media and other non -Flash supported codecs Notifications* Extending AIR app with Native C/C++ app* Conclusions Powerful Hardware Opportunity for profitability Low barriers to entry MultiScreen is real Next Steps Availability Flex and Flash Builder 4.5 • BlackBerry – Ac tio n Sc ript O n l y – QNX • Android – Ac tio n Sc ript O n l y – Flex • IOS – Ac tio n Sc ript O n l y Flex and Flash Builder 4.5.1 • BlackBerry – Ac ti o n Sc ri pt O n l y – Flex – QNX • Android – Ac ti o n Sc ri pt O n l y – Flex • IOS – Ac ti o n Sc ri pt O n l y – Flex First Week of May Mid June Get started • http://bit.ly/AdobePlaybook –Flash Builder 4.5 Beta –PlayBook AIR SDK –PlayBook Simulator –Adobe Developer Center Follow up? • Feel free to contact me –terry.ryan@adobe.com –http://terrenceryan.com –Twitter: @tpryan