CaptureError.CAPTURE_INTERNAL_ERR на Android при попытке использовать Capture.captureImage

Я пытаюсь написать гибридное приложение для Android, используя обновление 3 VS 2013 и расширение гибридного приложения для нескольких устройств (Cordova v3.5.0). Все работает хорошо, кроме плагина Media Capture. Я вызываю navigator.device.capture.captureImage(MediaCaptureSuccess, MediaCaptureError, {limit: 3}), который открывает приложение камеры. Я могу сделать снимок, но когда я нажимаю «ОК» на устройстве, мой обратный вызов ошибки выполняется с CaptureError.CAPTURE_INTERNAL_ERR без какой-либо другой информации. Я попытался переключиться на [email protected] (в настоящее время использую 0.3.1), но когда я пытаюсь скомпилировать, я получаю ошибку плагина, когда он пытается его получить. Я искал подсказки в выводе отладки, и единственное, что я нашел, это следующая строка «Неизвестное разрешение android.permission.RECORD_VIDEO в пакете ...», но это похоже на действительное разрешение пользователя. Когда я смотрю на файл capture.java, сгенерированный сборкой, я вижу, что эта ошибка возвращается, если возникает исключение IOException.

У кого-нибудь есть какие-либо предложения о том, как это исправить или что проверить дальше?


person dp22193    schedule 08.10.2014    source источник


Ответы (1)


Попробуйте этот плагин

Конфигурация:

<vs:feature>[email protected]</vs:feature>

JS:

  navigator.camera.getPicture(onSuccess, onFail, {
        quality: 30,
        destinationType: Camera.DestinationType.FILE_URI,
        saveToPhotoAlbum: true
    });
person Markus_DE_HH    schedule 10.10.2014
comment
Глядя на код этого плагина, я вижу, что у него нет той же проблемы, что и у плагина захвата мультимедиа, и, вероятно, он будет работать. Проблема в том, что я также хочу иметь возможность снимать видео, которые не поддерживаются плагином камеры. Похоже, этот плагин будет работать, потому что он сначала пытается использовать SD-карту, а плагин для захвата мультимедиа - нет. Основная проблема заключается в том, что cordova.getActivity().getCacheDir(), вызванный из getTempDirectoryPath, возвращает /data/data/com.packagename/cache (внутреннее хранилище), а вызов cache.mkdirs() автоматически завершается ошибкой. Проблема с разрешением?? - person dp22193; 10.10.2014