Developing Rich Interfaces in JavaFX for
Ultrabooks
Bruno Borges
Felipe Pedroso
Agenda
• The future of PCs
• JavaFX and Touch Support
• Using JNI to work with sensors
2
Mobile Computing Lines are Blurring
Ultrabook™
Convertible & Detachable
Ultrabook™
TabletSmartphone
Consumption Usages Cre...
The Ultrabook™ Platform
Reshaping the PC Experience
4
Ambient
Light Sensor
GPS
Compass
Near Field
Communication
Gyroscope
...
OK, they have all those features…
… but how can we implement them using Java?
To allow users to TOUCH my Java App...
6
• Should I use...
– AWT?
– Swing?
– SWT?
• Actually, you can use them but...
– Th...
7
Actions supported
• Touch events: Down, Move and Up
– Tap (Down and Up) / Double tap
– Drag and Drop (Down, Move and Up)
–...
What I need to do to manipulate components?
• Your components must extend the Node class or any of its
subclasses (StackPa...
What I need to do to manipulate components?
10
• Apply a transform to the component (Translation, Rotation and
Scale):
• L...
What about the sensors?
JNI, I choose you!
Available sensors on Ultrabooks
• Accelerometer
– Proper acceleration in three axis (x, y, z)
• Gyrometer
– Device orienta...
API Windows – Sensor Fusion
13
API Windows – Namespaces
• Windows.Sensors.*  Common sensors
– Accelerometer
– Gyrometer
– Inclinometer
– OrientationSens...
Windows API – How to
• Get the default object of your sensor using the GetDefault method
• You can call the GetCurrentRead...
How can I access that?
16
Using JNI to access the sensors from
Windows.Sensors
1. [Java] Create a native method to register the object that will
han...
Using JNI to access the sensors from
Windows.Sensors
5. [C++] Initialize the sensor and delegate a C++ method to handle
th...
What about Linux?
• Touch works fine, but there aren’t clear APIs to read sensors. If
you know how to do it, let’s work to...
Wants to know more about Intel Software?
http://software.intel.com/en-us/
20
Windows Community
http://software.intel.com/en-us/windows
21
www.javafxcommunity.com
22
JFXtras.org
23
Take aways
• The PC experience is being reshaped
• JavaFX + Touch = AWESOME
• Using JNI to access the sensors can be LEGEN...
Any doubts?
(if yes, the answer is 42)
Thanks a lot!
Bruno Borges
facebook.com/brunocborges
@brunoborges
Felipe Pedroso
facebook.com/felipe.a.pedroso
@felipeaped...
Upcoming SlideShare
Loading in …5
×

Developing Rich Interfaces in JavaFX for Ultrabooks

916 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Developing Rich Interfaces in JavaFX for Ultrabooks

  1. 1. Developing Rich Interfaces in JavaFX for Ultrabooks Bruno Borges Felipe Pedroso
  2. 2. Agenda • The future of PCs • JavaFX and Touch Support • Using JNI to work with sensors 2
  3. 3. Mobile Computing Lines are Blurring Ultrabook™ Convertible & Detachable Ultrabook™ TabletSmartphone Consumption Usages Creation/Productivity Notebook
  4. 4. The Ultrabook™ Platform Reshaping the PC Experience 4 Ambient Light Sensor GPS Compass Near Field Communication Gyroscope Ultrabook™ Accelerometer Multi-Touch Context Aware Sensors
  5. 5. OK, they have all those features… … but how can we implement them using Java?
  6. 6. To allow users to TOUCH my Java App... 6 • Should I use... – AWT? – Swing? – SWT? • Actually, you can use them but... – They aren’t made for multi-touch (OK, there’s a way to do it) – You must optimize your UI controls to be more ‘touch friendly’ • So, how to do it in a simple and easy way?
  7. 7. 7
  8. 8. Actions supported • Touch events: Down, Move and Up – Tap (Down and Up) / Double tap – Drag and Drop (Down, Move and Up) – Hold • Gestures – Swipe: Up, Down, Left and Right – Zoom: Pinch / Spread – Rotate 8
  9. 9. What I need to do to manipulate components? • Your components must extend the Node class or any of its subclasses (StackPane, ImageView, etc) • Set the proper EventHandler to handle the action. 9
  10. 10. What I need to do to manipulate components? 10 • Apply a transform to the component (Translation, Rotation and Scale): • Let’s dive into some code!
  11. 11. What about the sensors? JNI, I choose you!
  12. 12. Available sensors on Ultrabooks • Accelerometer – Proper acceleration in three axis (x, y, z) • Gyrometer – Device orientation • Magnetometer – Strenght and direction of magnetic fields • GPS (Global Positioning System) – Location and Time information • NFC – Near Field Communication • Ambient Light Sensor – Ambient Light Level 12
  13. 13. API Windows – Sensor Fusion 13
  14. 14. API Windows – Namespaces • Windows.Sensors.*  Common sensors – Accelerometer – Gyrometer – Inclinometer – OrientationSensor – SimpleOrientationSensor – Compass – LightSensor • Windows.Devices.Geolocation  GPS – Geolocator • Windows.Networking.Proximity  NFC – ProximityDevice 14
  15. 15. Windows API – How to • Get the default object of your sensor using the GetDefault method • You can call the GetCurrentReading() to get the current value of the sensors or... • ... work with the ReadingChanged event – Set the attribute ReportInterval (please, respect the MinimumReportInterval to avoid problems) – Delegate a method to handle the event (something like setting a method as a listener) – Handle the event! • This procedure is valid only for sensors from Windows.Sensors namespace 15
  16. 16. How can I access that? 16
  17. 17. Using JNI to access the sensors from Windows.Sensors 1. [Java] Create a native method to register the object that will handle the events that come from the sensor 2. Generate the header file using javah 3. [C++] Create a DLL Project in Visual Studio with the DLLs and namespaces of the Windows 8 APIS 4. [C++] Use a variable to keep a reference to the object and the ID (GetMethodID) of the method that will handle the event 17
  18. 18. Using JNI to access the sensors from Windows.Sensors 5. [C++] Initialize the sensor and delegate a C++ method to handle the event 6. [C++] Redirect the delegate method call to the Java method using the function CallVoidMethod with the following parameters: the Java Object, the method ID and it’s parameters 7. [Java] Handle the event!  A lot of text? Please, show me the code! 18
  19. 19. What about Linux? • Touch works fine, but there aren’t clear APIs to read sensors. If you know how to do it, let’s work together! 19
  20. 20. Wants to know more about Intel Software? http://software.intel.com/en-us/ 20
  21. 21. Windows Community http://software.intel.com/en-us/windows 21
  22. 22. www.javafxcommunity.com 22
  23. 23. JFXtras.org 23
  24. 24. Take aways • The PC experience is being reshaped • JavaFX + Touch = AWESOME • Using JNI to access the sensors can be LEGENDARY!
  25. 25. Any doubts? (if yes, the answer is 42)
  26. 26. Thanks a lot! Bruno Borges facebook.com/brunocborges @brunoborges Felipe Pedroso facebook.com/felipe.a.pedroso @felipeapedroso

×