developing rich interfaces in javafx for ultrabooks

26
Developing Rich Interfaces in JavaFX for Ultrabooks Bruno Borges Felipe Pedroso

Upload: felipe-pedroso

Post on 07-Nov-2014

676 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Developing Rich Interfaces in JavaFX for Ultrabooks

Developing Rich Interfaces in JavaFX for Ultrabooks

Bruno BorgesFelipe Pedroso

Page 2: Developing Rich Interfaces in JavaFX for Ultrabooks

2

Agenda

• The future of PCs• JavaFX and Touch Support• Using JNI to work with sensors

Page 3: Developing Rich Interfaces in JavaFX for Ultrabooks

Mobile Computing Lines are BlurringUltrabook™

Convertible & Detachable

Ultrabook™TabletSmartphone

Consumption Usages Creation/Productivity

Notebook

Page 4: Developing Rich Interfaces in JavaFX for Ultrabooks

4

The Ultrabook™ PlatformReshaping the PC Experience

Ambient Light

Sensor

GPSCompass

Near Field Communicatio

n

Gyroscope

Ultrabook™

Accelerometer

Multi-Touch

Context Aware Sensors

Page 5: Developing Rich Interfaces in JavaFX for Ultrabooks

OK, they have all those features…

… but how can we implement them using Java?

Page 6: Developing Rich Interfaces in JavaFX for Ultrabooks

6

To allow users to TOUCH my Java App...

• 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?

Page 7: Developing Rich Interfaces in JavaFX for Ultrabooks

7

Page 8: Developing Rich Interfaces in JavaFX for Ultrabooks

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

Page 9: Developing Rich Interfaces in JavaFX for Ultrabooks

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.

Page 10: Developing Rich Interfaces in JavaFX for Ultrabooks

10

What I need to do to manipulate components?

• Apply a transform to the component (Translation, Rotation and Scale):

• Let’s dive into some code!

Page 11: Developing Rich Interfaces in JavaFX for Ultrabooks

What about the sensors?

JNI, I choose you!

Page 12: Developing Rich Interfaces in JavaFX for Ultrabooks

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

Page 13: Developing Rich Interfaces in JavaFX for Ultrabooks

13

API Windows – Sensor Fusion

Page 14: Developing Rich Interfaces in JavaFX for Ultrabooks

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

Page 15: Developing Rich Interfaces in JavaFX for Ultrabooks

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

Page 16: Developing Rich Interfaces in JavaFX for Ultrabooks

16

How can I access that?

Page 17: Developing Rich Interfaces in JavaFX for Ultrabooks

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

Page 18: Developing Rich Interfaces in JavaFX for Ultrabooks

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!

Page 19: Developing Rich Interfaces in JavaFX for Ultrabooks

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!

Page 20: Developing Rich Interfaces in JavaFX for Ultrabooks

20

Wants to know more about Intel Software?http://software.intel.com/en-us/

Page 21: Developing Rich Interfaces in JavaFX for Ultrabooks

21

Windows Communityhttp://software.intel.com/en-us/windows

Page 22: Developing Rich Interfaces in JavaFX for Ultrabooks

22

www.javafxcommunity.com

Page 23: Developing Rich Interfaces in JavaFX for Ultrabooks

23

JFXtras.org

Page 24: Developing Rich Interfaces in JavaFX for Ultrabooks

Take aways

• The PC experience is being reshaped

• JavaFX + Touch = AWESOME

• Using JNI to access the sensors can be LEGENDARY!

Page 25: Developing Rich Interfaces in JavaFX for Ultrabooks

Any doubts?(if yes, the answer is 42)

Page 26: Developing Rich Interfaces in JavaFX for Ultrabooks

Thanks a lot!

Bruno Borgesfacebook.com/brunocborges

@brunoborges

Felipe Pedrosofacebook.com/felipe.a.pedroso

@felipeapedroso