SlideShare a Scribd company logo
進撃の⽕狐裏話
-Cameraデバイスは使えません-
@Kaikias_lys
自己紹介
濵田 怜実
Twitter: @Kaikias_lys
Android関係のお仕事やってます。
最近は提督になったらしい。
C84ではこんなもの展示してました
XperiaZ (C6603) + JCROM すーぱーそに子仕様
それはともかく…
C84でこんな本出しました
Mozilla Japanさんにも10冊納品されたとか…?
完売御礼!
完売御礼!
ありがとうございます!
ありがとうございます!
事の始まり
この辺がFirefox OS本を書かないかと言って
きた
ホイホイ乗った
結果:ごらんの有様だよ!
担当箇所
デバイス周りのところ
(10、11、12章+3章の後半(実機部分))
10章:Camera
11章:GPS
12章:Vibrator
3章後半:実機での開発環境構築方法
合計11ページ
(本文書いた7人のうちで一番多い(想定外))
前途多難?
面白そうだと乗ったは良いものの…
実はJavascriptを知らない
HTML5?何それおいしいの?
そもそもFirefox OSにはあんまり期待していない
出るのが遅すぎ
?
意外と…
やってみたら意外と簡単
GPSとVibratorは楽勝
ところが…
Cameraが曲者
どういうことか?
Camera API
アプリの許可設定 / App permissions
https://developer.mozilla.org/en-US/docs/WebAPI/Camera
https://developer.mozilla.org/en-US/docs/Web/Apps/App_permissions
つまり、
CameraデバイスをAndroidのように直接叩く
アプリはFirefox OSではcertified applications
でしか作れない!
一般の開発者は(現状)Cameraデバイスを直
接叩いたアプリケーションを作れない!
=
カメラ系アプリのDeveloper全滅
妥協案
Camera API
要約
Cameraを使いたかったらWeb Activities APIを使え。
葛藤
certified applicationでなければ使えないもの
を解説して意味があるか?
残念アプリになるが、Web Activities (pick)を
使って解説するか?
今回はWeb Activitiesで勘弁してやろう!
という事で、進撃の⽕狐ではCamera=Web Activities (pick)
を使って解説しました。(実際はページ数が足りなかっただけ)
でもそれでは面白くないので
今日はcertified applicationの
作り方を解説します
必要なもの
UbuntuのインストールされたPC or Mac
=Firefox OSのビルド環境
Firefox OS用のアプリ開発環境
KEONとかPEAK、Nexus Sなどの実機(あれ
ば)
やる気(必須)
手順
Firefox OSのbuild環境を整える[1]
githubからB2GのSourceをcloneする[2]
ターゲットデバイスにあわせて./config.shす
る
certified applicationを作る
buildする
端末に焼く
[1] https://developer.mozilla.org/ja/docs/Mozilla/Boot_to_Gecko/Building_and_installing_Firefox_OS
[2] git://github.com/mozilla-b2g/B2G.git
簡単ですね!
これだけじゃ何なので…
Cameraアプリをpreinstallする
Web Activities版と同様のPreviewを表示して
撮影できるだけのアプリを作ってpreinstallし
ます
manifest.webappを変更する
manifest.webappにpermissionとtypeを設定す
る
"permissions": {
"device-storage:pictures": {
"access": "readwrite“
},
"camera": {},
"storage": {}
},
"type": "certified",
htmlを変更する
今回は単純にCamera APIを叩くだけのアプリ
なので簡単に
<body>
<h1>Camera demo</h1>
<div id="content">
<video></video>
<button id="capture-btn">capture</button>
</div>
<script type="text/javascript" src="js/app.js"></script>
</body>
app.jsをゴリゴリ書く
var storage = navigator.getDeviceStorage('pictures');
var display = document.getElementsByTagName('video')[0];
var cameras = window.navigator.mozCameras;
var options = {
camera: cameras.getListOfCameras()[0]
};
var pictureOptions = {
rotation: 0,
pictureSize: null,
fileFormat: null
};
var captureBtn = document.getElementById('capture-btn');
var cameracontrol = null;
function onStreamReady(stream) {
display.mozSrcObject = stream;
display.play();
};
function onFocusPossible(success) {
if(success){
console.log("The image has been focused");
}else{
console.log("The image has not been focused");
}
};
function onFocusNotPossible(error) {
console.log("The camera is not able to focus anything");
console.log(error);
};
function onSuccess(camera) {
var size = camera.capabilities.previewSizes[0];
cameracontrol = camera;
camera.getPreviewStream(size, onStreamReady);
camera.autoFocus(onFocuesPossible, onFocusNotPossible);
};
function onError(error) {
console.warn(error);
};
function onPictureTaken(blob) {
storage.addNamed(blob, 'test.jpg');
cameracontrol.resumePreview();
};
cameras.getCamera(options, onSuccess, onError);
captureBtn.addEventListener('click', function() {
pictureOptions.pictureSize = cameracontrol.capabilities.pictureSizes[0];
pictureOptions.fileformat = cameracontrol.capabilities.fileFormats[0];
cameracontrol.takePicture(pictureOptions, onPictureTaken);
}
);
certified application
Simulatorにinstallするとこうなります
どこに入れてbuildすればいいか?
$B2Groot/gaia/apps/ の下
放り込んでおくだけでbuild対象になるので楽!
アプリケーションの構成
通常のFirefox OS用アプリケーションと同じ
でいけるっぽい?
buildしたROMを焼いて起動する
preinstallされてる!
こいつ、動くぞ!?
左:プレビュー、右:撮影した画像
Camera applicationに潜む罠
KEONとNexus Sで挙動が違う
navigator.mozCameras() の応答
KEON
JavaScript Error: "TypeError: navigator.mozCameras is null"
{file: "app://orecamera.gaiamobile.org/js/app.js" line: 6}
Nexus S
No problem.
navigator.mozCameras()はCameraを使用する場合に最初に呼ぶので
動かないと困る。
ただ、標準のCameraアプリでもCallしているように⾒えるので、
何か手順を踏む必要があるのかも?(未調査)
Error
Nexus Sでは一⾒正しく動くように⾒えるが、
PreviewScreenが90度回転した状態で表示さ
れる。
→このPPTのScreenShotはcssでrotateして
無理やり解決している
バグっぽい気がするけど…Nexus Sでしか確認で
きてないので良くわからない。
Error
autofocusが利かない
Callする位置が違う?
function onSuccess(camera) {
var size = camera.capabilities.previewSizes[0];
cameracontrol = camera;
camera.getPreviewStream(size, onStreamReady);
camera.autoFocus(onFocuesPossible, onFocusNotPossible);
};
注意?
端末にbuildしたimageを焼く場合、
userdata.imgも焼く必要がある?
preinstallのアプリケーションが増えた場合は焼か
ないと⽴ち上がらなかった
まとめ
普通の開発者でも環境さえ揃っていれば
certified applicationを作って動かす事は可能
課題
debug方法
いちいちbuildするのは面倒
ご清聴ありがとうございました。

More Related Content

What's hot

Summercamp2020 group1
Summercamp2020 group1Summercamp2020 group1
Summercamp2020 group1
openrtm
 
天体を静止画として 長時間撮影できる装置 の紹介
天体を静止画として長時間撮影できる装置 の紹介天体を静止画として長時間撮影できる装置 の紹介
天体を静止画として 長時間撮影できる装置 の紹介
Masaki Otsuki
 
Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2
三七男 山本
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本
 
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
Yuma Ohgami
 
20190828 sd by kitazaki_t0
20190828 sd by kitazaki_t020190828 sd by kitazaki_t0
20190828 sd by kitazaki_t0
Ayachika Kitazaki
 
Rosjp37 live ros
Rosjp37 live rosRosjp37 live ros
Rosjp37 live ros
Tatsuya Fukuta
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
Yuma Ohgami
 
ET2016展示パネル
ET2016展示パネルET2016展示パネル
ET2016展示パネル
三七男 山本
 

What's hot (9)

Summercamp2020 group1
Summercamp2020 group1Summercamp2020 group1
Summercamp2020 group1
 
天体を静止画として 長時間撮影できる装置 の紹介
天体を静止画として長時間撮影できる装置 の紹介天体を静止画として長時間撮影できる装置 の紹介
天体を静止画として 長時間撮影できる装置 の紹介
 
Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2Ruby関西76 gr citrusの使い方#2
Ruby関西76 gr citrusの使い方#2
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
 
20190828 sd by kitazaki_t0
20190828 sd by kitazaki_t020190828 sd by kitazaki_t0
20190828 sd by kitazaki_t0
 
Rosjp37 live ros
Rosjp37 live rosRosjp37 live ros
Rosjp37 live ros
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
 
ET2016展示パネル
ET2016展示パネルET2016展示パネル
ET2016展示パネル
 

Similar to 進撃の火狐裏話 -cameraデバイスは使えません-

ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
kinneko
 
LINQ、Select連弾ってやります?
LINQ、Select連弾ってやります?LINQ、Select連弾ってやります?
LINQ、Select連弾ってやります?
Ryota Murohoshi
 
第9回 北関東3県工業高校生徒研究発表大会
第9回 北関東3県工業高校生徒研究発表大会第9回 北関東3県工業高校生徒研究発表大会
第9回 北関東3県工業高校生徒研究発表大会
Masaki Kobayashi
 
Gorilla.vim#6
Gorilla.vim#6Gorilla.vim#6
Gorilla.vim#6
MasatakaHigashijima
 
PhotonCloudで一ヶ月ゲーム作った話
PhotonCloudで一ヶ月ゲーム作った話PhotonCloudで一ヶ月ゲーム作った話
PhotonCloudで一ヶ月ゲーム作った話
Hiroto Imoto
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)
shimadah
 

Similar to 進撃の火狐裏話 -cameraデバイスは使えません- (6)

ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
LINQ、Select連弾ってやります?
LINQ、Select連弾ってやります?LINQ、Select連弾ってやります?
LINQ、Select連弾ってやります?
 
第9回 北関東3県工業高校生徒研究発表大会
第9回 北関東3県工業高校生徒研究発表大会第9回 北関東3県工業高校生徒研究発表大会
第9回 北関東3県工業高校生徒研究発表大会
 
Gorilla.vim#6
Gorilla.vim#6Gorilla.vim#6
Gorilla.vim#6
 
PhotonCloudで一ヶ月ゲーム作った話
PhotonCloudで一ヶ月ゲーム作った話PhotonCloudで一ヶ月ゲーム作った話
PhotonCloudで一ヶ月ゲーム作った話
 
AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)AllwinnerタブレットのOSを作ってみる(中編)
AllwinnerタブレットのOSを作ってみる(中編)
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (14)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

進撃の火狐裏話 -cameraデバイスは使えません-