Your SlideShare is downloading. ×
0
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Advanced sensors in Series 40 Java ME apps
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Advanced sensors in Series 40 Java ME apps

2,246

Published on

This webinar will present advanced examples of how to use sensors embedded in Nokia Asha phones in your Java™ ME apps and games. We’ll cover the structure and usage of the Mobile Sensor API (JSR-256). …

This webinar will present advanced examples of how to use sensors embedded in Nokia Asha phones in your Java™ ME apps and games. We’ll cover the structure and usage of the Mobile Sensor API (JSR-256). Attila Csipa, technology wizard at Nokia in Tampere, Finland, will give you a short overview that will be followed by plenty of examples and live coding demos. He’ll use the Nokia IDE for Java™ ME (Eclipse-based) to show you how to build your code. He’ll also share best practices and user-experience recommendations based on the most common use cases. We suggest you review the slides from Attila’s introductory session before attending this advanced webinar. ( http://www.slideshare.net/nokia-developer/using-sensors-in-java-me-apps-on-series-40 ) You’ll get a lot out of the webinar even if you haven’t reviewed the earlier material, but you’ll learn more if you’ve done so.

Published in: Technology
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,246
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
51
Comments
2
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. ADVANCED EXAMPLES OF SENSORUSAGE IN JAVA ME ON SERIES 40Attila Csipa [@achipa]Technology Wizard, Nokia 1 © 2012 Nokia Advanced examples of sensor usage in Java ME on Series 40 v1.2 February 19, 2013 Attila Csipa
  2. CONTENTS• Introduction – Platforms & Versions• Sensors – Physical vs virtual – JSR-256 – Measurables – Accelerometers – Usage – UI considerations – Performance – App Compatibility• Resources 2 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  3. PLATFORMSAPI Differences: bit.ly/S40Apis5th Ed., FP1 6th Ed., Lite 6th Ed. 6th Ed., FP1 DP 1.0 DP 1.1 Developer Platform 2.0 http://www.developer.nokia.com/Devices/Device_specifications/Comparison.xhtml?dev=Asha_306,Nokia_Asha_309,Asha_311 3 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  4. DP 2.0 – NEW APIS Full touch Sensors & Multipoint UI Orientation Touch APIs Gestures: Virtual ... Pinch Keyboard4 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  5. SENSORS Etymology Originated 1925–30 from sense + -or. Noun sensor (plural sensors) A device or organ that detects certain external stimuli and responds in a distinctive manner.5 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  6. SENSORS: PHYSICAL VS VIRTUAL• Physical sensors (physical values, g or m/s, mbar, etc) – Acceleration – Light – ...• Virtual sensors (combined or interpreted values, %, enum-s) – Battery level – Orientation –… 6 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  7. SENSORS: JSR-256 JSR page at Nokia Developer JSR docs• JSR 256 Sensor API – Generic: designed also for temperature, blood pressure, etc. – Support on Series40 from DP2.0 (Asha Full Touch) – Also available on Symbian (from S60 5th edition onwards)• Two packages javax.microedition.sensor (read information) javax.microedition.sensor.control (settings, start/stop)7 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  8. SENSORS: WHAT TO LOOK FOR• Currently supported – Battery Charge: 0 .. 100, charge percentage – Network Field Intensity: 0 .. 100, signal strength – Charger State: 0 .. 1, charger connected – Acceleration: –2g .. +2g, x / y / z axis – Double Tap: 1 .. 63, phone sides – Orientation: 0 .. 6, phone orientation8 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  9. SENSORS: ACCELEROMETERS ARE COOL• Enrich user interaction – Doesn’t suffer from finger size limits – Doesn’t suffer from screen size limits – Doesn’t interfere with what the user sees on the screen – Natural interaction (language/culture independent)• Ideal for games!9 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  10. SENSORS: UNDERSTANDING ACCELEROMETERS• Acceleration is CHANGE of the speed vector• Standstill normalized value is 1.0, why? GRAVITY• Nitpick - accelerometers measure translation not rotation• Rotation can still be measured indirectly (we measure gravity vector hopping from one axis to the other)10 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  11. Example:SENSORS: API AVAILABILITY Racer, aMaze• No System property for the API version? – Check Class availability – ClassNotFoundException? → API not supported // Virtual keyboard support try { // Check if class is available Class.forName("javamicroedition.sensor.SensorConnection"); // SensorManager.findSensors("acceleration", null); useSensors = true; } catch (ClassNotFoundException e) { // Class not available: -> no Sensor API support. useSensors = false; } catch (Exception e) { }11 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  12. Example:SENSORS: DYNAMIC DISCOVERY SensorBrowser• Sensors can be discovered dynamically! private List sensorsList; private SensorInfo[] sensorInfos; public SensorBrowser() { display = Display.getDisplay(this); sensorsList = new List("Sensors list:", List.EXCLUSIVE); sensorInfos = SensorManager.findSensors(null, null); for (int i = 0; i < sensorInfos.length; i++) { sensorsList .append(constructVisibleSensorName(sensorInfos[i]), null); } sensorsList.addCommand(CMD_LIST_DETAIL); sensorsList.addCommand(CMD_EXIT); sensorsList.setCommandListener(this); }12 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  13. Example:SENSORS: CAN SAY WHO/WHAT THEY ARE SensorBrowser• A wealth of inspectable information available SensorInfo sensorInfo = sensorInfos[currentSensorId]; sensorDetail = new Form("Sensor detail: " + constructVisibleSensorName(sensorInfo)); sensorDetail.append(new StringItem("Quantity:", sensorInfo .getQuantity(), StringItem.LAYOUT_LEFT)); sensorDetail.append(new StringItem("Context type:", sensorInfo .getContextType(), StringItem.LAYOUT_LEFT)); sensorDetail.append(new StringItem("Connection type:", connectionTypeToString(sensorInfo.getConnectionType()))); sensorDetail.append(new StringItem("URL:", sensorInfo.getUrl(), StringItem.LAYOUT_LEFT)); String[] properties = sensorInfo.getPropertyNames(); for (int i = 0; i < properties.length; i++) { Object value = sensorInfo.getProperty(properties[i]); sensorDetail.append(new StringItem(properties[i] + ":", value .toString(), StringItem.LAYOUT_LEFT)); }13 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  14. Example: MovingBallSENSORS: USING THEM – ROLL YOUR OWN• Establish sensor connection // Find all acceleration sensors, the contextType is left undefined SensorInfo[] sensorInfos = SensorManager.findSensors("acceleration", null); // Find an acceleration sensor that returns double values for (int i = 0; i < sensorInfos.length; i++) { if (sensorInfos[i].getChannelInfos()[0].getDataType() == ChannelInfo.TYPE_DOUBLE) { accSensor = (SensorConnection) Connector.open(sensorInfos[i].getUrl()); } }• Check data in game loop // Use 1 as a buffer size to get exactly 1 value for each axis Data[] data = accSensor.getData(1); speedX = -data[0].getDoubleValues()[0]; // data[0] => x-axis speedY = data[1].getDoubleValues()[0]; // data[1] => y-axis14 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  15. SENSORS: USING THEM – COPY WITH PRIDE• Use the wrapping classes from Nokia Developer examples private void enableSensors() { if (accelerationProvider != null) { accelerationProvider.close(); } accelerationProvider = AccelerationProvider.getProvider( new AccelerationProvider.Listener() { public void dataReceived(double ax, double ay, double az) { if (isSensorTurning()) { tilt = (int) ay; } } }); if (accelerationProvider != null) { Main.sensorsSupported = true; } else { Main.sensorsSupported = false; } }15 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  16. SENSORS: IT‘S A CONDITION (INTERFACE)• Operators temperature.addCondition(listener, new LimitCondition(50,Condition.GREATER_THAN)); – OP_EQUALS – OP_GREATER_THAN – OP_GREATER_THAN_OR_EQUALS – OP_LESS_THAN – OP_LESS_THAN_OR_EQUALS• Three Conditions and isMet() – LimitCondition – a value and an operator – RangeCondition – two operators, two values – ObjectCondition – compares to Objects (Strings, etc) 16 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  17. SENSORS: UI CONSIDERATIONS• Calibrate! (see aMaze example)• Look for change, not particular values• Which axis is which (portrait vs landscape)• Anticipate noise in readings (average values if needed)• Don’t force accelerometer usage if it doesn’t add to the user experience17 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  18. SENSORS: PERFORMANCE• Filter (LimitCondition) for values you’re really interested in• Separate from mainloop – use Threads (see Cottage360 video and source)• Responsiveness is more critical than with keyboard input• Choose right frequency (is 100 reads/sec really needed?)18 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  19. COMPATIBILITY19 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  20. COMPATIBILITY? CODE CONSIDERATIONS• Source & binary compatible – xx years old Java ME apps run on full touch phones (and vice versa)!• Downwards compatibility – Check API support of target phones – Lowest common denominator: → Nokia Java SDK 2.0 compiled app runs on old phones20 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  21. COMPATIBILITY? USE-CASE CONSIDERATIONS• Input type – Sensors complementing buttons (universal) – Discrete input CAN be easier with buttons (f.ex Snake)! – Sensors complementing touch controls (touch&type) – Most common – Accelerometer only (no pre-DP2.0) – Rarer than you think, but possible! (f.ex wire loop game)21 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  22. 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 available22 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  23. RESOURCES & TIPS25 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  24. NOKIA IDE FOR JAVA ME Integrated SDK + Toolchain JAD Editor App Templates Device SDK Manager26 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  25. CODE EXAMPLES• Nokia IDE – Nokia Hub → Nokia Series 40 Code Examples• Online – bit.ly/JavaMeExamples• Emulator – Help → MIDlet Samples• Maps & LWUIT – C:NokiadevicesNokia_SDK_2_0_Javaplugins 27 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  26. CODE EXAMPLES SHOWN TODAY• Wiki• aMaze• Racer• Cottage360 (episode 19)28 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  27. GET STARTED• Overview – www.developer.nokia.com/Develop/Java/Getting_started/• Downloads – SDK: www.developer.nokia.com/Develop/Java/ – LWUIT: projects.developer.nokia.com/LWUIT_for_Series_40• Guides – Design & User Experience – Porting from Android – www.developer.nokia.com/Develop/Java/Documentation/ – Training Videos: www.developer.nokia.com/Develop/Java/Learning/ – Code Examples: www.developer.nokia.com/Develop/Java/Code_examples/30 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa
  28. THANK YOU! QUESTIONS?Want to learn more?www.developer.nokia.comAttila Csipa [@achipa]Technology Wizard, Nokia 31 © 2012 Nokia Using accelerometers and other sensors from Java ME on Series 40 v1.1 October 23, 2012 Attila Csipa

×