Weitere ähnliche Inhalte Ähnlich wie 中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS (20) Mehr von Masami Yabushita (17) Kürzlich hochgeladen (10) 中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS2. はじめに
• 今回は20分でざっとFirefox OSでのセンサ類の使い方を見ていきます
• 時間がないので詳しい話はしません
• 全部MDNとgaiaのソースコードから収集できる情報なので詳しいことは調べま
しょう
– https://developer.mozilla.org/
– https://github.com/mozilla-b2g/gaia/
• 今回の話のほとんどはCodezineの記事のおさらいなのであとで見てね!
– http://codezine.jp/article/detail/8540
• 組み込み屋さんなのでもっと中身に興味があります! という方は大雑把な
構造のお話やってるので以前のプレゼン見てください
– http://www.gcg.bz/labo_blog/?p=904
– http://www.slideshare.net/aoitan/firefox-os-50967714
7. NoirさんやUemmra3さんも
• FxOSコードリーディング
– 月に一回ぐらいMozilla Japanオフィスの片隅でわいわいソースコードを読んでいる人
たちの集まり
– FxOSのソースコードに興味がある人をつなぎたい。交流したい
– 本拠地 → https://www.facebook.com/groups/fxos.code.reading/
– 看板 → http://reading.fxos.org/
– 活動が垣間見れるところ → https://github.com/FxOS-Code-Reading-Group
10. Firefox OSで触れるセンサ触れないセンサ
• 触れるセンサ
– 近接センサ
– 環境光センサ
– デバイス方向
– バッテリー
– 地理位置
– スクリーン方向
– getUserMedia
– カメラ
• (Mozillaかキャリアかメーカしか)触れないセンサ
– NFC v2.2からPrivileged
– Bluetooth v2.5かv3.0からPrivilegedの予定
– Fx0から触れないので今回は解説しません
23. バッテリー
• battery APIは電池の残量や充電状態を監視できます
• すべての端末に存在するしほぼすべてのスマホでは電池残量をどこかしらに
ピクト表示していますね
• Firefox OS (というよりブラウザ) ではnavigatorオブジェクトのbatteryプロパティ
にイベントリスナを登録して値を参照します
• battery APIには参照できる値が四つあります
– 電池残量
– 充電状態
– 満充電までの時間
– 枯渇までの時間
24. battery
var battery = navigator.battery || navigator.mozBattery;
battery.addEventListener("levelchange", updateBatteryStatus);
battery.addEventListener("chargingchange", updateBatteryStatus);
battery.addEventListener("chargingtimechange", updateBatteryStatus);
battery.addEventListener("dischargingtimechange", updateBatteryStatus);
29. geolocation
var watchId;
var geo = navigator.geolocation;
// まず現在地を取る
geo.getCurrentPosition((pos) => {
// 精度を上げるために監視を始める
watchId = geo.watchPosition((position) => {
(snip)
}, (error) => {
(snip)
}, {enableHighAccuracy: true});
}, (error) => {
errorPrint(error);
});
32. lockOrientation
if (/* some condition */) {
window.screen.lockOrientation('landscape');
} else {
window.screen.unlockOrientation();
}
38. メディアストリームの取得
var constraint = {
video: true,
audio: false
};
navigator.getUserMedia(constraint, (mediaStream) => {
var video = document.getElementById('video'); // 任意のビデオ要素
video.src = window.URL.createObjectURL(mediaStream);
}, (error) => {
if (error === NOT_SUPPORTED_ERROR) {
// 指定のリソースをサポートしていないエラー
(snip)
}
});
43. カメラAPI
var manager = navigator.mozCameras;
var opstion = {
mode: 'picture', // モード
recorderProfile: 'jpg', // 保存形式
previewSize: {
width: previewWidth,
height: previewHeight
},
pictureSize: {
width: 1080, // フルHD
height: 1920 // フルHD
}
};
44. カメラAPI
// カメラ使用のリクエスト
var promise = manager.getCamera('front', option);
promise.then((cameraData) => {
// カメラのリクエストが成功した
(snip)
}, (error) => {
// カメラのリクエストが失敗した
(snip)
});
45. オートフォーカスと撮影
var focus = cameraData.camera.autoFocus();
focus.then((success) => {
return cameraData.camera.takePicture({pictureSize: { width: 1080, height:
1920 }});
}).then((picture) => {
(snip)
});