Web APIの利用方法

このチュートリアルでは、サンプルアプリケーションを通して、デバイスカメラでの写真撮影ができる MediaDevices API の使用方法を説明します。

Electron TODOアプリの作成

まず、Monacaテンプレートを使用してアプリケーションを作成しましょう。 Monacaダッシュボードから、 新しいプロジェクトを作る → サンプルアプリケーション に移動します。 次に、テンプレートリストから Electron TODOアプリ を選択し、プロジェクト名と説明を入力して、プロジェクトを作成します。

アプリケーション機能

このサンプルアプリケーションは、ToDoリストを作成および管理できます。 ユーザーは、既存の写真をアップロードするか、写真を撮影して追加できます。リストはローカルストレージに保存されます。

このチュートリアルでは、MediaCapture APIを使用して写真を撮る方法の説明に焦点を当てます。

アプリケーションを開くと、ローカルストレージに保存されているアイテムが表示されます。

アプリケーションダッシュボード

新しいアイテムを作成するには、アプリケーションの右側にある + new ボタンをクリックします。 新しいモーダルダイアログが表示されます。 camera ボタンをクリックして、ToDoアイテムの入力、既存の写真のアップロードまたは新しい写真の撮影を行うことができます。

Add New Item

camera ボタンをクリックすると、カメラのビューを持つ別のモーダルダイアログが表示されます。 Capture ボタンを押すと、ボックス内のレンダリングがキャプチャされ、画像として保存されます。

HTMLの説明

カメラモーダル

次のコードは、カメラモーダルについてです。 camera ボタンをクリックすると、このモーダルが表示されます。モーダルには、3つのボタンrotatecapturecancel があります。 rotate ボタンは、デバイスが前面カメラと背面カメラの切り替えをサポートしている場合にのみ表示されます。 video要素(id=video-container)は、内蔵のカメラからの映像をストリーミングするために使用されています。

JavaScriptの説明

グローバル変数宣言

カメラ機能に関する重要な変数を簡単に見てみましょう。

  • isFrontCamera: フロントカメラとリアカメラを切り替えるために使用されます。

  • FRONT_CAMERA: mediaDevices APIの facingMode Enum のフロントカメラ値を保存するために使用されます。

  • REAR_CAMERA: mediaDevices APIの facingMode Enum の背面カメラ値を保存するために使用されます。

mediaDevices API サポートの確認

次のコードは、(1)mediaDevices APIがサポートされているかどうかを確認し、 (2)デバイスがAndroidでrearカメラをデフォルトとして使用している場合は rotate ボタンをオンにします。

カメラのオン/オフ

MediaStream を生成するメディア入力の使用許可をユーザーに求めるために、getUserMedia()を使用します。 ストリームには、ビデオトラック(カメラ、ビデオ録画デバイス、画面共有サービスなど)、オーディオトラック、他のトラックタイプを含めることができます。詳細については、こちらの 公式ドキュメント を参照してください。

この関数は Promise を返し、 MediaStreamConstraints オブジェクトをパラメーターとして受け入れます。

次のコードでは、幅と高さを 250 ピクセルに指定し、指定された引数に基づいてカメラに面するモードを設定します。 カメラデバイスが正常に接続されると、 Media Stream オブジェクトが返され、video 要素に割り当てられます。

カメラをオンにするには、トラックに関連付けられているすべてのソースを停止する必要があります。

次の機能は、カメラを前面と背面に切り替えます。

写真を撮る

ビデオ ストリーム/トラックから写真を撮るには、まず canvas 幅と高さをvideoContainerと合わせます。 次に、すべてのトラックを停止し、最後のトラックを画像形式に変換します。

See Also:

最終更新

役に立ちましたか?