Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Firefox OSアプリ開発が楽しくなるハードウェアAPIの概要と、センサーAPIや音声APIを使った楽器アプリの作例

Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発 第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/03/26 14:00

目次

W3C非標準のAPI

カメラAPI

 カメラAPIは、その名の通りカメラを制御するAPIです。Firefox OSでカメラを制御する方法は、inputタグ、カメラAPI、getUserMediaの3つがありますが、ここではカメラAPIを紹介します。Firefox OSでは、カメラAPIはカメラアプリで使用されています。

 カメラAPIは、OSバージョンがv1.xの場合高い権限が必要としていたので、一般のアプリからは使えません。「Fx0」はOSバージョンがv2.0なので使用できますが、海外で販売されている他の端末では使えない可能性があるので注意が必要です。

 カメラAPIを使う場合パーミッションの設定が必要になります。

manifest.webapp
"permissions": {
    "camera": {
        "description": "Required for accessing cameras on the device."
    }
}

 カメラAPIの使用は少し煩雑です。navigator.mozCamerasがCameraManagerの配列になっていて、CameraManagerからmozCameraオブジェクトを取得、コンフィグ、セットアップ、mozCameraオブジェクトに対していくつかのイベントハンドラを登録して使うことになります。

var manager = navigator.mozCameras;
var opstion = {
    mode: 'picture', // モード
    recorderProfile: 'jpg', // 保存形式
    previewSize: {
        width: previewWidth,
        height: previewHeight
    }.
    pictureSize: {
        width: 1080, // フルHD
        height: 1920 // フルHD
    }
};

// カメラ使用のリクエスト
var promise = manager.getCamera('front', option);
promise.then((params) => {
    // カメラのリクエストが成功した
    (snip)
}, (error) => {
    // カメラのリクエストが失敗した
    (snip)
});

 カメラAPIはメソッドやオブジェクトが多いので使うのも大変ですが、下記の資料を参考に頑張って使ってみてください。

mozCamerasオブジェクトと関連オブジェクト

 MDNの資料だけではわからないことわかりにくいことがあるので、Firefox OSに搭載されているカメラアプリの実装も参考にするといいでしょう。

Firefox OSのカメラアプリ
カメラAPIのインターフェイス定義

Bluetooth

 Bluetoothはもうお馴染みの近距離無線通信規格ですね。Firefox OSでもA2DP/AVRCP/HFPといったオーディオ系プロファイルやファイル転送をサポートしており、将来的にはHIDやBLEのサポートも予定されています。

 現在は内部アプリ向けのAPIとなっており、一般のアプリからは使用できないようになっています。今回は一般向けに使えないのでコード例は示しません。

NFC

 NFCはBluetoothよりもさらに短い距離での通信を定義した規格です。交通系ICのように接触に近い形で使うものになります。Firefox OSでは画像や音声、連絡帳データを交換する際に、BluetoothのペアリングをNFCで行うNFC Bluetooth Handoverをサポートしています。Android Beamと互換なのでAndroidともファイルの交換が行えます。

 NFCも現在は内部アプリ向けのAPIになっています。一般のアプリからは使用できないのでコード例は示しません。

ストレージ

 スマートフォンでは、内部ストレージやSDカードに格納された画像や音声を扱うことがあります。Firefox OSはFileSystem APIをサポートしていません。単にファイルを扱うだけならIndexed DBでよかったり、FileSystem APIが活きるのはブラウザの外との協調にあるというのもあるので優先度が低いのでしょう。Firefox OSでは内部ストレージやSDカードにあるファイルを読み込むのに、getDeviceStorageを使用します。

 getDeviceStorageではファイルのカテゴリに応じて記憶媒体名を定義しています。読み込みたいファイルの記憶媒体名を指定してファイルへのアクセスを求めることになります。

  • music:ミュージックとサウンド
  • pictures:画像
  • sdcard:SDカードデバイス
  • videos:動画

 getDeviceStoregeを使用するにはパーミッションの設定が必要です。これは記憶媒体名ごとに設定する必要があります。

manifest.webapp
"permissions": {
    "device-storage:videos":{ "access": "readonly" },
    "device-storage:pictures":{ "access": "readwrite" }
}

 getDeviceStorageは、ファイルへのアクセスを提供するDeviceStorageオブジェクトを返します。DeviceStorageオブジェクトを使うとファイルの追加、削除、Fileオブジェクトの取得が行えます。

var pics = navigator.getDeviceStorage('pictures');

// ファイルを列挙
var cursor = pics.enumerate();

cursor.onsuccess = function () {
    var file = this.result;

    (snip)

    // 最後までイテレーションされていなければ次へ進む
    if (!this.done) {
        this.continue();
    }
}

 パーミッションの種類や記憶領域名、メソッド名など、getDeviceStoregeには多くの関連情報があるので、使用の際は以下のURLを参考にしてください。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 藪下 正美(ヤブシタ マサミ)

     株式会社グローバルサイバーグループ マネージャ。  大阪のソフトウェア開発会社で主に携帯電話・スマートフォンのドライバからアプリまで幅広く開発に従事。  関東支社に転属後はスマートフォン・タブレット向けのアプリ開発を主に担当。  2012年終わりごろからFirefox OSに注目しコミュニテ...

バックナンバー

連載:Firefox OS搭載スマホ「Fx0」でつくろう! はじめてのFirefox OSアプリ開発
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5