2013-11-02 2 views
9

Я разрабатываю приложение phonegap. И использование камеры в нем. Он работал несколько дней назад. За последние несколько дней я сделал много изменений, и теперь камера работает неправильно. Он открывает камеру, но когда я делаю фото, то из приложения камеры. когда я нажимаю OK, перезагружает приложение.Камера в приложении phonegap. перезапуск приложения

Я не понимаю, как это делается. На самом деле я не могу понять, может ли он перезагрузиться из моего приложения phonegap. JS или он может быть перезагружен только из Java-кода android.

Я использую этот код для камеры:

function takePhoto() { 
navigator.camera.getPicture(onCameraPicSuccess, onCameraPicFail, {quality: 50, 
    destinationType: Camera.DestinationType.FILE_URI 
}); 

function onCameraPicSuccess(imageURI) { 
    alert("coming here in pic success"); 
    var img = '<div style="padding:4px; margin:10px; border: solid 2px #666;float: left; width:30%"><img src="' + imageURI + '" width="100%" /></div>'; 
    $('#images_area').append(img); 
} 

function onCameraPicFail(message) { 
    alert('Failed because: ' + message); 
} 

Таким образом, любая мысль, что почему приложение. перезагрузится при использовании приложения для камеры. через выше код? Мой JS-код не имеет заставки, но у меня есть Java-код. Поэтому после нажатия кнопки ОК камеры, я вижу приложение. перезапущен с привязкой back button и привязкой menu button не работает некоторое время.

Так что не уверен, что происходит. Если у вас есть такой опыт или какая-либо идея, тогда вы можете делиться друг с другом.

Если есть что-то еще, я должен сказать. Тогда дайте мне знать.


После этого еще несколько поиска на stackoverflow.com, я узнал, что вопрос о андроиде, так как андроид убить приложение. в фоновом режиме, если у него меньше памяти. Поэтому необходимо освободить память e.t.c. Но я заметил, что приложение отлично работает, когда я использую JQuery Mobile Forms. Но после того, как я изменил его на обычай, эта проблема с камерой появляется. Итак, если это проблема с памятью, то почему она возникла при удалении мобильных форм jquery и выполнении пользовательской работы. Фактически, теперь приложение еще более плавное с пользовательской работой. Поэтому я смущен тем, что проблема памяти или что-то еще? И как решить этот тип приложения. разработанный в телефоне.

ответ

4

PhoneGap камера API вызывает приложение камеры при использовании

navigator.camera.getPicture 

Пожалуйста, прочтите здесь - http://docs.phonegap.com/en/edge/cordova_camera_camera.md.html#Camera

Это толкает ваше приложение в фоновом режиме, и это может привести к вашему приложению быть убитым, если недостаточно памяти.

Если вы не хотите, чтобы ваше приложение вошло в фоновый режим во время съемки камеры, вам необходимо использовать плагин камеры переднего плана. Посмотрите на это here

Возможно, вам потребуется изменить его в соответствии с вашими требованиями.

+0

, но, возможно, мне тоже понадобится плагин для iOS? – Hafiz

+0

+1 за то, что показал мне другой способ, но не смог проверить его, поэтому я дам вам знать, пробовав путь – Hafiz

+0

, неспособный запустить этот плагин, после включения его в проект, как сказано на его странице проекта, не удалось скомпилировать и сделать build – Hafiz

1

Это может быть проблема с памятью. Вы можете увеличить размер кучи приложения, установив android:largeHeap="true" в файл манифеста приложения.

+0

ни в разница, при использовании камеры, у нее такая же проблема, перезагрузка приложения. после нажатия кнопки OK после захвата изображения. – Hafiz

0

В андроидском манифестном файле установлен режим запуска операции «singleTask» или «singleInstance».
Может быть, ваше приложение запускает свою деятельность в несколько раз.

+0

попробовал как singleTask, так и singleInstance, но не получил решение – Hafiz

0

см. Эту ссылку, объясняет, что это на самом деле не связано с телефонной связью, но с действиями android. Он предлагает использовать плагин под названием Foreground Camera Plugin.

PhoneGap camera restarts the application

1

Вы не должны создавать всю камеру пользовательского переднего плана, вам просто нужно указать агрессивный сборщик мусора, который вы хотите восстановить старое намерение вместо того, чтобы начать новый экземпляр. Попробуйте установить флаг на сэкономленные намерения в плагине камеры:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

Смотрите мой пост здесь: https://stackoverflow.com/a/29630548/2782404

Кроме того, увеличение размера кучи и использования singleTask/SingleInstance не работает для меня

Смежные вопросы