Как сделать снимок с помощью MediaCapture в Enyo (webOS)?
Я новичок в разработке для WebOS, и сейчас я разрабатываю приложение, в котором мне нужно сфотографировать определенного пользователя.
Я искал много ресурсов и сайтов в Интернете, но я не могу найти решение для моей проблемы.
Я следую инструкциям, перечисленным здесь:
Как сделать снимок с помощью командной строки на webOS на сенсорной панели HP?
Я хочу дать понять, что я не хочу делать фотографию из командной строки.
Я попробовал следующее:
А. Включите в мои зависимости.js
"$enyo/../lib/mediacapture/"
Б. В моей сцене
enyo.kind({
name: "MyComponent",
kind: "Pane",
components: [
{
kind: "enyo.MediaCapture",
name: "mediaCapture",
onInitialized: "onImageCaptureInitialized",
onError: "onImageCaptureError",
onImageCaptureComplete: "onImageCaptureComplete"
}
],
...
..
.
});
C. Внутри функции onCreate
create: function () {
this.inherited(arguments);
this.$.mediaCapture.initialize(this.$.ViewPort);
},
D. Внутри инициализированного события
onImageCaptureInitialized: function () {
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.$.mediaCapture.load(keyString, formatObj);
}
},
D. Внутри события нажатия определенной кнопки
takePhotoClickEvent: function (inSender) {
this.$.mediaCapture.startImageCapture("/media/internal/CanalCocina/recipe_photo.jpg",
{
"bitrate":128000,
"samplerate":8000,
"width":480,
"height":320,
"mimetype":"image/jpeg",
"codecs":"jpeg"}
);
},
Когда я запускаю приложение на сенсорной панели HP, в консоли появляется следующий журнал:
информация: MediaCapture::ServiceProxy ===== MediaCapture::_initializeMediaServerInstanceSuccess() ...palm://com.palm.mediad.MediaCaptureV3_1814440/, /usr/palm/frameworks/enyo/1.0/framework/lib/mediacture helper/MediaCaptureProxyHelper.js:83 [20111017-16:52:32.906482] информация: MediaCapture::ServiceProxy @@@@@@----------- GRAB ПЕРВОЙ СОБСТВЕННОСТИ -----------@@@@@@, /usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:106 [20111017-16:52:32.913991] info: MediaCapture::ServiceProxy inResponse: {"propertyValues":[{"name":"ready","value":false},{"name":"enabledAudioFormats","value":[{"bitrate":128000,"samplerate":8000,"ширина": 0, "высота": 0, "MimeType": "аудио / vnd.wave", "кодеки":"1"},{"битрейт":256000,"оцифровки":16000,"ширина": 0, "высота": 0, "MimeType": "аудио / vnd.wave", "кодеки":"1"},{"битрейт":705600,"оцифровка":44100,"ширина": 0, "высота ": 0," MimeType ":" аудио / vnd.wave", "кодеки":"1"},{"битрейт": 128000, "оцифровка": 8000, "ширина": 0, "высота": 0, "MimeType": "аудио / vnd.wave", "сотрудничество DECS ":" 1 "}, {" битрейт ": 256000," оцифровка ": 16000," ширина ": 0," высота ": 0," MimeType ":" аудио / vnd.wave " "кодеки":" 1 "}, {" битрейт ": 705600," оцифровка ": 44100," ширина ": 0," высота ": 0," MimeType ":" аудио / vnd.wave", "кодеки":"1"},{"битрейт": 128000, "оцифровка": 8000, "ширина": 0, "высота": 0, "MimeType": "аудио / vnd.wave", "кодеки":"1"},{"битрейт":256000,"оцифровка":16000,"ширина": 0, "высота": 0, "MimeType": "аудио / vnd.wave", "кодеки":"1"},{"битрейт": 705600," SAMPL
Однако, когда приложение пытается загрузить объект mediaCapture, я получаю:
Uncaught TypeError: Невозможно прочитать свойство 'deviceKeys' из неопределенного, source/CCRecipesStep1View.js:186
Я знаю и понимаю, что эта ошибка связана с тем, что приложение пытается получить доступ к несуществующему свойству. В этом случае конкретная строка:
onImageCaptureInitialized: function () {
var keyString;
for(var i = 0; i < this.pb.deviceKeys.length; i++) <<------------ Here
...
..
.
}
Файл MediaCapture.js и инструкции, которые я следую, говорят о " Пакете свойств", я понимаю, что именно здесь вы объявляете свойства, однако я не знаю, как получить ключи устройства, необходимые для загрузки MediaCaptureObject.
Когда кнопка нажата, я получаю:
MediaCapture:: ServiceProxy ####### ----------- СОБЫТИЕ ИЗМЕНИТЬ СВОЙСТВА -----------######vuData, /usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17:07:35.401836] информация: MediaCapture:: ServiceProxy
# ----------- ИЗМЕНЕНИЕ СВОЙСТВ СОБСТВЕННОСТИ ----------- ###### vuData,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17: 07: 35.653586] информация: MediaCapture:: ServiceProxy
# ----------- ИЗМЕНЕНИЕ СВОЙСТВ СОБСТВЕННОСТИ ----------- ###### vuData,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140 [20111017-17: 07: 35.885940] информация: MediaCapture:: ServiceProxy
# ----------- ИЗМЕНЕНИЕ СВОЙСТВ СОБСТВЕННОСТИ ----------- ###### vuData,/usr/palm/frameworks/enyo/1.0/framework/lib/mediacapture/helper/MediaCaptureProxyHelper.js:140
И начать бесконечный цикл: S
Я надеюсь, что вы можете помочь мне. Это приложение очень важно.
Спасибо.
1 ответ
Вы смотрели образцы в 3.0.4 SDK?
Он поставляется с примером приложения MediaCapture, которое делает снимки. Способ получения deviceUri
полностью отличается от того, что вы делаете, метод initialize получает список форматирования в качестве аргумента.