Your SlideShare is downloading. ×
0
Bringing the Open Web & APIs to
mobile devices with Firefox OS
@robertnyman
@robertnyman
Mozilla is a
global non-
profit dedicated
to putting you
in control of
your online
experience and
shaping the
future of the...
Using HTML5, CSS and
JavaScript together with a
number of APIs to build
apps and customize the UI.
Firefox OS
"Movistar to offer the
ZTE Open for €69,
including €30 of
balance for prepaid
customers and a 4GB
microSD card"
Launch!
Foxconn
Open Web Apps
HTML5 + manifest file (JSON)
{
"version": "1",
"name": "Firefox OS Boilerplate App",
"launch_path": "/index.html",
"description": "Boilerplate Firefox ...
MANIFEST CHECKER
http://appmanifest.org/
Packaged & hosted apps
WebAPIs
Security Levels
Web Content
Regular web content
Installed Web App
A regular web app
Privileged Web App
More access, more responsibility
Ce...
https://wiki.mozilla.org/
WebAPI#Planned_for_initial_release_of_B2G_.28aka_Basecamp.29
"permissions": {
"contacts": {
"description": "Required for autocompletion in the share screen",
"access": "readcreate"
},...
PERMISSIONS
Vibration API (W3C)
Screen Orientation
Geolocation API
Mouse Lock API (W3C)
Open WebApps
Network Information API (W3C)
Bat...
BATTERY STATUS
API
var battery = navigator.battery;
if (battery) {
var batteryLevel = Math.round(battery.level * 100) + "%",
charging = (batt...
NOTIFICATION
var notification = navigator.mozNotification;
notification.createNotification(
"See this",
"This is a notification",
iconU...
SCREEN
ORIENTATION API
// Portrait mode:
screen.mozLockOrientation("portrait");
/*
Possible values:
"landscape"
"portrait"
"landscape-primary"
"l...
VIBRATION API
// Vibrate for one second
navigator.vibrate(1000);
// Vibration pattern [vibrationTime, pause,…]
navigator.vibrate([200, 1...
WEB PAYMENTS
var pay = navigator.mozPay(paymentToken);
pay.onsuccess = function (event) {
// Weee! Money!
};
mozmarket.receipts.Prompter({
storeURL: "https://marketplace.mozilla.org/app/myapp",
supportHTML: '<a href="mailto:me@exam...
DEVICEPROXIMITY
window.addEventListener("deviceproximity", function (event) {
// Current device proximity, in centimeters
console.log(even...
AMBIENT LIGHT
EVENTS
window.addEventListener("devicelight", function (event) {
// The lux values for "dim" typically begin below 50,
// and the...
PAGE VISIBILITY
document.addEventListener("visibilitychange", function () {
if (document.hidden) {
console.log("App is hidden");
}
else {
...
Device Storage API
Browser API
TCP Socket API
Contacts API
systemXHR
PRIVILEGED APIS
DEVICE STORAGE
API
var deviceStorage = navigator.getDeviceStorage("videos");
var storage = navigator.getDeviceStorage("videos"),
cursor = storage.enumerate();
cursor.onerror = function() {
console.er...
WEB ACTIVITIES
Interacting with the camera
var activity = new MozActivity({
name: "view",
data: {
type: "image/png",
url: ...
}
});
activity.onsuccess = function () ...
{
"activities": {
"share": {
"filters": {
"type": ["image/png", "image/gif"]
}
"href": "sharing.html",
"disposition": "win...
navigator.mozSetMessageHandler("activity", function (a) {
var img = getImageObject();
img.src = a.source.url;
// Call a.po...
Future APIs
Resource lock API
UDP Datagram Socket API
Peer to Peer API
WebNFC
WebUSB
HTTP-cache API
Calendar API
Spellcheck API
LogAPI...
Web Apps from Mozilla
Dialer
Contacts
Settings
SMS
Web browser
Gallery
Video Player
Music Player
E-mail (POP, IMAP)
Calendar
Alarm Clock
Camera
...
Web Components & Mozilla Brick
http://mozilla.github.io/brick/
<x-flipbox>
<div>I'm the front face.</div>
<div>And I'm the back face.</div>
</x-flipbox>
// assume that toggleButton and flipBox are already
// defined as their respective DOM elements
toggleButton.addEventListe...
appbar
calendar
datepicker
deck
flipbox
iconbutton
layout
slidebox
slider
tabbar
toggle
togglegroup
tooltip
Get started
https://addons.mozilla.org/firefox/addon/firefox-os-
simulator/
FIREFOX OS
BOILERPLATE APP
https://github.com/robnyman/Firefox-OS-Boilerplate-App
https://marketplace.firefox.com/
https://marketplace.firefox.com/developers/
Trying things out
Go have some fun!
Robert Nyman
robertnyman.com
robert@mozilla.com
Mozilla
@robertnyman
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus
Upcoming SlideShare
Loading in...5
×

Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus

1,414

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,414
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
75
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Bringing the Open Web & APIs to 
mobile devices with Firefox OS - GOTO conference, Aarhus"

  1. 1. Bringing the Open Web & APIs to mobile devices with Firefox OS @robertnyman
  2. 2. @robertnyman
  3. 3. Mozilla is a global non- profit dedicated to putting you in control of your online experience and shaping the future of the Web for the public good
  4. 4. Using HTML5, CSS and JavaScript together with a number of APIs to build apps and customize the UI. Firefox OS
  5. 5. "Movistar to offer the ZTE Open for €69, including €30 of balance for prepaid customers and a 4GB microSD card" Launch!
  6. 6. Foxconn
  7. 7. Open Web Apps
  8. 8. HTML5 + manifest file (JSON)
  9. 9. { "version": "1", "name": "Firefox OS Boilerplate App", "launch_path": "/index.html", "description": "Boilerplate Firefox OS app", "icons": { "16": "/images/logo16.png", "32": "/images/logo32.png", "48": "/images/logo48.png", "64": "/images/logo64.png", "128": "/images/logo128.png" }, "developer": { "name": "Robert Nyman", "url": "http://robertnyman.com" }, "installs_allowed_from": ["*"], "default_locale": "en" }
  10. 10. MANIFEST CHECKER http://appmanifest.org/
  11. 11. Packaged & hosted apps
  12. 12. WebAPIs
  13. 13. Security Levels
  14. 14. Web Content Regular web content Installed Web App A regular web app Privileged Web App More access, more responsibility Certified Web App Device-critical applications
  15. 15. https://wiki.mozilla.org/ WebAPI#Planned_for_initial_release_of_B2G_.28aka_Basecamp.29
  16. 16. "permissions": { "contacts": { "description": "Required for autocompletion in the share screen", "access": "readcreate" }, "alarms": { "description": "Required to schedule notifications" } }
  17. 17. PERMISSIONS
  18. 18. Vibration API (W3C) Screen Orientation Geolocation API Mouse Lock API (W3C) Open WebApps Network Information API (W3C) Battery Status API (W3C) Alarm API Web Activities Push Notifications API WebFM API WebPayment IndexedDB (W3C) Ambient light sensor Proximity sensor Notification REGULAR APIS
  19. 19. BATTERY STATUS API
  20. 20. var battery = navigator.battery; if (battery) { var batteryLevel = Math.round(battery.level * 100) + "%", charging = (battery.charging)? "" : "not ", chargingTime = parseInt(battery.chargingTime / 60, 10), dischargingTime = parseInt(battery.dischargingTime / 60, 10); // Set events battery.addEventListener("levelchange", setStatus, false); battery.addEventListener("chargingchange", setStatus, false); battery.addEventListener("chargingtimechange", setStatus, false); battery.addEventListener("dischargingtimechange", setStatus, false); }
  21. 21. NOTIFICATION
  22. 22. var notification = navigator.mozNotification; notification.createNotification( "See this", "This is a notification", iconURL );
  23. 23. SCREEN ORIENTATION API
  24. 24. // Portrait mode: screen.mozLockOrientation("portrait"); /* Possible values: "landscape" "portrait" "landscape-primary" "landscape-secondary" "portrait-primary" "portrait-secondary" */
  25. 25. VIBRATION API
  26. 26. // Vibrate for one second navigator.vibrate(1000); // Vibration pattern [vibrationTime, pause,…] navigator.vibrate([200, 100, 200, 100]); // Vibrate for 5 seconds navigator.vibrate(5000); // Turn off vibration navigator.vibrate(0);
  27. 27. WEB PAYMENTS
  28. 28. var pay = navigator.mozPay(paymentToken); pay.onsuccess = function (event) { // Weee! Money! };
  29. 29. mozmarket.receipts.Prompter({ storeURL: "https://marketplace.mozilla.org/app/myapp", supportHTML: '<a href="mailto:me@example.com">email me@example.com</a>', verify: true });
  30. 30. DEVICEPROXIMITY
  31. 31. window.addEventListener("deviceproximity", function (event) { // Current device proximity, in centimeters console.log(event.value); // The maximum sensing distance the sensor is // able to report, in centimeters console.log(event.max); // The minimum sensing distance the sensor is // able to report, in centimeters console.log(event.min); });
  32. 32. AMBIENT LIGHT EVENTS
  33. 33. window.addEventListener("devicelight", function (event) { // The lux values for "dim" typically begin below 50, // and the values for "bright" begin above 10000 console.log(event.value); });
  34. 34. PAGE VISIBILITY
  35. 35. document.addEventListener("visibilitychange", function () { if (document.hidden) { console.log("App is hidden"); } else { console.log("App has focus"); } });
  36. 36. Device Storage API Browser API TCP Socket API Contacts API systemXHR PRIVILEGED APIS
  37. 37. DEVICE STORAGE API
  38. 38. var deviceStorage = navigator.getDeviceStorage("videos");
  39. 39. var storage = navigator.getDeviceStorage("videos"), cursor = storage.enumerate(); cursor.onerror = function() { console.error("Error in DeviceStorage.enumerate()", cursor.error.name); }; cursor.onsuccess = function() { if (!cursor.result) return; var file = cursor.result; // If this isn't a video, skip it if (file.type.substring(0, 6) !== "video/") { cursor.continue(); return; } // If it isn't playable, skip it var testplayer = document.createElement("video"); if (!testplayer.canPlayType(file.type)) { cursor.continue(); return; } };
  40. 40. WEB ACTIVITIES
  41. 41. Interacting with the camera
  42. 42. var activity = new MozActivity({ name: "view", data: { type: "image/png", url: ... } }); activity.onsuccess = function () { console.log("Showing the image!"); }; activity.onerror = function () { console.log("Can't view the image!"); };
  43. 43. { "activities": { "share": { "filters": { "type": ["image/png", "image/gif"] } "href": "sharing.html", "disposition": "window" } } }
  44. 44. navigator.mozSetMessageHandler("activity", function (a) { var img = getImageObject(); img.src = a.source.url; // Call a.postResult() or a.postError() if // the activity should return a value });
  45. 45. Future APIs
  46. 46. Resource lock API UDP Datagram Socket API Peer to Peer API WebNFC WebUSB HTTP-cache API Calendar API Spellcheck API LogAPI Keyboard/IME API WebRTC FileHandle API Sync API
  47. 47. Web Apps from Mozilla
  48. 48. Dialer Contacts Settings SMS Web browser Gallery Video Player Music Player E-mail (POP, IMAP) Calendar Alarm Clock Camera Notes First Run Experience Notifications Home Screen Mozilla Marketplace System Updater Localization Support
  49. 49. Web Components & Mozilla Brick
  50. 50. http://mozilla.github.io/brick/
  51. 51. <x-flipbox> <div>I'm the front face.</div> <div>And I'm the back face.</div> </x-flipbox>
  52. 52. // assume that toggleButton and flipBox are already // defined as their respective DOM elements toggleButton.addEventListener("click", function(){ flipBox.toggle(); });
  53. 53. appbar calendar datepicker deck flipbox iconbutton layout slidebox slider tabbar toggle togglegroup tooltip
  54. 54. Get started
  55. 55. https://addons.mozilla.org/firefox/addon/firefox-os- simulator/
  56. 56. FIREFOX OS BOILERPLATE APP https://github.com/robnyman/Firefox-OS-Boilerplate-App
  57. 57. https://marketplace.firefox.com/
  58. 58. https://marketplace.firefox.com/developers/
  59. 59. Trying things out
  60. 60. Go have some fun!
  61. 61. Robert Nyman robertnyman.com robert@mozilla.com Mozilla @robertnyman
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×