SlideShare une entreprise Scribd logo
1  sur  132
Télécharger pour lire hors ligne
New Nokia Asha Platform
Developer Training
Create Amazing Apps for
Nokia Asha Phones
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 1
Andreas Jakl
Twitter: @mopius
Trainer & app developer
– mopius.com
– nfcinteractor.com
Nokia: Technology Wizard
University of Hagenberg: Assistant Professor
Siemens / BenQ Mobile
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 2
Platforms
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 3
Developer Platform 2.0DP 1.1DP 1.06th Ed., FP16th Ed.6th Ed., Lite5th Ed., FP1 Nokia Asha
Software
Platform 1.0
Series 40
Nokia Asha Platform
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 4
Asha 501
Series 40 Full Touch
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 5
Asha 305
Asha 306
Asha 308
Asha 309
Asha 310
Asha 311
2 Mb 2 Mb 2 Mb
Asha 305, 306 Asha 308, 309, 310 Asha 311
2 Mb 2 Mb 4 Mb
-- -- 1 GHz
Capacitive
Multipoint-Touch
Resistive
Multipoint-Touch (2)
Capacitive
Multipoint-Touch (5)
Jar Size
Java Heap
CPU
Screen
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 6
5 Mb*
Asha 501
3 Mb
--
Capacitive
Multipoint-Touch (3)
* recommended
What’s New?
Nokia IDE for Java ME v2
App Framework
– Internationalization API (JSR-238)
– MIDlet lifecycle: startApp() / pauseApp() are called when sent to background
UI and graphics
– Image scaling API
– Gesture API: new double tap
– Category bar: additional use as toolbar for actions
Networking
– Network State API: SIM, network, WLAN change notifications
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 7
What’s New?
Multimedia
– Tuner, image encoding, image postprocessing
– Removed com.nokia.mid.sound.Sound (Nokia UI)
Security
– PKI support.
– Removed APDU / SATSA-APDU
Data Handling
– Contacts API: contact change notifications in phonebook (while MIDlet is active)
– File Select API: use native file browser to select files
– Phone Setting API: retrieve settings + change notifications: flight mode, data connection, silent mode, etc.
– Nokia Notifications API: subscribe + get payload of notifications
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 8
DEVELOPMENT
Java ME
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 9
Development
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 10
Both free IDEs
come with
extensive, generic
Java ME support
on board.
Nokia IDE for Java ME
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 11
Device SDK Manager
Integrated SDK + Toolchain
App Templates
JAD Editor
NetBeans
Fully integrated solution
– Integrates all aspects of mobile development
– Visual UI Designer
– Game Builder
– Localization, Preprocessing
– Web access
– Automated deployment
Maintained by Oracle
– http://www.netbeans.org/
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 12
Installation
Java JDK + JRE 7
– Update 17 (Later versions do not work – emulator: internal RMI registry port issues)
– 32 bit version (also on 64 bit OS)
– http://www.oracle.com/technetwork/java/javase/downloads/index.html
Nokia Asha SDK (includes Nokia IDE)
– https://www.developer.nokia.com/Develop/Java/Tools/
Optional: NetBeans 7 (All Edition!)
– http://netbeans.org/
Optional: Oracle Java ME SDK
– http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 13
!
NetBeans 7.3+
NetBeans 7.x experience
– Don’t choose Features on Demand
– Install Java SE + EE + ME
Run NetBeans as Administrator once
after Nokia SDK installation
– Integrates SDK docs
Install additional plug-ins
– Java ME SDK Tools
– LWUIT Resource Editor
– Java ME SDK Demos
– Visual Mobile Designer
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 14
PHONES & APIS
Understanding the Slang
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 15
Asha / Series 40 Phones
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 16
Filter by Series 40 Edition or
Java Runtime version (new phones)
developer.nokia.com/Devices
What does my phone support?
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 17
www.developer.nokia.com/Devices/
Versions
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 18
Asha Software
Platform
Developer
Platform
OS Version Phones
1.0 Asha Software Platform Asha 501
2.0.0 Series 40 Asha 305, 306, 308, 309, 310, 311
1.1.0 Series 40 Asha 200, 201, 302, 303
1.0.0 Series 40 Asha 202, 203; 301, C2-00, C2-02, C2-03, C2-
05, C2-06, X2-02, X2-05
Series 40 6th Edition, FP 1 Asha 300, C3-01, X3-02
Series 40 6th Edition C2-01, C3-00, X2-00, X2-01, 6303i, 7230,
6350, 6750, 3720, ...
Series 40 6th Edition Lite C1-01, C1-02
Series 40 5th Edition, FP1 2690, 3208, 6600i, 2730, 2700, 6208, 6600,
8800, ...
Series 40 5th Edition, FP1 Lite 2220, 2720, 2320, 2330, 5000...
Series 40 5th Edition 3610, 6263, 6555, 7500, 6267
CLDC MIDP 248
MSA
185
JTWI
75
File
82
BT
135
Medi
a
172
Web
RPC
172
Web
XML
177
SATS
AAPD
U
177
SATS
ACRY
PT
179
Locat
ion
184
3D
205
Mess
aging
211
Cont
ent
226
SVG
234
Came
ra
234
Audio
3D
234
Music
234
Imag
eE/P
234
Tune
r
238
I18N
256
Sens
or
Nokia
UI
IAP
Asha
1.0
1.1 2.1 - - 1.0 1.1 1.2 1.0 1.0 - 1.0 1.0.1 1.1 2.0 1.0.1 1.1 1.1 - - 1.1 1.1 1.6 1.2 1.7 beta
2.0.0 1.1 - 1.0 1.0 1.0 1.1 1.1 - - - 1.6 2.0
1.1.0 - - - - - 1.1 1.0
1.0.0 - - - - - 1.1b -
S40
6th,
FP1
- - - - - 1.1b -
S40
6th
√ - √ - - - - 1.1 -
S40
6th
Lite
- √ - - - - - - - - - -
S40
5th
FP1
√ - 1.1 - √ - 1.0 1.0 - - - - -
S40
5th
FP1 L
- √ - - - - - - - - - - - - - - -
S40
5th
√ - 1.1 1.0 1.0 - 1.1 - √ - 1.0 1.0 - - - - -
SDKs
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 21
www.developer.nokia.com/Develop/Java/Tools/Series_40_platform_SDKs/
1 emulator per SDK.
Install multiple SDKs for
more emulators.
www.developer.nokia.com/Develop/asha/java/downloads.xhtml
Phone Deployment
No Nokia Suite support for Asha 501 yet
– Over-the-air (OTA)
– Copy to MicroSD in Mass Storage mode
– Bluetooth:
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 22
USER INTERFACE - ESSENTIALS
Nokia Asha
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 23
UX Guidelines
Design
– Layouts
– Interaction patterns
– Icon templates
– developer.nokia.com/Design/
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 24
New Asha UX
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 25
Hardware Keys
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 26
Back Button
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 27
User Interface Layout
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 28
Screen Sizes
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 29
Touch-and-type Full touch Nokia Asha
Minimum Touch Area
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 30
59 x 59 px 55 x 55 px 47 x 47 px
Finger
Thumb
UI Comparison
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 31
Status bar
Header bar
Action button 1
Content area
Navigation bar
Back buttonCategory bar
View title
Action button 2
(options)
Status bar
Header bar
Content area
Toolbar
240 x 400 px
3:5 aspect ratio240 x 320 px
3:4 aspect ratio
USER INTERFACES
Developing
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 32
UI Strategies
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 33
Custom UI on Canvas LCDUI High-Level UI LWUIT Library
High Level UI
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 34
Display
CanvasScreen
TextBox FormList Alert
ChoiceGroup
DateField
TextField Gauge
ImageItem
StringItemChoice
(Interface)
ItemSpacer CustomItem
Command
Ticker Graphics
Displayable
Low Level UI
Draw the GUI yourself, own event handling. Used for games
and bigger commercial applications.
Completely pre-defined screen layouts
High Level UI
Appearance based on default phone UI
design, can not be influenced.
Arrange predefined controls on a screen.
LWUIT
UI Library draws UI directly using low level UI
drawing methods.
High Level UI
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 35
Display
CanvasScreen
TextBox FormList Alert
ChoiceGroup
DateField
TextField Gauge
ImageItem
StringItemChoice
(Interface)
One Display instance / MIDlet
Methods for
drawing to a
canvas
Available in all
sub-classes of
Displayable
ItemSpacer CustomItem
Command
Ticker Graphics
Displayable LWUIT
High Level UI: Forms
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 36
Individual items, automatically
arranged below each other. The
appearance depends on the
phone.
WTK Emulator Nokia 7710 Emulator
LWUIT
LightWeight User Interface Toolkit
– Inspired by Swing
– But designed for constrained devices
– Can be added to any Java ME application (embedded .jar)
– Drawing done in Java source code, without native peer rendering
Optimized version for Nokia!
Features (excerpt):
– Layouts
– Themes, fonts
– Animations & Transitions
– 3D / SVG integration (optional)
– Internationalization
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 37
Tantalum Mobile Toolset
Many common use cases
– HTTP Getters
– JSON, XML
– Worker Threads
– Logging
Licensing
– Free; Apache License
– Add source directly to your project
projects.developer.nokia.com/Tantalum
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 38
Remote Device Access
Enabling testing on real devices
Free for Nokia Developer users
Go to RDA: http://www.developer.nokia.com/Devices/Remote_device_access/
Watch introductory video: http://www.developer.nokia.com/Develop/Java/Videos/
http://www.youtube.com/watch?v=F1odix8k_fg
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 41
Code Examples
Installed to:
– C:NokiaExamplesNokia_Asha_SDK_1_0
Nokia IDE
– Nokia Hub → Nokia Series 40
Code Examples
Emulator / Help
– Help → MIDlet Samples
Online
– bit.ly/JavaMeExamples
Maps & LWUIT
– C:NokiaDevicesNokia_Asha_SDK_1_0plugins
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 42
CATEGORY BAR & BACK
Tabs & Tools
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 43
Java ME Commands
Command = semantic information about an action
(→ how can an action be executed?)
But no actual implementation of the action!
Contains:
– Short label
– Long label (optional)
– Type
– Priority
Nokia Asha Training | Andreas Jakl, Mopius 44
One of them will be displayed on the screen / in the menu,
depending on the available space
“Intention”of the command – e.g. for special placement on the
device: Ok, Back, Help, Screen, Item, etc.
For the order of commands, if more are mapped to the same
softkey. The lower the priority, the more important it is.
18.03.2013
Category Bar & Commands
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 45
No Category Bar
Primary action as button
Other commands in menu
Category Bar: Tab Bar
≤ 4 tabs
Primary action added to menu
Category Bar: Toolbar
New in Asha Platform:
items don’t stay selected
Full Touch Category Bar
Automatic back button.
≤ 15 tabs, no actions allowed
Primary action as icon (top right)
Other actions in menu (top left)
Do Not Combine Tabs & Actions
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 46
Tab Bar
Highlights current tab.
Category bar should
disappear when drilling
down.
Toolbar
Highlight only on touch down (3).
Affect entire view, not a single item within view.
CategoryBar Icons
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 47
New Asha Full Touch
Bounding Box 22 x 22 px 36 x 36 px
Icon Size 20 x 18 px 20 x 20 px
Color Gray White
Ready-made icons in
Nokia Icon Toolkit
http://bit.ly/NokiaIcons
IconCommand
Extends LCDUI Command class
– Adds: Icon
• Built-in system icon
• Own icon
– unselected
– [selected – if not specified: automatic
color highlight]
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 48
IconCommand
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 49
public class JavaFTMidlet extends MIDlet implements CommandListener, ElementListener {
private IconCommand cmdOk;
private IconCommand cmdHome;
public JavaFTMidlet() {
// Create icon command with pre-defined image
cmdOk = new IconCommand("Ok", Command.OK, 1, IconCommand.ICON_OK);
// Create icon command with custom image
try {
Image imgHome = Image.createImage("/categorybar_home_m_light.png");
cmdHome = new IconCommand("Home", imgHome, null, Command.SCREEN, 3);
} catch (IOException ex) {
}
}
}
Commands in Displayable Commands in CategoryBar
CategoryBar
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 50
// Add commands to the category bar
IconCommand[] iconCommands = {cmdHome, cmdInfo, cmdLike};
CategoryBar categoryBar = new CategoryBar(iconCommands, true); // Tabs
CategoryBar categoryBar = new CategoryBar(iconCommands, true,
CategoryBar.ELEMENT_MODE_RELEASE_SELECTED); // Actions
categoryBar.setVisibility(true); // Invisible by default
categoryBar.setElementListener(this);
public void notifyElementSelected(CategoryBar cb, int i) {
// From the ElementListener interface
// Commands coming from the Category Bar
Alert alert = new Alert("CategoryBar");
if (i == ElementListener.BACK) {
alert.setString("Back element"); // i == -1
} else {
alert.setString("Element: " + i);
}
display.setCurrent(alert);
}
Example: JavaTouch
either/or
Back on Platforms
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 51
Back Stepping
Historical navigation flow
Skipped elements
– Options / context menus
– Dialogs
– Notification Panel
– Pickers
Long-press closes current app
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 52
Back Behaviour
HW back key – must have
– App main level: exit app
– App sub level: back to upper hierarchy level
• Exception: within game – open pause menu
No SW back button allowed
– Exception: game – SW button same
behaviour as HW back key
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 53
Back Commands
Type“BACK”command: mapped to HW key
– Not visible on screen
CategoryBar: automatic back command
– Invisible on Asha Platform → mapped to HW key
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 54
cmdBack = new IconCommand("Back", Command.BACK, 3, IconCommand.ICON_BACK);
frmMain.addCommand(cmdHelp);
HW Key → Back Commands
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 55
No back command,
no category bar:
Default system dialog to
close the app.
Category bar in use
(also w/o own back command):
Callback to CategoryBar listener
with“back”code (-1).
Traditional back
command added:
Not visible on screen,
executed via HW key.
Exiting the App
3 options
– Long-press on back HW button
– Swiping out app
– Manually within app
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 56
public void exit() {
destroyApp(true);
notifyDestroyed();
}
ICONOGRAPHY
Activity Screen & Launcher Icon
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 57
Icon File
PNG Format
– 50 x 50 px square image
– Gradient background
Display
– Full square form on
activity screen
– Auto-cut to surround shape for
launcher icon
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 58
Icon Toolkit
Templates for icons
– Photoshop
– Illustrator
– Inkscape (open source)
Pre-defined background colors
bit.ly/NokiaIcons
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 59
Icons
Assign icon
– Nokia IDE: JAD editor
– NetBeans: project
properties
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 60
Colors
Free to choose
– Fit to own brand
Pre-defined Nokia colors
– Used as categories for
system apps
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 61
www.developer.nokia.com/Resources/Library/Asha_UI/#!style/colour.html
LWUIT
Customized User Interface
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 62
LWUIT
Stylable UI Components
– From Oracle: lwuit.java.net
Optimized for Nokia
– Native look & feel
– Uses Nokia APIs for
functionality
– Better performance
– Integrated in Nokia Asha SDK
• Online: projects.developer.nokia.com/LWUIT_for_Series_40
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 63
What is LWUIT?
Lightweight UI Toolkit
– Widget library inspired by Swing but designed for constrained
devices such as mobile phones and set-top boxes
UI Library
– Easily customizable UI components: lists, table, calendar, button, etc.
Themes: customizable look & feel
Transitions, animations, layout management
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 64
LWUIT Example Apps
projects.developer.nokia.com/LWUIT_for_Series_40/wiki/ExampleApplications
– LWUIT Rlinks (Reddit)
– LWUIT Slide Puzzle
– LWUIT Tourist Attractions
– LWUIT CategoryBar Demo
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 65
INTERNATIONALIZATION
JSR-238
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 66
Internationalization
JSR-238
– Format data for locales
– Locale-aware string comparison
– Translation: manage app & device resources
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 67
Formatter
Locale-specific data
– dates, times, numbers, percentages,
currency
Generic message formatting
– placeholders {n} / {nn}
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 68
Asha Emulator
Supported locales
en
kn-IN
ta
ur
// Text definitions
String txtCurrency = "Currency: {0}";
// [...]
String txtTime = "Time: {0}";
// No parameter -> would use current locale (microedition.locale)
Formatter format = new Formatter("kn-IN");
frmMain.append(Formatter.formatMessage(txtCurrency, new String[] {format.formatCurrency(currency)}));
frmMain.append(Formatter.formatMessage(txtTime, new String[] {format.formatDateTime(dateTime, Formatter.TIME_LONG)}));
Example: InternationalDemo
String Comparator
Locale-aware string
comparison
– Levels to adapt sorting
order based on needs
– JSR238: level 1 – 3 &
identical
– Default: level 1
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 69
String Comparison
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 70
Asha Emulator
Supported locales
en
en-US
en-GB
he
he-IL
sk
sk-SK
cs
cs-CZ
es
es-ES
zh
zh-CN
ja
ja-JP
Test code
Test results
StringComparator strCmpEn1 =
new StringComparator("en", StringComparator.LEVEL1);
int result = strCmpEn1.compare("a", "A");
English Level 1 Level 2 Level 3 Identical
a – a 0 0 0 0
a – A 0 0 -5 -5
a – ä 0 -14 -14 -14
0 ... both texts are considered identical
Example: InternationalDemo
Translation
ResourceManager
– Assets (strings, images, etc.) in resource files
– Different .res files for locales
– Hierarchial matching
• Avoid duplication of common resources
• Automatic matching, removes:
variant → country → language component
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 71
Tools
Localization support in Nokia IDE / NetBeans
– *Not* JSR 238
– Custom class: works on any device
Asha SDK Help
– ResourceMaker cmd tool
– Not up-to-date
WTK 2.5
– Editor tool
– Old WTK version
(current: 3.2)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 72
IDEs create custom
classes, don’t use JSR-
238
SETTINGS & NETWORK STATE API
Adapting to the Phone State
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 73
Phone Settings
Current state & change listener subscriptions
– Flight mode
– Data connection
– Background data connection
– Roaming data connection
– Vibrator mode
– Silent mode
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 74
Setting Detection
Retrieve setting
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 75
int settingState = Setting.getSetting(Setting.SETTING_FLIGHT_MODE);
ON
OFF
INVALID
DENY
ASK
ACCEPT
WIFIONLY
SETTING_FLIGHT_MODE
SETTING_DATA_CONNECTION
SETTING_BACKGROUND_DATA_CONNECTION
SETTING_ROAMING_DATA_CONNECTION
SETTING_VIBRATOR
SETTING_SILENT
Example: PhoneSettings
State changes available via listener
Network State
Monitor state of
– Network (home / roaming)
– SIM
– WLAN
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 76
Network State Detection
Retrieve status for SIM card
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 77
Example: PhoneSettings
int networkState = NetworkState.getState(simCard);
NETWORK_STATE_NO_NETWORK
NETWORK_STATE_HOME
NETWORK_STATE_ROAMING
0
1
State changes available via listener
SIM State Detection
Retrieve status for SIM card
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 78
Example: PhoneSettings
int simState = SIMState.getState(simCard);
SIM_STATE_READY
SIM_STATE_NOT_READY
SIM_STATE_NO_SIM
0
1
State changes available via listener
Network State Detection
Retrieve status for WLAN
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 79
Example: PhoneSettings
int wlanState = WLANState.getState(simCard);
WLAN_STATE_CONNECTED
WLAN_STATE_NOT_CONNECTED
State changes available via listener
FILE SELECTION
Native file browser UI
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 80
File Selection
Native file browser UI to list + select files
– Images & documents for viewing / editing
– Files for uploading to web service & as
message attachments
– Audio or video clips for playback
Blocks calling thread
– Don’t use in event handling thread
(e.g., command action)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 81
SDK Example: FileSelectExample
Launch File Dialog
Launch file selection (in own thread)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 82
Example: SimpleFileSelect
// Launch file selection dialog
FileSelectDetail[] arrSelectedFiles = FileSelect.launch(
FileSelect.FILE_SYSTEM_ALL, FileSelect.MEDIA_TYPE_ALL, false);
FILE_SYSTEM_ALL
FILE_SYSTEM_EXTERNAL
FILE_SYSTEM_INTERNAL
… or specific start folder, e.g.,
System.getProperty("fileconn.dir.photos")
MEDIA_TYPE_ALL
MEDIA_TYPE_APPLICATION
MEDIA_TYPE_AUDIO
MEDIA_TYPE_PICTURE
MEDIA_TYPE_VIDEO
false: single-file
true: multi-file
File Selection Results
Print metadata of selected file(s)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 83
if (arrSelectedFiles != null) {
// Show file meta data on the screen
for (int i = 0; i < arrSelectedFiles.length; i++) {
// Display name = file name
frmMain.append("Display name: " + arrSelectedFiles[i].displayName);
// MIME type, e.g., video/mp4 or image/png
frmMain.append("MIME type: " + arrSelectedFiles[i].mimeType);
// Size of the selected file in bytes
frmMain.append("Size: " + arrSelectedFiles[i].size);
// Full path to the file
frmMain.append("URL: " + arrSelectedFiles[i].url);
}
}
Example: SimpleFileSelect
NOTIFICATIONS
Push
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 84
Notification API
Push messages to user’s
phones
– Also when app is not
running
• Notification banner
• Caches up to 5 messages
per app (for up to 14 days)
– Payload ≤ 1.5 kB
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 85
SDK Example: NNAClientExample
Notifications – Sign Up
Register new service ID
– Creates service secret
– https://account.nnapi.ovi.com/cm/
Web/services.jsp
Environments
– Sandbox for testing
– Production available after 5 days
• Separate server for China
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 86
Notifications Flow – Client
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 87
Do you want
to receive
service X
related push
notifications?
App needs to ask
user for consent
App registers with
online push
service
App retrieves
client-specific
notification ID,
sends to own
notifications web
service
1 2
Your own custom web
service, manages notification
IDs from subscribed clients
Notifications Flow – Push
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 88
User gets push
notification
Notification bar
shows details
4
3 Sandbox testing in Developer Console: push
messages without need for own web service
Notifications Flow – Retrieve
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 89
User launches app
(e.g., through
notification bar).
App registers
online.
App gets cached
push notifications.
Note: user can
turn off
notifications for
apps.
EnvironmentSelector
App for device / emulator
– Swich between push servers
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 90
C:NokiaExamplesNokia_Asha_SDK_1_0NNAClientExampleEnvironmentSelector
Client Implementation
Open session
– 1 session / app
– Keep open for lifetime of app
Register app
– Callback: stateChanged(NotificationState.STATE_ONLINE)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 91
NotificationSession session = NotificationSessionFactory.openSession(
main, // The MIDlet instance
"example.com", // Service ID (Deprecated, but still has to be provided)
"com.example", // Application ID
this); // NotificationSessionListener
session.registerApplication();
Developer Console
Client Implementation
Get Notification ID for this phone
– Callback: infoReceived(NotificationInfo info)
– Send this to your web service
Receive messages
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 92
session.getNotificationInformation();
public void messageReceived(NotificationMessage message) {
// Get data as string
String msgData = message.getPayload().getData();
}
Notification Service
Push via REST API (HTTPS)
– From own web service
– To Nokia Notification Server
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 93
www.developer.nokia.com/Resources/Library/Java/#!developers-guides/nokia-notifications/nokia-notifications-service-api-rest-api.html
Push Messages
Messages
– App running?
• No info banner, directly delivered
– Not running?
• ≤ 5 messages cached
• Customizable: info banner, alert
Delivery confirmations
– Not part of Nokia service
– Own app can contact own web service
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 94
Message Properties
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 95
Checked: delivered also when app is NOT running
Checked: user is alerted about new message
Notification title shown to the user
Not used / shown / accessible
MIME type of payload. Default: application/octet-stream
Not used. App icon shown instead
Maximum cache lifetime (≤ 14 days)
Raw payload to send to the app
Notification ID of the client to push to
RADIO TUNER
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 96
Tuner
AM / FM radio
– Tuning
– Seeking
– Squelch
– Stereo mode
– Signal strength query
– Presets
No RDS support
Advanced Multimedia Supplements (JSR-234)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 97
SDK Example: AMMSTuner
Seek Radio Channels
Initialize radio
Start playing
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 98
Example: Radio
// Create generic Java ME player, with the specific radio URL
player = Manager.createPlayer("capture://radio");
// Construct player
player.realize();
// Get controller to control radio (seeking, specifying properties, etc.)
tuner = (TunerControl) player.getControl("javax.microedition.amms.control.tuner.TunerControl");
// Minimum frequency in FM band to start search
curFrequency = tuner.getMinFreq(TunerControl.MODULATION_FM);
// Start playing
player.start();
// Start search for the first station
curFrequency = tuner.seek(curFrequency, TunerControl.MODULATION_FM, true);
GESTURES
Touchscreen Interaction
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 99
Touch Gestures
Use in: Canvas-/CustomItem-based classes
– Optional: combine with Frame Animator API (kinetic scrolling)
Available since Touch & Type
– Tap: touch + release
– Double Tap: touch + release + touch + release (new in Asha Platform)
– Long Press (& repeated): touch + hold
– Drag: touch + drag
– Drop: touch + drag + touch down (“stop”) + release
– Flick: touch + drag + release while dragging
– Pinch: 2x touch + 2x drag + 2x touch down (“stop”) + 2x release (new in FullTouch)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 100
Gesture Components
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 101
App
Java Runtime
GestureAction
RegistersRegisters
Gesture
Listener
Gesture
Interactive
Zone
Gesture
Registration
Manager
Gestures – Step 1
Create a GestureInteractiveZone
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 102
// Create a GestureInteractiveZone for all Gesture Types
GestureInteractiveZone giz = new GestureInteractiveZone( GestureInteractiveZone.GESTURE_ALL );
// Set bounding rectangle of zone
giz.setRectangle( x, y, width, height );
Gestures – Step 2
Define GestureListener
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 103
// Define a GestureListener
class GestureCanvas extends Canvas implements GestureListener {
protected void paint(Graphics g) { … }
public void gestureAction( Object container,
GestureInteractiveZone zone, GestureEvent event) {
...
}
}
Gestures – Step 3
Register the GestureInteractiveZone with the
GestureRegistrationManager
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 104
// Register for Gesture events
Canvas canvas = new GestureCanvas();
GestureRegistrationManager.register( canvas, giz );
GestureRegistrationManager.setListener( canvas, canvas );
Handling gestureAction()
Process values of registered gestures
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 105
public void gestureAction( Object container, GestureInteractiveZone zone,
GestureEvent event) {
switch( event.getType() ) {
case GestureInteractiveZone.GESTURE_TAP:
case GestureInteractiveZone.GESTURE_DOUBLE_TAP:
case GestureInteractiveZone.GESTURE_LONG_PRESS:
case GestureInteractiveZone.GESTURE_LONG_PRESS_REPEATED:
case GestureInteractiveZone.GESTURE_DRAG:
case GestureInteractiveZone.GESTURE_DROP:
case GestureInteractiveZone.GESTURE_FLICK:
case GestureInteractiveZone.GESTURE_PINCH:
}
}
GestureEvent
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 106
Methods
int getType() int getPinchCenterChangeX()
int getStartX() int getPinchCenterChangeX()
int getStartY() int getPinchCenterX()
int getDragDistanceX() int getPinchCenterY()
int getDragDistanceY() int getPinchDistanceChange()
float getFlickDirection() returns flick direction in radians int getPinchDistanceCurrent()
int getFlickSpeed() int getPinchDistanceStarting()
int getFlickSpeedX()
int getFlickSpeedY()
Gesture Flick Direction
getFlickDirection returns float which is the direction in radians
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 107
Using: Gestures
Register as gesture listener
– Zone: reacts to 1+ specified gestures
• Whole screen or rectangular area
• Overlap possible
– Received events → GestureListener
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 108
public class MainCanvas extends Canvas implements GestureListener {
private int curPinchDistance = -1;
public MainCanvas() {
// Set this as container (gesture source) and listener
GestureRegistrationManager.setListener(this, this);
// Register for pinch events in the whole canvas area
gestureZone = new GestureInteractiveZone(GestureInteractiveZone.GESTURE_PINCH);
GestureRegistrationManager.register(this, gestureZone);
}
Example: PaintApp
Using: Gestures
Handling gestures
– Executed in UI thread
• Lengthy operations (scaling image, etc.) → own thread!
– Parameters only valid during call (instances reused for next call-back)
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 109
public void gestureAction(Object container, GestureInteractiveZone gestureInteractiveZone, GestureEvent gestureEvent) {
int eventType = gestureEvent.getType();
switch (eventType) {
case GestureInteractiveZone.GESTURE_PINCH: // Pinch detected
curPinchDistance = gestureEvent.getPinchDistanceCurrent(); break;
case GestureInteractiveZone.GESTURE_RECOGNITION_START: /* ... */ break;
case GestureInteractiveZone.GESTURE_RECOGNITION_END: /* ... */ break;
}
}
Example: PaintApp
LOCATION
Positioning with Cell-Ids and GPS
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 110
Network-based Positioning Accuracy
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 112
500 m 2000 m 4000 m
Urban:
50% within 250 m
80% within 500 m
100 % hit rate
100 m
Sub – Urban:
50% within 600 m
80% within 1.5 km
80-90 % hit rate
Rural:
50% within 1500 m
80% within 3 km
60-90 % hit rate
WLAN:
Up to 30m precision in
urban areas
Cell-id precision offered across Asha range of phones Only on WLAN phones
Cell ID Positioning
Specify the acceptable location methods
Get corresponding location provider
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 113
//Specify the retrieval method to Online/Cell-ID
int[] methods = {(Location.MTA_ASSISTED | Location.MTE_CELLID | Location.MTE_SHORTRANGE | Location.MTY_NETWORKBASED)};
// Retrieve the location provider
LocationProvider provider = LocationUtil.getLocationProvider(methods, null);
// 50 seconds time-out
Location loc = provider.getLocation(50000);
// Get longitude and latitude
QualifiedCoordinates coordinates = loc.getQualifiedCoordinates();
double lat = coords.getLatitude();
double lng = coords.getLongitude();
Example: mapExample
Cell ID Positioning
Approximate location using cell ID
– Online: ~ 3-10 kB per request
– Phone sends current cell ID(s) to a web service
– Gets known location of cell ID in return
Using cell ID positioning
– Request generic LocationProvider through Nokia’s LocationUtil
– No continuous updates (Listener) → 1-time, synchronous requests
• Run in own thread
– Raw cell ID: com.nokia.mid.cellid system property *
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 116
* Series 40 5th Edition FP1 +: Manufacturer & Operator Domains. Java Runtime 1.0.0+: all domains
HERE MAPS
Nokia Maps →
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 117
Maps API Features
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 118
Supports local search
and places look-up by
category
Geo-coding &
Reverse Geo-coding:
coordinates
←→
street address
Routing between any
start and end point,
taking into
consideration
transport and traffic
preferences
Lets users send images
or URL in SMS
Message
Integrated KML to
show the content
on the map
without having to
recreate it
manually
Show maps as street
map, satellite or
terrain. Custom
content: markers,
polylines
Plans
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 119
Base, Free
Unlimited 2D Map Tiles
2.500 daily limit for each other feature
Core, $1500 / month
Unlimited 2D Map Tiles
10.000 daily limit for each other feature
Traffic Tile Service including Flow and
Patterns
Service Level Agreement (SLA)
- 2D Maps Tiles, served via CDN, in Normal, Mobile, Pedestrian, Satellite/Aerial, Grey
- 2D Static Maps
- Car Routing
- Pedestrian Routing
- Geocoding
- Reverse Geocoding
- Places Discovery and Search
Maps API
Latest version included in Nokia Asha SDK
– Documentation: developer.here.com/java
Always requires AppID and Token
– developer.here.com/web/guest/myapps
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 120
C:NokiaDevicesNokia_Asha_SDK_1_0pluginsmaps api
Maps Project Template
Create empty
project
– File → New →
Java ME MIDlet
– Select Map
MIDlet
Template
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 121
Add Maps Library to Projects
Nokia IDE
Project properties →
Java Build Path →
Add External JARs...
Select relevant Maps
API jar files
Ensure Libraries are
exported
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 122
Maps Libraries
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 123
Library File Use For JAR Size (kB)
maps-core Base lib – always required 139
maps-components Map components (info bubbles, buttons,
etc)
28
maps-gesture Adds gesture support (requires Gesture API
1.2+)
7
maps-kml Process + display KML data 32
places Places, (reverse) geocoding, sharing 95
routing Routing service 21
Using: Maps
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 124
public class MapMidlet extends MIDlet implements GeocodeRequestListener {
private MapCanvas mapCanvas;
public void startApp() {
// Set registered application ID and token
ApplicationContext.getInstance().setAppID("xxx");
ApplicationContext.getInstance().setToken("xxx");
// Create new Nokia Maps canvas
Display display = Display.getDisplay(this);
mapCanvas = new MapCanvas(display) {
public void onMapUpdateError(...) {}
public void onMapContentComplete() {}
};
mapCanvas.getMapDisplay().setZoomLevel(1, 0, 0);
// Show map on the screen
display.setCurrent(mapCanvas);
}
}
Example: mapExample
// Geocode an address
GeocodeRequest geocodeRequest = SearchFactory.getInstance().createGeocodeRequest();
geocodeRequest.geocode("Vienna, Austria", null, this);
// ... center map on the latitude and longitude
public void onRequestComplete(GeocodeRequest request, com.nokia.maps.common.Location[] locations) {
mapCanvas.getMapDisplay().setCenter(locations[0].getDisplayPosition());
}
Map Marker
Place markers on the map
– Pre-defined images
– Custom images
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 125
Example: mapExample
// Set marker to position
GeoCoordinate pos = new GeoCoordinate(48.20254, 16.3688, 0.0f);
// MapFactory instantiates objects on the map
MapFactory mapFactory = mapCanvas.getMapFactory();
// Create a standard marker at the specified position
MapStandardMarker marker = mapFactory.createStandardMarker(pos);
// Set visual type of the marker
marker.setShapeType(MapStandardMarker.BALLOON);
// Add the marker to our map
mapCanvas.getMapDisplay().addMapObject(marker);
– Multiple map types – conventional
street map, satellite and terrain
– Touch support – use touch to pan
and zoom the map
– Customizable markers – set color,
labels and images
– Polygons, polylines – set colors and
transparency levels
– Overlay support – set color/labels or
use custom images
– Download indicator – provided as a
standard UI component
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 126
Map View Features
(MapsVideo1)
2GNetworkLocation
2DifferentOperators
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 127
(MapsVideo2)
2GNetworkLocation
vs3GNetworkLocation
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 128
COMPATIBILITY
Running the same app on multiple phones
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 129
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 Asha SDK compiled app
runs on old phones
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 130
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
New APIs for Internationalization, Multitouch, Pinch, CategoryBar & Sensors
– Only work on new phones
– Careful app design even keeps downwards compatibility
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 131
Porting
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 132
Non-touch
Touchandtype
Example: RpsGame
Fulltouch
Non-touch app
with high-level
UI (LCDUI):
automatically
adapts
Asha
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.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 133
Example: Pinch Gesture
Gesture API
– Available in Touch & Type
– Full Touch adds Pinch gesture
– Query support at runtime
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 134
Example: PaintApp
// 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);
}
Example: Optional Multitouch
Encapsulate API using code to separate class
Check support and instantiate on demand
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 135
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
Example: PaintApp
Example: API Availability
No System property for the API version?
– Check Class availability
– ClassNotFoundException? → API not supported
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 136
// 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) { }
Example: PaintApp
Need for Threads
Protected methods
– From commandAction()
• = event dispatch thread
• Asha Platform:
Throws SecurityException
“Blocking call performed in the event thread”
→ Call from extra thread!
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 137
THANK YOU!
Andreas Jakl
Twitter: @mopius
www.mopius.com
14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 138

Contenu connexe

En vedette

Optimise Nokia Maps applications for Nokia Asha Touch phones
Optimise Nokia Maps applications for Nokia Asha Touch phones Optimise Nokia Maps applications for Nokia Asha Touch phones
Optimise Nokia Maps applications for Nokia Asha Touch phones Microsoft Mobile Developer
 
Developing For Nokia Asha Devices
Developing For Nokia Asha DevicesDeveloping For Nokia Asha Devices
Developing For Nokia Asha Devicesachipa
 
Nokia Walk, creating a mobile platform for location-based services
Nokia Walk, creating a mobile platform for location-based servicesNokia Walk, creating a mobile platform for location-based services
Nokia Walk, creating a mobile platform for location-based servicesTraveline
 
Caso de Sucesso WK - Ybera - Cosméticos
Caso de Sucesso WK - Ybera - CosméticosCaso de Sucesso WK - Ybera - Cosméticos
Caso de Sucesso WK - Ybera - CosméticosWK Sistemas
 
MR_Radio Wien_Konsumverhalten
MR_Radio Wien_KonsumverhaltenMR_Radio Wien_Konsumverhalten
MR_Radio Wien_Konsumverhaltenmeinungsraum.at
 
Ejercicios unidad 9
Ejercicios unidad 9Ejercicios unidad 9
Ejercicios unidad 9Ivan Leon
 
La contaminación electromagnética i revisada
La  contaminación electromagnética i revisadaLa  contaminación electromagnética i revisada
La contaminación electromagnética i revisadaIvan Figueroa-Otero
 
Ley de newton gonzález
Ley de newton gonzálezLey de newton gonzález
Ley de newton gonzálezgmja
 
Cnci certificate courses 2-2010
Cnci certificate courses 2-2010Cnci certificate courses 2-2010
Cnci certificate courses 2-2010Self-employed
 
Dividing Exponents
Dividing Exponents Dividing Exponents
Dividing Exponents Passy World
 
EsBrand 2012 - TOP 100 Spanish Brands
EsBrand 2012 - TOP 100 Spanish BrandsEsBrand 2012 - TOP 100 Spanish Brands
EsBrand 2012 - TOP 100 Spanish BrandsMPP Consulting
 
anatomia de los organos de los sentidos
anatomia de los organos de los sentidosanatomia de los organos de los sentidos
anatomia de los organos de los sentidosrick jonter
 
Incisiones corneales penetrantes en cirugía de cataratas
Incisiones corneales penetrantes en cirugía de cataratasIncisiones corneales penetrantes en cirugía de cataratas
Incisiones corneales penetrantes en cirugía de cataratasCLINICA REMENTERIA
 

En vedette (18)

Optimise Nokia Maps applications for Nokia Asha Touch phones
Optimise Nokia Maps applications for Nokia Asha Touch phones Optimise Nokia Maps applications for Nokia Asha Touch phones
Optimise Nokia Maps applications for Nokia Asha Touch phones
 
Developing For Nokia Asha Devices
Developing For Nokia Asha DevicesDeveloping For Nokia Asha Devices
Developing For Nokia Asha Devices
 
Nokia Walk, creating a mobile platform for location-based services
Nokia Walk, creating a mobile platform for location-based servicesNokia Walk, creating a mobile platform for location-based services
Nokia Walk, creating a mobile platform for location-based services
 
Caso de Sucesso WK - Ybera - Cosméticos
Caso de Sucesso WK - Ybera - CosméticosCaso de Sucesso WK - Ybera - Cosméticos
Caso de Sucesso WK - Ybera - Cosméticos
 
Inventory to Audience
Inventory to AudienceInventory to Audience
Inventory to Audience
 
MR_Radio Wien_Konsumverhalten
MR_Radio Wien_KonsumverhaltenMR_Radio Wien_Konsumverhalten
MR_Radio Wien_Konsumverhalten
 
Ejercicios unidad 9
Ejercicios unidad 9Ejercicios unidad 9
Ejercicios unidad 9
 
La contaminación electromagnética i revisada
La  contaminación electromagnética i revisadaLa  contaminación electromagnética i revisada
La contaminación electromagnética i revisada
 
Mate prim
Mate primMate prim
Mate prim
 
Tema ii
Tema iiTema ii
Tema ii
 
Ley de newton gonzález
Ley de newton gonzálezLey de newton gonzález
Ley de newton gonzález
 
Cnci certificate courses 2-2010
Cnci certificate courses 2-2010Cnci certificate courses 2-2010
Cnci certificate courses 2-2010
 
Lara's song
Lara's songLara's song
Lara's song
 
Dividing Exponents
Dividing Exponents Dividing Exponents
Dividing Exponents
 
EsBrand 2012 - TOP 100 Spanish Brands
EsBrand 2012 - TOP 100 Spanish BrandsEsBrand 2012 - TOP 100 Spanish Brands
EsBrand 2012 - TOP 100 Spanish Brands
 
anatomia de los organos de los sentidos
anatomia de los organos de los sentidosanatomia de los organos de los sentidos
anatomia de los organos de los sentidos
 
Presentación Noosfera
Presentación NoosferaPresentación Noosfera
Presentación Noosfera
 
Incisiones corneales penetrantes en cirugía de cataratas
Incisiones corneales penetrantes en cirugía de cataratasIncisiones corneales penetrantes en cirugía de cataratas
Incisiones corneales penetrantes en cirugía de cataratas
 

Similaire à Nokia New Asha Platform Developer Training

MWC/ADC 2013 Introduction to Asha application development
MWC/ADC 2013 Introduction to Asha application developmentMWC/ADC 2013 Introduction to Asha application development
MWC/ADC 2013 Introduction to Asha application developmentMicrosoft Mobile Developer
 
InstallAnywhere 2013 Datasheet
InstallAnywhere 2013 DatasheetInstallAnywhere 2013 Datasheet
InstallAnywhere 2013 DatasheetFlexera
 
Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Mohamad Iqbal
 
Porting BlackBerry apps to the Series 40 platform
Porting BlackBerry apps to the Series 40 platformPorting BlackBerry apps to the Series 40 platform
Porting BlackBerry apps to the Series 40 platformMicrosoft Mobile Developer
 
Java ME - 01 - Overview
Java ME - 01 - OverviewJava ME - 01 - Overview
Java ME - 01 - OverviewAndreas Jakl
 
Creating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidCreating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidMotorola Mobility - MOTODEV
 
City search documentation
City search documentationCity search documentation
City search documentationRajesh Varanasi
 
tranning synopsis(java programming).pdf
tranning synopsis(java programming).pdftranning synopsis(java programming).pdf
tranning synopsis(java programming).pdfsumitgiri32
 
City search documentation
City search documentationCity search documentation
City search documentationRajesh Varanasi
 
Developing native mobile applications using titanium
Developing native mobile applications using titaniumDeveloping native mobile applications using titanium
Developing native mobile applications using titaniumVlad Filip
 
Adapting Series 40 touch and type apps to the full-touch UI
Adapting Series 40 touch and type apps to the full-touch UIAdapting Series 40 touch and type apps to the full-touch UI
Adapting Series 40 touch and type apps to the full-touch UIMicrosoft Mobile Developer
 
Microsoft Azure News - October 2020
Microsoft Azure News - October 2020Microsoft Azure News - October 2020
Microsoft Azure News - October 2020Daniel Toomey
 
Symbian OS - Quick Start
Symbian OS - Quick StartSymbian OS - Quick Start
Symbian OS - Quick StartAndreas Jakl
 
Voice wiki on mobile project report
Voice wiki on mobile project reportVoice wiki on mobile project report
Voice wiki on mobile project reportRahul E
 
Voice wiki on mobile project report
Voice wiki on mobile project reportVoice wiki on mobile project report
Voice wiki on mobile project reportRahul E
 

Similaire à Nokia New Asha Platform Developer Training (20)

MWC/ADC 2013 Introduction to Asha application development
MWC/ADC 2013 Introduction to Asha application developmentMWC/ADC 2013 Introduction to Asha application development
MWC/ADC 2013 Introduction to Asha application development
 
InstallAnywhere 2013 Datasheet
InstallAnywhere 2013 DatasheetInstallAnywhere 2013 Datasheet
InstallAnywhere 2013 Datasheet
 
Nokia Developer Offering Series 40
Nokia Developer Offering Series 40Nokia Developer Offering Series 40
Nokia Developer Offering Series 40
 
Porting BlackBerry apps to the Series 40 platform
Porting BlackBerry apps to the Series 40 platformPorting BlackBerry apps to the Series 40 platform
Porting BlackBerry apps to the Series 40 platform
 
Java ME - 01 - Overview
Java ME - 01 - OverviewJava ME - 01 - Overview
Java ME - 01 - Overview
 
Microsoft azure
Microsoft azureMicrosoft azure
Microsoft azure
 
Creating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for AndroidCreating Great Apps with MOTODEV Studio for Android
Creating Great Apps with MOTODEV Studio for Android
 
City search documentation
City search documentationCity search documentation
City search documentation
 
tranning synopsis(java programming).pdf
tranning synopsis(java programming).pdftranning synopsis(java programming).pdf
tranning synopsis(java programming).pdf
 
City search documentation
City search documentationCity search documentation
City search documentation
 
Seminar report on sailfish os
Seminar report on sailfish osSeminar report on sailfish os
Seminar report on sailfish os
 
Developing native mobile applications using titanium
Developing native mobile applications using titaniumDeveloping native mobile applications using titanium
Developing native mobile applications using titanium
 
Adapting Series 40 touch and type apps to the full-touch UI
Adapting Series 40 touch and type apps to the full-touch UIAdapting Series 40 touch and type apps to the full-touch UI
Adapting Series 40 touch and type apps to the full-touch UI
 
Microsoft Azure News - October 2020
Microsoft Azure News - October 2020Microsoft Azure News - October 2020
Microsoft Azure News - October 2020
 
Symbian OS - Quick Start
Symbian OS - Quick StartSymbian OS - Quick Start
Symbian OS - Quick Start
 
Voice wiki on mobile project report
Voice wiki on mobile project reportVoice wiki on mobile project report
Voice wiki on mobile project report
 
Voice wiki on mobile project report
Voice wiki on mobile project reportVoice wiki on mobile project report
Voice wiki on mobile project report
 
Introduction to Nokia Asha SDK 1.2 (beta)
Introduction to Nokia Asha SDK 1.2 (beta)Introduction to Nokia Asha SDK 1.2 (beta)
Introduction to Nokia Asha SDK 1.2 (beta)
 
Glimpses
GlimpsesGlimpses
Glimpses
 
Resume_sunil
Resume_sunilResume_sunil
Resume_sunil
 

Plus de Andreas Jakl

Create Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityCreate Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityAndreas Jakl
 
AR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAndreas Jakl
 
Android Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndroid Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndreas Jakl
 
Android Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndroid Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndreas Jakl
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndreas Jakl
 
Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Andreas Jakl
 
Basics of Web Technologies
Basics of Web TechnologiesBasics of Web Technologies
Basics of Web TechnologiesAndreas Jakl
 
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreBluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreAndreas Jakl
 
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Andreas Jakl
 
Mobile Test Automation
Mobile Test AutomationMobile Test Automation
Mobile Test AutomationAndreas Jakl
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Andreas Jakl
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneAndreas Jakl
 
Windows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartWindows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartAndreas Jakl
 
Windows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosWindows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosAndreas Jakl
 
Windows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentWindows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentAndreas Jakl
 
NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)Andreas Jakl
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and GraphicsAndreas Jakl
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI DevelopmentAndreas Jakl
 

Plus de Andreas Jakl (20)

Create Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented RealityCreate Engaging Healthcare Experiences with Augmented Reality
Create Engaging Healthcare Experiences with Augmented Reality
 
AR / VR Interaction Development with Unity
AR / VR Interaction Development with UnityAR / VR Interaction Development with Unity
AR / VR Interaction Development with Unity
 
Android Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App ManagementAndroid Development with Kotlin, Part 3 - Code and App Management
Android Development with Kotlin, Part 3 - Code and App Management
 
Android Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSONAndroid Development with Kotlin, Part 2 - Internet Services and JSON
Android Development with Kotlin, Part 2 - Internet Services and JSON
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - Introduction
 
Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)Android and NFC / NDEF (with Kotlin)
Android and NFC / NDEF (with Kotlin)
 
Basics of Web Technologies
Basics of Web TechnologiesBasics of Web Technologies
Basics of Web Technologies
 
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & MoreBluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
Bluetooth Beacons - Bluetooth 5, iBeacon, Eddystone, Arduino, Windows 10 & More
 
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
Which new scenarios are enabled by Windows 10 for NFC, Bluetooth LE & Beacons?
 
Mobile Test Automation
Mobile Test AutomationMobile Test Automation
Mobile Test Automation
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
 
Windows Phone 8 NFC Quickstart
Windows Phone 8 NFC QuickstartWindows Phone 8 NFC Quickstart
Windows Phone 8 NFC Quickstart
 
Windows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App ScenariosWindows (Phone) 8 NFC App Scenarios
Windows (Phone) 8 NFC App Scenarios
 
Windows 8 Platform NFC Development
Windows 8 Platform NFC DevelopmentWindows 8 Platform NFC Development
Windows 8 Platform NFC Development
 
NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)NFC Development with Qt - v2.2.0 (5. November 2012)
NFC Development with Qt - v2.2.0 (5. November 2012)
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
04 - Qt Data
04 - Qt Data04 - Qt Data
04 - Qt Data
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI Development
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 

Dernier (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 

Nokia New Asha Platform Developer Training

  • 1. New Nokia Asha Platform Developer Training Create Amazing Apps for Nokia Asha Phones 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 1
  • 2. Andreas Jakl Twitter: @mopius Trainer & app developer – mopius.com – nfcinteractor.com Nokia: Technology Wizard University of Hagenberg: Assistant Professor Siemens / BenQ Mobile 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 2
  • 3. Platforms 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 3 Developer Platform 2.0DP 1.1DP 1.06th Ed., FP16th Ed.6th Ed., Lite5th Ed., FP1 Nokia Asha Software Platform 1.0 Series 40
  • 4. Nokia Asha Platform 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 4 Asha 501
  • 5. Series 40 Full Touch 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 5 Asha 305 Asha 306 Asha 308 Asha 309 Asha 310 Asha 311
  • 6. 2 Mb 2 Mb 2 Mb Asha 305, 306 Asha 308, 309, 310 Asha 311 2 Mb 2 Mb 4 Mb -- -- 1 GHz Capacitive Multipoint-Touch Resistive Multipoint-Touch (2) Capacitive Multipoint-Touch (5) Jar Size Java Heap CPU Screen 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 6 5 Mb* Asha 501 3 Mb -- Capacitive Multipoint-Touch (3) * recommended
  • 7. What’s New? Nokia IDE for Java ME v2 App Framework – Internationalization API (JSR-238) – MIDlet lifecycle: startApp() / pauseApp() are called when sent to background UI and graphics – Image scaling API – Gesture API: new double tap – Category bar: additional use as toolbar for actions Networking – Network State API: SIM, network, WLAN change notifications 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 7
  • 8. What’s New? Multimedia – Tuner, image encoding, image postprocessing – Removed com.nokia.mid.sound.Sound (Nokia UI) Security – PKI support. – Removed APDU / SATSA-APDU Data Handling – Contacts API: contact change notifications in phonebook (while MIDlet is active) – File Select API: use native file browser to select files – Phone Setting API: retrieve settings + change notifications: flight mode, data connection, silent mode, etc. – Nokia Notifications API: subscribe + get payload of notifications 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 8
  • 9. DEVELOPMENT Java ME 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 9
  • 10. Development 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 10 Both free IDEs come with extensive, generic Java ME support on board.
  • 11. Nokia IDE for Java ME 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 11 Device SDK Manager Integrated SDK + Toolchain App Templates JAD Editor
  • 12. NetBeans Fully integrated solution – Integrates all aspects of mobile development – Visual UI Designer – Game Builder – Localization, Preprocessing – Web access – Automated deployment Maintained by Oracle – http://www.netbeans.org/ 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 12
  • 13. Installation Java JDK + JRE 7 – Update 17 (Later versions do not work – emulator: internal RMI registry port issues) – 32 bit version (also on 64 bit OS) – http://www.oracle.com/technetwork/java/javase/downloads/index.html Nokia Asha SDK (includes Nokia IDE) – https://www.developer.nokia.com/Develop/Java/Tools/ Optional: NetBeans 7 (All Edition!) – http://netbeans.org/ Optional: Oracle Java ME SDK – http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 13 !
  • 14. NetBeans 7.3+ NetBeans 7.x experience – Don’t choose Features on Demand – Install Java SE + EE + ME Run NetBeans as Administrator once after Nokia SDK installation – Integrates SDK docs Install additional plug-ins – Java ME SDK Tools – LWUIT Resource Editor – Java ME SDK Demos – Visual Mobile Designer 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 14
  • 15. PHONES & APIS Understanding the Slang 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 15
  • 16. Asha / Series 40 Phones 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 16 Filter by Series 40 Edition or Java Runtime version (new phones) developer.nokia.com/Devices
  • 17. What does my phone support? 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 17 www.developer.nokia.com/Devices/
  • 18. Versions 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 18 Asha Software Platform Developer Platform OS Version Phones 1.0 Asha Software Platform Asha 501 2.0.0 Series 40 Asha 305, 306, 308, 309, 310, 311 1.1.0 Series 40 Asha 200, 201, 302, 303 1.0.0 Series 40 Asha 202, 203; 301, C2-00, C2-02, C2-03, C2- 05, C2-06, X2-02, X2-05 Series 40 6th Edition, FP 1 Asha 300, C3-01, X3-02 Series 40 6th Edition C2-01, C3-00, X2-00, X2-01, 6303i, 7230, 6350, 6750, 3720, ... Series 40 6th Edition Lite C1-01, C1-02 Series 40 5th Edition, FP1 2690, 3208, 6600i, 2730, 2700, 6208, 6600, 8800, ... Series 40 5th Edition, FP1 Lite 2220, 2720, 2320, 2330, 5000... Series 40 5th Edition 3610, 6263, 6555, 7500, 6267
  • 19. CLDC MIDP 248 MSA 185 JTWI 75 File 82 BT 135 Medi a 172 Web RPC 172 Web XML 177 SATS AAPD U 177 SATS ACRY PT 179 Locat ion 184 3D 205 Mess aging 211 Cont ent 226 SVG 234 Came ra 234 Audio 3D 234 Music 234 Imag eE/P 234 Tune r 238 I18N 256 Sens or Nokia UI IAP Asha 1.0 1.1 2.1 - - 1.0 1.1 1.2 1.0 1.0 - 1.0 1.0.1 1.1 2.0 1.0.1 1.1 1.1 - - 1.1 1.1 1.6 1.2 1.7 beta 2.0.0 1.1 - 1.0 1.0 1.0 1.1 1.1 - - - 1.6 2.0 1.1.0 - - - - - 1.1 1.0 1.0.0 - - - - - 1.1b - S40 6th, FP1 - - - - - 1.1b - S40 6th √ - √ - - - - 1.1 - S40 6th Lite - √ - - - - - - - - - - S40 5th FP1 √ - 1.1 - √ - 1.0 1.0 - - - - - S40 5th FP1 L - √ - - - - - - - - - - - - - - - S40 5th √ - 1.1 1.0 1.0 - 1.1 - √ - 1.0 1.0 - - - - -
  • 20. SDKs 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 21 www.developer.nokia.com/Develop/Java/Tools/Series_40_platform_SDKs/ 1 emulator per SDK. Install multiple SDKs for more emulators. www.developer.nokia.com/Develop/asha/java/downloads.xhtml
  • 21. Phone Deployment No Nokia Suite support for Asha 501 yet – Over-the-air (OTA) – Copy to MicroSD in Mass Storage mode – Bluetooth: 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 22
  • 22. USER INTERFACE - ESSENTIALS Nokia Asha 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 23
  • 23. UX Guidelines Design – Layouts – Interaction patterns – Icon templates – developer.nokia.com/Design/ 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 24
  • 24. New Asha UX 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 25
  • 25. Hardware Keys 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 26
  • 26. Back Button 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 27
  • 27. User Interface Layout 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 28
  • 28. Screen Sizes 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 29 Touch-and-type Full touch Nokia Asha
  • 29. Minimum Touch Area 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 30 59 x 59 px 55 x 55 px 47 x 47 px Finger Thumb
  • 30. UI Comparison 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 31 Status bar Header bar Action button 1 Content area Navigation bar Back buttonCategory bar View title Action button 2 (options) Status bar Header bar Content area Toolbar 240 x 400 px 3:5 aspect ratio240 x 320 px 3:4 aspect ratio
  • 31. USER INTERFACES Developing 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 32
  • 32. UI Strategies 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 33 Custom UI on Canvas LCDUI High-Level UI LWUIT Library
  • 33. High Level UI 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 34 Display CanvasScreen TextBox FormList Alert ChoiceGroup DateField TextField Gauge ImageItem StringItemChoice (Interface) ItemSpacer CustomItem Command Ticker Graphics Displayable Low Level UI Draw the GUI yourself, own event handling. Used for games and bigger commercial applications. Completely pre-defined screen layouts High Level UI Appearance based on default phone UI design, can not be influenced. Arrange predefined controls on a screen. LWUIT UI Library draws UI directly using low level UI drawing methods.
  • 34. High Level UI 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 35 Display CanvasScreen TextBox FormList Alert ChoiceGroup DateField TextField Gauge ImageItem StringItemChoice (Interface) One Display instance / MIDlet Methods for drawing to a canvas Available in all sub-classes of Displayable ItemSpacer CustomItem Command Ticker Graphics Displayable LWUIT
  • 35. High Level UI: Forms 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 36 Individual items, automatically arranged below each other. The appearance depends on the phone. WTK Emulator Nokia 7710 Emulator
  • 36. LWUIT LightWeight User Interface Toolkit – Inspired by Swing – But designed for constrained devices – Can be added to any Java ME application (embedded .jar) – Drawing done in Java source code, without native peer rendering Optimized version for Nokia! Features (excerpt): – Layouts – Themes, fonts – Animations & Transitions – 3D / SVG integration (optional) – Internationalization 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 37
  • 37. Tantalum Mobile Toolset Many common use cases – HTTP Getters – JSON, XML – Worker Threads – Logging Licensing – Free; Apache License – Add source directly to your project projects.developer.nokia.com/Tantalum 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 38
  • 38. Remote Device Access Enabling testing on real devices Free for Nokia Developer users Go to RDA: http://www.developer.nokia.com/Devices/Remote_device_access/ Watch introductory video: http://www.developer.nokia.com/Develop/Java/Videos/ http://www.youtube.com/watch?v=F1odix8k_fg 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 41
  • 39. Code Examples Installed to: – C:NokiaExamplesNokia_Asha_SDK_1_0 Nokia IDE – Nokia Hub → Nokia Series 40 Code Examples Emulator / Help – Help → MIDlet Samples Online – bit.ly/JavaMeExamples Maps & LWUIT – C:NokiaDevicesNokia_Asha_SDK_1_0plugins 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 42
  • 40. CATEGORY BAR & BACK Tabs & Tools 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 43
  • 41. Java ME Commands Command = semantic information about an action (→ how can an action be executed?) But no actual implementation of the action! Contains: – Short label – Long label (optional) – Type – Priority Nokia Asha Training | Andreas Jakl, Mopius 44 One of them will be displayed on the screen / in the menu, depending on the available space “Intention”of the command – e.g. for special placement on the device: Ok, Back, Help, Screen, Item, etc. For the order of commands, if more are mapped to the same softkey. The lower the priority, the more important it is. 18.03.2013
  • 42. Category Bar & Commands 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 45 No Category Bar Primary action as button Other commands in menu Category Bar: Tab Bar ≤ 4 tabs Primary action added to menu Category Bar: Toolbar New in Asha Platform: items don’t stay selected Full Touch Category Bar Automatic back button. ≤ 15 tabs, no actions allowed Primary action as icon (top right) Other actions in menu (top left)
  • 43. Do Not Combine Tabs & Actions 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 46 Tab Bar Highlights current tab. Category bar should disappear when drilling down. Toolbar Highlight only on touch down (3). Affect entire view, not a single item within view.
  • 44. CategoryBar Icons 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 47 New Asha Full Touch Bounding Box 22 x 22 px 36 x 36 px Icon Size 20 x 18 px 20 x 20 px Color Gray White Ready-made icons in Nokia Icon Toolkit http://bit.ly/NokiaIcons
  • 45. IconCommand Extends LCDUI Command class – Adds: Icon • Built-in system icon • Own icon – unselected – [selected – if not specified: automatic color highlight] 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 48
  • 46. IconCommand 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 49 public class JavaFTMidlet extends MIDlet implements CommandListener, ElementListener { private IconCommand cmdOk; private IconCommand cmdHome; public JavaFTMidlet() { // Create icon command with pre-defined image cmdOk = new IconCommand("Ok", Command.OK, 1, IconCommand.ICON_OK); // Create icon command with custom image try { Image imgHome = Image.createImage("/categorybar_home_m_light.png"); cmdHome = new IconCommand("Home", imgHome, null, Command.SCREEN, 3); } catch (IOException ex) { } } } Commands in Displayable Commands in CategoryBar
  • 47. CategoryBar 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 50 // Add commands to the category bar IconCommand[] iconCommands = {cmdHome, cmdInfo, cmdLike}; CategoryBar categoryBar = new CategoryBar(iconCommands, true); // Tabs CategoryBar categoryBar = new CategoryBar(iconCommands, true, CategoryBar.ELEMENT_MODE_RELEASE_SELECTED); // Actions categoryBar.setVisibility(true); // Invisible by default categoryBar.setElementListener(this); public void notifyElementSelected(CategoryBar cb, int i) { // From the ElementListener interface // Commands coming from the Category Bar Alert alert = new Alert("CategoryBar"); if (i == ElementListener.BACK) { alert.setString("Back element"); // i == -1 } else { alert.setString("Element: " + i); } display.setCurrent(alert); } Example: JavaTouch either/or
  • 48. Back on Platforms 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 51
  • 49. Back Stepping Historical navigation flow Skipped elements – Options / context menus – Dialogs – Notification Panel – Pickers Long-press closes current app 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 52
  • 50. Back Behaviour HW back key – must have – App main level: exit app – App sub level: back to upper hierarchy level • Exception: within game – open pause menu No SW back button allowed – Exception: game – SW button same behaviour as HW back key 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 53
  • 51. Back Commands Type“BACK”command: mapped to HW key – Not visible on screen CategoryBar: automatic back command – Invisible on Asha Platform → mapped to HW key 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 54 cmdBack = new IconCommand("Back", Command.BACK, 3, IconCommand.ICON_BACK); frmMain.addCommand(cmdHelp);
  • 52. HW Key → Back Commands 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 55 No back command, no category bar: Default system dialog to close the app. Category bar in use (also w/o own back command): Callback to CategoryBar listener with“back”code (-1). Traditional back command added: Not visible on screen, executed via HW key.
  • 53. Exiting the App 3 options – Long-press on back HW button – Swiping out app – Manually within app 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 56 public void exit() { destroyApp(true); notifyDestroyed(); }
  • 54. ICONOGRAPHY Activity Screen & Launcher Icon 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 57
  • 55. Icon File PNG Format – 50 x 50 px square image – Gradient background Display – Full square form on activity screen – Auto-cut to surround shape for launcher icon 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 58
  • 56. Icon Toolkit Templates for icons – Photoshop – Illustrator – Inkscape (open source) Pre-defined background colors bit.ly/NokiaIcons 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 59
  • 57. Icons Assign icon – Nokia IDE: JAD editor – NetBeans: project properties 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 60
  • 58. Colors Free to choose – Fit to own brand Pre-defined Nokia colors – Used as categories for system apps 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 61 www.developer.nokia.com/Resources/Library/Asha_UI/#!style/colour.html
  • 59. LWUIT Customized User Interface 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 62
  • 60. LWUIT Stylable UI Components – From Oracle: lwuit.java.net Optimized for Nokia – Native look & feel – Uses Nokia APIs for functionality – Better performance – Integrated in Nokia Asha SDK • Online: projects.developer.nokia.com/LWUIT_for_Series_40 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 63
  • 61. What is LWUIT? Lightweight UI Toolkit – Widget library inspired by Swing but designed for constrained devices such as mobile phones and set-top boxes UI Library – Easily customizable UI components: lists, table, calendar, button, etc. Themes: customizable look & feel Transitions, animations, layout management 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 64
  • 62. LWUIT Example Apps projects.developer.nokia.com/LWUIT_for_Series_40/wiki/ExampleApplications – LWUIT Rlinks (Reddit) – LWUIT Slide Puzzle – LWUIT Tourist Attractions – LWUIT CategoryBar Demo 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 65
  • 63. INTERNATIONALIZATION JSR-238 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 66
  • 64. Internationalization JSR-238 – Format data for locales – Locale-aware string comparison – Translation: manage app & device resources 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 67
  • 65. Formatter Locale-specific data – dates, times, numbers, percentages, currency Generic message formatting – placeholders {n} / {nn} 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 68 Asha Emulator Supported locales en kn-IN ta ur // Text definitions String txtCurrency = "Currency: {0}"; // [...] String txtTime = "Time: {0}"; // No parameter -> would use current locale (microedition.locale) Formatter format = new Formatter("kn-IN"); frmMain.append(Formatter.formatMessage(txtCurrency, new String[] {format.formatCurrency(currency)})); frmMain.append(Formatter.formatMessage(txtTime, new String[] {format.formatDateTime(dateTime, Formatter.TIME_LONG)})); Example: InternationalDemo
  • 66. String Comparator Locale-aware string comparison – Levels to adapt sorting order based on needs – JSR238: level 1 – 3 & identical – Default: level 1 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 69
  • 67. String Comparison 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 70 Asha Emulator Supported locales en en-US en-GB he he-IL sk sk-SK cs cs-CZ es es-ES zh zh-CN ja ja-JP Test code Test results StringComparator strCmpEn1 = new StringComparator("en", StringComparator.LEVEL1); int result = strCmpEn1.compare("a", "A"); English Level 1 Level 2 Level 3 Identical a – a 0 0 0 0 a – A 0 0 -5 -5 a – ä 0 -14 -14 -14 0 ... both texts are considered identical Example: InternationalDemo
  • 68. Translation ResourceManager – Assets (strings, images, etc.) in resource files – Different .res files for locales – Hierarchial matching • Avoid duplication of common resources • Automatic matching, removes: variant → country → language component 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 71
  • 69. Tools Localization support in Nokia IDE / NetBeans – *Not* JSR 238 – Custom class: works on any device Asha SDK Help – ResourceMaker cmd tool – Not up-to-date WTK 2.5 – Editor tool – Old WTK version (current: 3.2) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 72 IDEs create custom classes, don’t use JSR- 238
  • 70. SETTINGS & NETWORK STATE API Adapting to the Phone State 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 73
  • 71. Phone Settings Current state & change listener subscriptions – Flight mode – Data connection – Background data connection – Roaming data connection – Vibrator mode – Silent mode 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 74
  • 72. Setting Detection Retrieve setting 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 75 int settingState = Setting.getSetting(Setting.SETTING_FLIGHT_MODE); ON OFF INVALID DENY ASK ACCEPT WIFIONLY SETTING_FLIGHT_MODE SETTING_DATA_CONNECTION SETTING_BACKGROUND_DATA_CONNECTION SETTING_ROAMING_DATA_CONNECTION SETTING_VIBRATOR SETTING_SILENT Example: PhoneSettings State changes available via listener
  • 73. Network State Monitor state of – Network (home / roaming) – SIM – WLAN 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 76
  • 74. Network State Detection Retrieve status for SIM card 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 77 Example: PhoneSettings int networkState = NetworkState.getState(simCard); NETWORK_STATE_NO_NETWORK NETWORK_STATE_HOME NETWORK_STATE_ROAMING 0 1 State changes available via listener
  • 75. SIM State Detection Retrieve status for SIM card 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 78 Example: PhoneSettings int simState = SIMState.getState(simCard); SIM_STATE_READY SIM_STATE_NOT_READY SIM_STATE_NO_SIM 0 1 State changes available via listener
  • 76. Network State Detection Retrieve status for WLAN 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 79 Example: PhoneSettings int wlanState = WLANState.getState(simCard); WLAN_STATE_CONNECTED WLAN_STATE_NOT_CONNECTED State changes available via listener
  • 77. FILE SELECTION Native file browser UI 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 80
  • 78. File Selection Native file browser UI to list + select files – Images & documents for viewing / editing – Files for uploading to web service & as message attachments – Audio or video clips for playback Blocks calling thread – Don’t use in event handling thread (e.g., command action) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 81 SDK Example: FileSelectExample
  • 79. Launch File Dialog Launch file selection (in own thread) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 82 Example: SimpleFileSelect // Launch file selection dialog FileSelectDetail[] arrSelectedFiles = FileSelect.launch( FileSelect.FILE_SYSTEM_ALL, FileSelect.MEDIA_TYPE_ALL, false); FILE_SYSTEM_ALL FILE_SYSTEM_EXTERNAL FILE_SYSTEM_INTERNAL … or specific start folder, e.g., System.getProperty("fileconn.dir.photos") MEDIA_TYPE_ALL MEDIA_TYPE_APPLICATION MEDIA_TYPE_AUDIO MEDIA_TYPE_PICTURE MEDIA_TYPE_VIDEO false: single-file true: multi-file
  • 80. File Selection Results Print metadata of selected file(s) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 83 if (arrSelectedFiles != null) { // Show file meta data on the screen for (int i = 0; i < arrSelectedFiles.length; i++) { // Display name = file name frmMain.append("Display name: " + arrSelectedFiles[i].displayName); // MIME type, e.g., video/mp4 or image/png frmMain.append("MIME type: " + arrSelectedFiles[i].mimeType); // Size of the selected file in bytes frmMain.append("Size: " + arrSelectedFiles[i].size); // Full path to the file frmMain.append("URL: " + arrSelectedFiles[i].url); } } Example: SimpleFileSelect
  • 81. NOTIFICATIONS Push 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 84
  • 82. Notification API Push messages to user’s phones – Also when app is not running • Notification banner • Caches up to 5 messages per app (for up to 14 days) – Payload ≤ 1.5 kB 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 85 SDK Example: NNAClientExample
  • 83. Notifications – Sign Up Register new service ID – Creates service secret – https://account.nnapi.ovi.com/cm/ Web/services.jsp Environments – Sandbox for testing – Production available after 5 days • Separate server for China 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 86
  • 84. Notifications Flow – Client 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 87 Do you want to receive service X related push notifications? App needs to ask user for consent App registers with online push service App retrieves client-specific notification ID, sends to own notifications web service 1 2 Your own custom web service, manages notification IDs from subscribed clients
  • 85. Notifications Flow – Push 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 88 User gets push notification Notification bar shows details 4 3 Sandbox testing in Developer Console: push messages without need for own web service
  • 86. Notifications Flow – Retrieve 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 89 User launches app (e.g., through notification bar). App registers online. App gets cached push notifications. Note: user can turn off notifications for apps.
  • 87. EnvironmentSelector App for device / emulator – Swich between push servers 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 90 C:NokiaExamplesNokia_Asha_SDK_1_0NNAClientExampleEnvironmentSelector
  • 88. Client Implementation Open session – 1 session / app – Keep open for lifetime of app Register app – Callback: stateChanged(NotificationState.STATE_ONLINE) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 91 NotificationSession session = NotificationSessionFactory.openSession( main, // The MIDlet instance "example.com", // Service ID (Deprecated, but still has to be provided) "com.example", // Application ID this); // NotificationSessionListener session.registerApplication(); Developer Console
  • 89. Client Implementation Get Notification ID for this phone – Callback: infoReceived(NotificationInfo info) – Send this to your web service Receive messages 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 92 session.getNotificationInformation(); public void messageReceived(NotificationMessage message) { // Get data as string String msgData = message.getPayload().getData(); }
  • 90. Notification Service Push via REST API (HTTPS) – From own web service – To Nokia Notification Server 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 93 www.developer.nokia.com/Resources/Library/Java/#!developers-guides/nokia-notifications/nokia-notifications-service-api-rest-api.html
  • 91. Push Messages Messages – App running? • No info banner, directly delivered – Not running? • ≤ 5 messages cached • Customizable: info banner, alert Delivery confirmations – Not part of Nokia service – Own app can contact own web service 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 94
  • 92. Message Properties 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 95 Checked: delivered also when app is NOT running Checked: user is alerted about new message Notification title shown to the user Not used / shown / accessible MIME type of payload. Default: application/octet-stream Not used. App icon shown instead Maximum cache lifetime (≤ 14 days) Raw payload to send to the app Notification ID of the client to push to
  • 93. RADIO TUNER 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 96
  • 94. Tuner AM / FM radio – Tuning – Seeking – Squelch – Stereo mode – Signal strength query – Presets No RDS support Advanced Multimedia Supplements (JSR-234) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 97 SDK Example: AMMSTuner
  • 95. Seek Radio Channels Initialize radio Start playing 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 98 Example: Radio // Create generic Java ME player, with the specific radio URL player = Manager.createPlayer("capture://radio"); // Construct player player.realize(); // Get controller to control radio (seeking, specifying properties, etc.) tuner = (TunerControl) player.getControl("javax.microedition.amms.control.tuner.TunerControl"); // Minimum frequency in FM band to start search curFrequency = tuner.getMinFreq(TunerControl.MODULATION_FM); // Start playing player.start(); // Start search for the first station curFrequency = tuner.seek(curFrequency, TunerControl.MODULATION_FM, true);
  • 96. GESTURES Touchscreen Interaction 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 99
  • 97. Touch Gestures Use in: Canvas-/CustomItem-based classes – Optional: combine with Frame Animator API (kinetic scrolling) Available since Touch & Type – Tap: touch + release – Double Tap: touch + release + touch + release (new in Asha Platform) – Long Press (& repeated): touch + hold – Drag: touch + drag – Drop: touch + drag + touch down (“stop”) + release – Flick: touch + drag + release while dragging – Pinch: 2x touch + 2x drag + 2x touch down (“stop”) + 2x release (new in FullTouch) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 100
  • 98. Gesture Components 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 101 App Java Runtime GestureAction RegistersRegisters Gesture Listener Gesture Interactive Zone Gesture Registration Manager
  • 99. Gestures – Step 1 Create a GestureInteractiveZone 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 102 // Create a GestureInteractiveZone for all Gesture Types GestureInteractiveZone giz = new GestureInteractiveZone( GestureInteractiveZone.GESTURE_ALL ); // Set bounding rectangle of zone giz.setRectangle( x, y, width, height );
  • 100. Gestures – Step 2 Define GestureListener 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 103 // Define a GestureListener class GestureCanvas extends Canvas implements GestureListener { protected void paint(Graphics g) { … } public void gestureAction( Object container, GestureInteractiveZone zone, GestureEvent event) { ... } }
  • 101. Gestures – Step 3 Register the GestureInteractiveZone with the GestureRegistrationManager 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 104 // Register for Gesture events Canvas canvas = new GestureCanvas(); GestureRegistrationManager.register( canvas, giz ); GestureRegistrationManager.setListener( canvas, canvas );
  • 102. Handling gestureAction() Process values of registered gestures 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 105 public void gestureAction( Object container, GestureInteractiveZone zone, GestureEvent event) { switch( event.getType() ) { case GestureInteractiveZone.GESTURE_TAP: case GestureInteractiveZone.GESTURE_DOUBLE_TAP: case GestureInteractiveZone.GESTURE_LONG_PRESS: case GestureInteractiveZone.GESTURE_LONG_PRESS_REPEATED: case GestureInteractiveZone.GESTURE_DRAG: case GestureInteractiveZone.GESTURE_DROP: case GestureInteractiveZone.GESTURE_FLICK: case GestureInteractiveZone.GESTURE_PINCH: } }
  • 103. GestureEvent 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 106 Methods int getType() int getPinchCenterChangeX() int getStartX() int getPinchCenterChangeX() int getStartY() int getPinchCenterX() int getDragDistanceX() int getPinchCenterY() int getDragDistanceY() int getPinchDistanceChange() float getFlickDirection() returns flick direction in radians int getPinchDistanceCurrent() int getFlickSpeed() int getPinchDistanceStarting() int getFlickSpeedX() int getFlickSpeedY()
  • 104. Gesture Flick Direction getFlickDirection returns float which is the direction in radians 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 107
  • 105. Using: Gestures Register as gesture listener – Zone: reacts to 1+ specified gestures • Whole screen or rectangular area • Overlap possible – Received events → GestureListener 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 108 public class MainCanvas extends Canvas implements GestureListener { private int curPinchDistance = -1; public MainCanvas() { // Set this as container (gesture source) and listener GestureRegistrationManager.setListener(this, this); // Register for pinch events in the whole canvas area gestureZone = new GestureInteractiveZone(GestureInteractiveZone.GESTURE_PINCH); GestureRegistrationManager.register(this, gestureZone); } Example: PaintApp
  • 106. Using: Gestures Handling gestures – Executed in UI thread • Lengthy operations (scaling image, etc.) → own thread! – Parameters only valid during call (instances reused for next call-back) 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 109 public void gestureAction(Object container, GestureInteractiveZone gestureInteractiveZone, GestureEvent gestureEvent) { int eventType = gestureEvent.getType(); switch (eventType) { case GestureInteractiveZone.GESTURE_PINCH: // Pinch detected curPinchDistance = gestureEvent.getPinchDistanceCurrent(); break; case GestureInteractiveZone.GESTURE_RECOGNITION_START: /* ... */ break; case GestureInteractiveZone.GESTURE_RECOGNITION_END: /* ... */ break; } } Example: PaintApp
  • 107. LOCATION Positioning with Cell-Ids and GPS 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 110
  • 108. Network-based Positioning Accuracy 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 112 500 m 2000 m 4000 m Urban: 50% within 250 m 80% within 500 m 100 % hit rate 100 m Sub – Urban: 50% within 600 m 80% within 1.5 km 80-90 % hit rate Rural: 50% within 1500 m 80% within 3 km 60-90 % hit rate WLAN: Up to 30m precision in urban areas Cell-id precision offered across Asha range of phones Only on WLAN phones
  • 109. Cell ID Positioning Specify the acceptable location methods Get corresponding location provider 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 113 //Specify the retrieval method to Online/Cell-ID int[] methods = {(Location.MTA_ASSISTED | Location.MTE_CELLID | Location.MTE_SHORTRANGE | Location.MTY_NETWORKBASED)}; // Retrieve the location provider LocationProvider provider = LocationUtil.getLocationProvider(methods, null); // 50 seconds time-out Location loc = provider.getLocation(50000); // Get longitude and latitude QualifiedCoordinates coordinates = loc.getQualifiedCoordinates(); double lat = coords.getLatitude(); double lng = coords.getLongitude(); Example: mapExample
  • 110. Cell ID Positioning Approximate location using cell ID – Online: ~ 3-10 kB per request – Phone sends current cell ID(s) to a web service – Gets known location of cell ID in return Using cell ID positioning – Request generic LocationProvider through Nokia’s LocationUtil – No continuous updates (Listener) → 1-time, synchronous requests • Run in own thread – Raw cell ID: com.nokia.mid.cellid system property * 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 116 * Series 40 5th Edition FP1 +: Manufacturer & Operator Domains. Java Runtime 1.0.0+: all domains
  • 111. HERE MAPS Nokia Maps → 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 117
  • 112. Maps API Features 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 118 Supports local search and places look-up by category Geo-coding & Reverse Geo-coding: coordinates ←→ street address Routing between any start and end point, taking into consideration transport and traffic preferences Lets users send images or URL in SMS Message Integrated KML to show the content on the map without having to recreate it manually Show maps as street map, satellite or terrain. Custom content: markers, polylines
  • 113. Plans 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 119 Base, Free Unlimited 2D Map Tiles 2.500 daily limit for each other feature Core, $1500 / month Unlimited 2D Map Tiles 10.000 daily limit for each other feature Traffic Tile Service including Flow and Patterns Service Level Agreement (SLA) - 2D Maps Tiles, served via CDN, in Normal, Mobile, Pedestrian, Satellite/Aerial, Grey - 2D Static Maps - Car Routing - Pedestrian Routing - Geocoding - Reverse Geocoding - Places Discovery and Search
  • 114. Maps API Latest version included in Nokia Asha SDK – Documentation: developer.here.com/java Always requires AppID and Token – developer.here.com/web/guest/myapps 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 120 C:NokiaDevicesNokia_Asha_SDK_1_0pluginsmaps api
  • 115. Maps Project Template Create empty project – File → New → Java ME MIDlet – Select Map MIDlet Template 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 121
  • 116. Add Maps Library to Projects Nokia IDE Project properties → Java Build Path → Add External JARs... Select relevant Maps API jar files Ensure Libraries are exported 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 122
  • 117. Maps Libraries 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 123 Library File Use For JAR Size (kB) maps-core Base lib – always required 139 maps-components Map components (info bubbles, buttons, etc) 28 maps-gesture Adds gesture support (requires Gesture API 1.2+) 7 maps-kml Process + display KML data 32 places Places, (reverse) geocoding, sharing 95 routing Routing service 21
  • 118. Using: Maps 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 124 public class MapMidlet extends MIDlet implements GeocodeRequestListener { private MapCanvas mapCanvas; public void startApp() { // Set registered application ID and token ApplicationContext.getInstance().setAppID("xxx"); ApplicationContext.getInstance().setToken("xxx"); // Create new Nokia Maps canvas Display display = Display.getDisplay(this); mapCanvas = new MapCanvas(display) { public void onMapUpdateError(...) {} public void onMapContentComplete() {} }; mapCanvas.getMapDisplay().setZoomLevel(1, 0, 0); // Show map on the screen display.setCurrent(mapCanvas); } } Example: mapExample // Geocode an address GeocodeRequest geocodeRequest = SearchFactory.getInstance().createGeocodeRequest(); geocodeRequest.geocode("Vienna, Austria", null, this); // ... center map on the latitude and longitude public void onRequestComplete(GeocodeRequest request, com.nokia.maps.common.Location[] locations) { mapCanvas.getMapDisplay().setCenter(locations[0].getDisplayPosition()); }
  • 119. Map Marker Place markers on the map – Pre-defined images – Custom images 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 125 Example: mapExample // Set marker to position GeoCoordinate pos = new GeoCoordinate(48.20254, 16.3688, 0.0f); // MapFactory instantiates objects on the map MapFactory mapFactory = mapCanvas.getMapFactory(); // Create a standard marker at the specified position MapStandardMarker marker = mapFactory.createStandardMarker(pos); // Set visual type of the marker marker.setShapeType(MapStandardMarker.BALLOON); // Add the marker to our map mapCanvas.getMapDisplay().addMapObject(marker);
  • 120. – Multiple map types – conventional street map, satellite and terrain – Touch support – use touch to pan and zoom the map – Customizable markers – set color, labels and images – Polygons, polylines – set colors and transparency levels – Overlay support – set color/labels or use custom images – Download indicator – provided as a standard UI component 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 126 Map View Features
  • 123. COMPATIBILITY Running the same app on multiple phones 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 129
  • 124. 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 Asha SDK compiled app runs on old phones 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 130
  • 125. 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 New APIs for Internationalization, Multitouch, Pinch, CategoryBar & Sensors – Only work on new phones – Careful app design even keeps downwards compatibility 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 131
  • 126. Porting 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 132 Non-touch Touchandtype Example: RpsGame Fulltouch Non-touch app with high-level UI (LCDUI): automatically adapts Asha
  • 127. 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.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 133
  • 128. Example: Pinch Gesture Gesture API – Available in Touch & Type – Full Touch adds Pinch gesture – Query support at runtime 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 134 Example: PaintApp // 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); }
  • 129. Example: Optional Multitouch Encapsulate API using code to separate class Check support and instantiate on demand 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 135 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 Example: PaintApp
  • 130. Example: API Availability No System property for the API version? – Check Class availability – ClassNotFoundException? → API not supported 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 136 // 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) { } Example: PaintApp
  • 131. Need for Threads Protected methods – From commandAction() • = event dispatch thread • Asha Platform: Throws SecurityException “Blocking call performed in the event thread” → Call from extra thread! 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 137
  • 132. THANK YOU! Andreas Jakl Twitter: @mopius www.mopius.com 14.05.2013 Nokia Asha Training | Andreas Jakl, Mopius 138