This document summarizes a webinar on developing Series 40 Java applications for multiple user interface patterns. The webinar covered the Series 40 device range, touch UI style guides, adapting applications for touch and non-touch interfaces, and demonstrations using the NetBeans IDE and Nokia SDKs. It discussed challenges like varying hardware specifications and screen sizes, and solutions like Nokia's Java Developer's Library and LWUIT and Tantalum frameworks. The presenter demonstrated strategies for targeting both touch and non-touch interfaces from a single codebase by checking API support at runtime.
1. 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
2. › Series 40 Device Range
› Full Touch UI Style Guides
Agenda for today’s
webinar › 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
3. Series 40 Mobile Java Platforms
5th Ed., FP1 6th Ed., Lite 6th Ed. 6th Ed., FP1 DP 1.0 DP 1.1 Developer Platform 2.0
8. › Codebase on Full Touch is
backward compatible
Existing Touch & › Older Midlets “just work”
Type or Non Touch › Of course UI requires
apps 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
9. › Single build for multiple
Strategies for target devices
targeting › Code level configurations
Touch & Type and › Multiple builds for multiple
Full Touch target devices
› IDE level configurations
10. » 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
11. 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
12. 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
13. 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
14. Porting
Touch and type
Non-touch app with high-level UI (LCDUI):
Automatically adapts to touch
Non-touch
Full touch
16. Example: Optional Multitouch
» Encapsulate API using code to separate class
public class MultitouchManager implements MultipointTouchListener {
public MultitouchManager(MainCanvas canvas) { Hint: only handle
MultipointTouch mpt = MultipointTouch.getInstance(); Canvas.pointerPressed()
mpt.addMultipointTouchListener(this); on single touch phones
}
public void pointersChanged(int[] pointerIds) { /* ... */ } protected void pointerPressed(int x, int y) {
} if (!useMultitouch) {
// Handle touch event
// on single-touch phone
» Check support and instantiate on demand }
}
if (System.getProperty("com.nokia.mid.ui.multipointtouch.version") != null) {
// API is supported: Can implement multipoint touch functionality
multiManager = new MultitouchManager(this);
In MainCanvas class
useMultitouch = true;
(extends Canvas)
}
17. 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) { }
18. » 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.
19. › 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
20. › Java for Mobile Devices:
New Horizons with Fantastic
New Devices
› Monday, Oct 1, 8:30AM
› Notel Nikko – Monterey I/II