組み込みでも使えるFirefox OS
Upcoming SlideShare
Loading in...5
×
 

組み込みでも使えるFirefox OS

on

  • 995 views

2014年4月9日にhtml5j自動車部で講演したスライドです。

2014年4月9日にhtml5j自動車部で講演したスライドです。
Firefox OSにWebAPIを追加するためには何をすればいいかをまとめました。

Statistics

Views

Total Views
995
Views on SlideShare
955
Embed Views
40

Actions

Likes
4
Downloads
8
Comments
0

3 Embeds 40

https://twitter.com 26
https://mj89sp3sau2k7lj1eg3k40hkeppguj6j-a-sites-opensocial.googleusercontent.com 9
http://s.deeeki.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

組み込みでも使えるFirefox OS 組み込みでも使えるFirefox OS Presentation Transcript

  • 組み込みでも使える Firefox OS Mozilla Japan テクニカルマーケティング 清水智公 (nshimizu@mozilla-japan.org) html5j 自動車部 2014/04/08
  • about:me 2
  • 清水智公(しみずのりただ) • Mozilla Japan 
 テクニカルマーケティング • mozilla.jp の中の人 • 2013年4月より現職 • Twitter: @chikoski • http://slideshare.net/chikoski/ 3
  • about:mozilla 4
  • FFiirreeffooxx を よろしくね!
  • 6
  • 7
  • about:Firefox OS 9
  • 10
  • 多数企業との共同開発・製品化 11 • 主要 18 キャリアが賛同 • チップ&端末メーカー • Qualcomm, ARM • ZTE, Alcatel, LG, Huawei, Sony • Foxconn, Panasonic
  • 各国で順次展開中 12 • スペイン、ポーランド • コロンビア、ベネズエラ • ドイツ、ブラジル、
 メキシコ、ペルー、ウルグアイ • ハンガリー、ギリシャ、
 セルビア、モンテネグロ • イタリア
  • • 商用端末3機種 • ZTE Open • Alcatel One Touch Fire • LG Fireweb • 開発端末 / PC • Geeksphone Keon /Peak • APC (VIA) Paper /Rock 発売中の端末 13
  • Firefox OS 端末販売状況 • ベネズエラ(Telefónica@2013/10)
 スマートフォン販売の12% • コロンビア(Telefónica@2013/10)
 スマートフォン販売の9% • ウルグアイ(Movistar@2013/12)
 スマートフォン販売の30% 14
  • 15 ハードウェア 最小構成 CPU 1GHz, single-core, ARM Cortex A5 互換 ストレージ 汎用:オンボード256MB、スマホ:トータルで4G システムRAM 128MB ディスプレイ 262K色、HVGA、マルチタッチ(2点は必要) GPU WebGLが利用可能、H.264動画を30FPSで描画可能 物理ボタン ホーム、電源、ボリューム
  • 16 ハードウェア サポートしているバージョン チップセット Qualcomm 7727, 7727A, 8210, 8212, 8225, 8926 Spreadtrum SC6821, SC7710, SC7715 解像度 HVGA, WVGA, FWVGA, 720P NFC Broadcom 20793S NFC Controller GPS A-GPS
  • ハードウェア コードネーム CPU RAM ROM Alcatel One Touch Fire hamachi, buri Qualcomm MSM 7227A 1GHZ 256MB 512MB ZTE Open ikura Qualcomm MSM 7225A 800Mhz 256MB 512MB LG Fireweb leo Qualcomm 1GHz 512MB 4GB Nexus4 nexus-4 Qualcomm Snapdragon S4Pro 1.5GHz quad-core 2GB 8 / 16GB Foxconn InFocus flatfish A31(Arm Coretex A7) Quad-Core 1.0GHz 2GB 16GB Spreadtrum SC6821 tarako Coretex A5 1GHz 128MB 2GB Flame the reference device Qualcomm MSM8210 Snapdragon, 1.2GHz 2core 256MB - 1GB 8GB
  • 18
  • Firefox OS vs Android 19 カーネル & HAL Web Platform AppFramework ! ! Android
 Runtime Dalvik WebKit Java アプリ ブラウザ アプリ Native Library Web アプリ Web アプリ Packaged Webアプリ Gecko DeviceAPI SystemAPI ライブラリ SGL etc. Native Interface カーネル & HAL
  • 20
  • 21
  • 22
  • 23 プロセス 説明 b2g Content process の親 rild Radio Interface Layerを提供 rildproxy rildのクライアント netd ネットワークインタフェースを設定 wpa_supplicant WPAのサプリカント dbus_daemon DBUSを提供。Bluetooth通信に利用
  • sysfsの利用例 FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", 
 "r"); double capacity = 
 dom::battery::kDefaultLevel * 100; if (capacityFile) { fscanf(capacityFile, "%lf", &capacity); fclose(capacityFile); } 24
  • • Hosted (Web 読み込み型) • 従来のWebと同じ権限 • オフライン対応アプリも開発可能 • Packaged (ダウンロード型) • 従来のスマホアプリに相当 • Hostedアプリの権限+ 追加権限 • マーケット審査 Firefox OSアプリ 25 Packaged Web アプリ Hosted
 Web アプリ
  • • Firefox OS の管理する
 リソースに対する操作 • ハードウェアの操作 • 通知のコントロール • etc • JavaScript から呼び出す Web API 26
  • 現在提供されているWeb API • コミュニケーション
 Network Information API, Bluetooth, Mobile Connection API, Network Stats API, TCP Socket API, Telephony, WebSMS, WiFi Information API • ハードウェアアクセス
 Ambient Light Sensor API, Battery Status API, Geolocation API, Pointer Lock API, Proximity API, Device Orientation API, Screen Orientation API, Vibration API, WebFM API, Camera API, Power Management API 27
  • 現在提供されているWeb API(つづき) • データ管理
 FileHandle API, IndexedDB, Contacts API, Device Storage API, Settings API • その他
 Alarm API, Simple Push, Web Notifications, Apps API, Web Activities, WebPayment API, Browser API, Idle API, Permissions API, Time/Clock API 28
  • Vibration API var pattern =
 [100,30,100,30,100,200,200,30,200,30,200,200,
 100,30,100,30,100];
 
 navigator.vibrate(pattern); 
 // Vibrate 'SOS' in Morse. 29
  • 30
  • Vibration API の WebIDL partial interface Navigator { boolean vibrate(unsigned long duration); boolean vibrate(
 sequence<unsigned long> pattern); }; 31
  • Vibrate APIの実装 bool Navigator::Vibrate(
 const nsTArray<uint32_t>& aPattern){ // 諸々の確認作業。省略 hal::Vibrate(aPattern, mWindow); return true; } 32
  • gecko/hal/sandbox/SandboxHal.cpp void Vibrate(const nsTArray<uint32_t>& pattern, 
 const WindowIdentifier &id){ HAL_LOG(("Vibrate: Sending to parent process.")); AutoInfallibleTArray<uint32_t, 8> p(pattern); WindowIdentifier newID(id); newID.AppendProcessID(); Hal()->SendVibrate(p, newID.AsArray(), 
 TabChild::GetFrom(newID.GetWindow())); } 33
  • Geolocation API var locator = navigator.geolocation; // locator は Geolocation オブジェクト locator.getCurrentPosition(function(position){ doSomething(position.coords.latitude, position.coords.longitude); }); 34
  • Geolocation.webidl [NoInterfaceObject] interface Geolocation { [Throws] void getCurrentPosition(PositionCallback successCallback, optional PositionErrorCallback? errorCallback = null, optional PositionOptions options); [Throws] long watchPosition(PositionCallback successCallback, optional PositionErrorCallback? errorCallback = null, optional PositionOptions options); ! void clearWatch(long watchId); }; 35
  • dom/webidl/moz.build WEBIDL_FILES = [ 'AbstractWorker.webidl', 'ActivityRequestHandler.webidl', 'AnalyserNode.webidl', 'AnimationEvent.webidl', (中略) 'Geolocation.webidl', 36
  • dom/bindings/Bindings.conf 'Geolocation': { 'headerFile': 'nsGeolocation.h' }, 37
  • dom/src/moz.build DIRS += [ 'jsurl', 'storage', 'offline', 'json', 'geolocation', 'notification', ] 38
  • dom/src/geolocation/nsGeolocation.h namespace mozilla { namespace dom { class Geolocation; typedef CallbackObjectHolder<PositionCallback, nsIDOMGeoPositionCallback> GeoPositionCallback; typedef CallbackObjectHolder<PositionErrorCallback, nsIDOMGeoPositionErrorCallback> GeoPositionErrorCallback; } } 39
  • dom/src/geolocation/nsGeolocation.cpp NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Geolocation) NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMGeoGeolocation) NS_INTERFACE_MAP_ENTRY(nsIDOMGeoGeolocation) NS_INTERFACE_MAP_ENTRY(nsIGeolocationUpdate) NS_INTERFACE_MAP_END NS_IMPL_CYCLE_COLLECTING_ADDREF(Geolocation) NS_IMPL_CYCLE_COLLECTING_RELEASE(Geolocation) NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_4(Geolocation, mCachedPosition, mPendingCallbacks, mWatchingCallbacks, mPendingRequests) 40
  • dom/src/geolocation/nsGeolocation.cpp Geolocation::Geolocation(): mLastWatchId(0){ SetIsDOMBinding(); } Geolocation::~Geolocation(){ if (mService) { Shutdown(); } } nsresult Geolocation::Init(nsIDOMWindow* aContentDom){ // Remember the window if (aContentDom) { nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aContentDom); if (!window) { 41
  • dom/src/geolocation/nsGeolocation.cpp Geolocation::WrapObject(JSContext *aCtx, 
 JS::Handle<JSObject*> aScope){ return 
 GeolocationBinding::Wrap(aCtx, aScope, this); } 42
  • まとめ 43
  • 44 ハードウェア 最小構成 CPU 1GHz, single-core, ARM Cortex A5 互換 ストレージ 汎用:オンボード256MB、スマホ:トータルで4G システムRAM 128MB ディスプレイ 262K色、HVGA、マルチタッチ(2点は必要) GPU WebGLが利用可能、H.264動画を30FPSで描画可能 物理ボタン ホーム、電源、ボリューム
  • 45
  • 46
  • http://mobilepartners.mozilla.org/ 47
  • 48 http://fxos.org/ Firefox OS コミュニティ
  • 49 https://developer.mozilla.org/ MDN
  • 50
  • ご清聴ありがとうございました 51