したがって、これを luna-sends で行うのは少しトリッキーで、技術的にサポートされていません。
おそらく、デバイスの次の場所にある MediaCapture ライブラリにアクセスしたいと思うでしょう。
/usr/palm/frameworks/enyo/0.10/framework/lib/mediacapture
enyo アプリに含めるには、depends.js に以下をドロップします。
"$enyo-lib/mediacapture/"
関係する主な手順は 3 つあります。
- コンポーネントの初期化
- 画像のキャプチャ
- デバイスのアンロード。
サンプルは次のとおりです。
シーンでコンポーネントを宣言する
{
kind: "enyo.MediaCapture", name:"mediaCaptureObj",
onLoaded:"_setUpLoadedState", onInitialized:"_setUpInitializedState",
onImageCaptureStart:"_onImageCaptureStart", onImageCaptureComplete:"_onImageCaptureComplete",
onAutoFocusComplete:"_onAutoFocusComplete", onError:"_handleError",
onElapsedTime:"_onElapsedTime", onVuData:"_onVuDataChange", onDuration:"_onDuration"
}
初期化メソッドを呼び出します:
this.$.mediaCaptureObj.initialize(this.$.ViewPort);
onInitialized コールバックで
プロパティ バッグを使用して、使用可能なデバイスの数を確認します。通常、説明は「カメラ/カムコーダー」、「フロント マイク」、「ユーザー向けカメラ」です。
var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++)
{
if(this.pb.deviceKeys[i].description.indexOf("Camera/Camcorder") >= 0)
{
keyString = this.pb.deviceKeys[i].deviceUri;
break;
}
}
if(keyString)
{
var formatObj = {
imageCaptureFormat: this.pb[keyString].supportedImageFormats[0]
};
this.$.mediaCaptureObj.load(keyString, formatObj);
}
写真を撮ります。
var obj = {"exifData":"{\"make\": \"Palm\", \"model\": \"Pre3\", \"datetime\": \"2011:05:19 10:39:18\", \"orientation\": 1, \"geotag\": {}}","quality":90,"flash":"FLASH_ON"};
this.$.mediaCaptureObj.startImageCapture("", obj);
デバイスをアンロードします:
this.$.mediaCaptureObj.unload();
古い JS フレームワークでこれを行うには、
https ://developer.palm.com/content/api/reference/javascript-libraries/media-capture.html を参照してください。
現在、luna-send で同様のことができますが、技術的にサポートされていないと思います。メディア キャプチャ サービスなどの起動/維持に問題があるかもしれませんが、試してみたい場合は、次のような方法があります。
1. メディア サーバー インスタンスを取得します--- これはポート インスタンス番号を返します
luna-send -a your.app.id -i palm://com.palm.mediad/service/captureV3 '{"args":["subscribe":true]}'
これにより、次のようなポート番号を含むキャプチャ サービスの場所が返されます。
{"returnValue":true, "location":"palm://com.palm.mediad.MediaCaptureV3_7839/"}
これはサブスクリプションであるため、リクエストを強制終了しないでください。新しいターミナルを開くだけです。
2. 新しいターミナルを開きます。ステップ 1 で返された「場所」を新しいサービス URI として使用します。
luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/load '{"args":["video:1", {"videoCaptureFormat":{"bitrate":2000000,"samplerate":44100,"width":640,"height":480,"mimetype":"video/mp4","codecs":"h264,mp4a.40"},"imageCaptureFormat":{"bitrate":0,"samplerate":1700888,"width":640,"height":480,"mimetype":"image/jpeg","codecs":"jpeg"},"deviceUri":"video:1"}]}'
君は見るべきだ:
{"returnValue":true}
呼び出しが正しく完了した場合。この呼び出しは ctrl+c で安全に終了できます。
3. 写真を撮ります。(最後の呼び出しから ctrl+c を押して、ここで引数を指定するだけです)
luna-send -a your.app.id -i palm://com.palm.mediad.MediaCaptureV3_7839/startImageCapture '{"args":["", {"exifData":"{\"orientation\": 1, \"make\": \"HP\", \"model\": \"TouchPad\", \"datetime\": \"2011:09:22 15:34:36\", \"geotag\": {}}","quality":90,"flash":"FLASH_DISABLED","orientation":"faceup"}]}'
繰り返しますが、次のように表示されます。
{"returnValue":true}
呼び出しが正しく完了した場合。
シャッター クリック音が聞こえ、写真アプリのフォト ロールに画像が表示されます。