developing series 40 java apps for multiple ui patterns

21
Series 40 Developer Training Developing Series 40 Java apps for multiple UI patterns Michael Samarin, Ph.D Director, Developer Training and Evangelism Futurice Oy @MichaelSamarin

Upload: nokia-developer

Post on 12-Jan-2015

1.836 views

Category:

Technology


1 download

DESCRIPTION

From this presentation, you’ll learn key development techniques for projects targeting Series 40 phones with multiple UI patterns: Touch and Type, non-touch, and full touch. You’ll learn how to architect your Java™ ME applications and use the right tools to adapt to variations in screen dimensions, input methods, new APIs, and memory constraints. We’ll use the NetBeans IDE, the Nokia IDE for Java™ ME (Eclipse-based), and various Nokia SDKs for the Series 40 platform.

TRANSCRIPT

Page 1: Developing Series 40 Java Apps for Multiple UI Patterns

Series 40 Developer Training

Developing Series 40 Java apps for multiple UI patterns

Michael Samarin, Ph.D Director, Developer Training and Evangelism Futurice Oy

@MichaelSamarin

Page 2: Developing Series 40 Java Apps for Multiple UI Patterns

Agenda for today’s webinar

› Series 40 Device Range

› Full Touch UI Style Guides

› Adapting Touch & Type apps

› Demonstrations with NetBeans and Nokia SDKs

Don’t forget to take a look at previously recorded webinars:

http://www.developer.nokia.com/Resources/Multimedia/Webinars.xhtml#Webinar

Page 3: Developing Series 40 Java Apps for Multiple UI Patterns

Series 40 Mobile Java Platforms

DP 1.1 DP 1.0 6th Ed., FP1 6th Ed. 6th Ed., Lite 5th Ed., FP1 Developer Platform 2.0

Page 4: Developing Series 40 Java Apps for Multiple UI Patterns

New devices in 2012 Nokia 111 Asha 302 Asha 311

Page 5: Developing Series 40 Java Apps for Multiple UI Patterns

Challenges

› Java Heap size (1 – 4 MB)

› JAR file size ( 1 – 2 MB)

› CPU speed

› Screen Size 240x 320, 320x240, 128x160, 240x400

› Input Type: T9, Qwerty, Touch-And-Type, Full Touch

Page 6: Developing Series 40 Java Apps for Multiple UI Patterns

Solutions (non

games)

› LCDUI

› Nokia Java Developer’s Library

› LWUIT for Series 40

› http://projects.developer.nokia.com/LWUIT_for_Series_40

› Tantalum 3

› http://projects.developer.nokia.com/Tantalum

Page 8: Developing Series 40 Java Apps for Multiple UI Patterns

Existing Touch & Type or Non Touch

apps

› Codebase on Full Touch is backward compatible

› Older Midlets “just work”

› Of course UI requires tweaking and remodeling to utilize new UI paradigm

Best help in understanding new UI - Series 40 Full Touch Design Guidelines:

http://www.developer.nokia.com/Resources/Library/Full_Touch/#!index.html

Page 9: Developing Series 40 Java Apps for Multiple UI Patterns

Strategies for targeting

Touch & Type and Full Touch

› Single build for multiple target devices

› Code level configurations

› Multiple builds for multiple target devices

› IDE level configurations

Page 10: Developing Series 40 Java Apps for Multiple UI Patterns

» For single build targeting multiple devices checkout porting part of webinar:

» Andreas Jakl, Nokia

› Introduction to Nokia Series 40 Full Touch UI

› http://www.slideshare.net/nokia-developer/introduction-to-series-40-full-touch-ui

› http://forumnokia.adobeconnect.com/p3yw0g4jz6f/

» Following slides are extracts

Page 11: Developing Series 40 Java Apps for Multiple UI Patterns

Compatibility? » Source & binary compatible

– xx years old Java ME apps run on full touch phones!

» Downwards compatibility

– Check API support of target phones

– Lowest common denominator:

→ Nokia Java SDK 2.0 compiled app runs on old phones

Page 12: Developing Series 40 Java Apps for Multiple UI Patterns

Porting to Touch » All Java ME apps should run on full touch phone

– High-Level UI

– Adapts automatically

– Components include touch-support

– Check layout

– New UI components (CategoryBar, etc.) don’t have to be used

– Low-Level UI

– New screen size & aspect ratio (but: most Java apps already flexible here)

– Touch supported in Java ME since many years

– Basic key simulation with drag gestures for non-touch apps

» New APIs for Multipoint touch, Pinch, CategoryBar & Sensors – Only work on FT phones

– Careful app design even keeps downwards compatibility

Page 13: Developing Series 40 Java Apps for Multiple UI Patterns

Dynamic API Usage » Single code base for different phones

– Code that uses new APIs

– Externalize to extra class

– Check API support at runtime

– Instantiate class if supported

– Different methods for checking available

Page 14: Developing Series 40 Java Apps for Multiple UI Patterns

Porting N

on-t

ouch

Touc

h an

d ty

pe

Full

tou

ch

Non-touch app with high-level UI (LCDUI): Automatically adapts to touch

Page 15: Developing Series 40 Java Apps for Multiple UI Patterns

Example: Pinch Gesture » Gesture API

– Available in Touch & Type

– Full Touch adds Pinch gesture

– Query support at runtime

15 © 2012 Nokia Java ME Touch v1.3.0 June 27, 2012 Andreas Jakl

// Pinch gesture if (GestureInteractiveZone.isSupported(GestureInteractiveZone.GESTURE_PINCH)) { // Gesture is supported - register class as listener GestureRegistrationManager.setListener(this, this); // Register for pinch gesture gestureZone = new GestureInteractiveZone(GestureInteractiveZone.GESTURE_PINCH); GestureRegistrationManager.register(this, gestureZone); }

Page 16: Developing Series 40 Java Apps for Multiple UI Patterns

Example: Optional Multitouch » Encapsulate API using code to separate class

» Check support and instantiate on demand

public class MultitouchManager implements MultipointTouchListener { public MultitouchManager(MainCanvas canvas) { MultipointTouch mpt = MultipointTouch.getInstance(); mpt.addMultipointTouchListener(this); } public void pointersChanged(int[] pointerIds) { /* ... */ } }

if (System.getProperty("com.nokia.mid.ui.multipointtouch.version") != null) { // API is supported: Can implement multipoint touch functionality multiManager = new MultitouchManager(this); useMultitouch = true; }

protected void pointerPressed(int x, int y) { if (!useMultitouch) { // Handle touch event // on single-touch phone } }

In MainCanvas class (extends Canvas)

Hint: only handle Canvas.pointerPressed() on single touch phones

Page 17: Developing Series 40 Java Apps for Multiple UI Patterns

Example: API Availability » No System property for the API version?

– Check Class availability

– ClassNotFoundException? → API not supported

// Virtual keyboard support try { // Check if class is available Class.forName("com.nokia.mid.ui.VirtualKeyboard"); vkbManager = new VkbManager(this); useVkb = true; } catch (ClassNotFoundException e) { // Class not available: running app on Java Runtime < 2.0.0 phone. // -> no Virtual Keyboard API support. useVkb = false; } catch (Exception e) { }

Page 18: Developing Series 40 Java Apps for Multiple UI Patterns

» For multiple builds targeting multiple devices currently NetBeans provides simplest and hassle free solution.

» Use NetBeans “Configurations” when targeting multiple devices / SDKs, for example Nokia SDK for Java 1.1 (Touch & Type) and Nokia SDK for Java 2.0 (Full Touch).

» Live Demo

» If you are watching this slides on SlideShare, next part is live coding demonstration. You can see video recording from the link in the comments section. Link should appear within week after live webinar.

Page 19: Developing Series 40 Java Apps for Multiple UI Patterns

› Topics related to today’s webinar:

› Porting from BlackBerry to Series 40 Wiki article:

› http://www.developer.nokia.com/Community/Wiki/Porting_from_BlackBerry_to_Series_40

› Porting from Android to Series 40 Guide:

› http://www.developer.nokia.com/Resources/Library/Porting_to_Series_40/#!porting-from-android-to-series-40.html

Page 20: Developing Series 40 Java Apps for Multiple UI Patterns

› Java for Mobile Devices: New Horizons with Fantastic New Devices

› Monday, Oct 1, 8:30AM

› Notel Nikko – Monterey I/II

Page 21: Developing Series 40 Java Apps for Multiple UI Patterns

Thank you!

@MichaelSamarin http://www.futurice.com