2013-03-07 1 views
2

Я только что начал с PhoneGap (версия 2.5) и разрабатываю приложение для Android, которое сможет читать QR-код (и, в конечном итоге, теги NFC). Я использую плагин this для чтения QR-кодов. Я установил простое тестовое приложение с кнопкой, которая запускает сканер и p-тег под ним, который отобразит содержимое QR-кода. Это код, который запускает сканерПриложение иногда вылетает при чтении штрих-кодов

scan: function() { 
    try { 
     window.plugins.barcodeScanner.scan(function(args) { 
      console.log("Scanner result: \n" + 
       "text: " + args.text + "\n" + 
       "format: " + args.format + "\n" + 
       "cancelled: " + args.cancelled + "\n"); 
      document.getElementById("info").innerHTML = args.text; 
      console.log(args); 
     }); 
    } catch(ex) { 
     console.log(ex.message); 
    } 
} 

код работает большую часть времени, но иногда это будет крах после того, как код был считан (сканер фиксирует метки и сообщает, что URL/обычный текст/что имеет был обнаружен, но затем сбой, когда он пытается вернуться в мое приложение). Я не нашел особой схемы для сбоев, один и тот же код иногда можно отсканировать, а иногда он сбой. Вот сообщения об ошибках из LogCat.

03-07 13:46:57.478: E/AndroidRuntime(28325): FATAL EXCEPTION: main 
03-07 13:46:57.478: E/AndroidRuntime(28325): java.lang.RuntimeException: Unable to resume activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.access$700(ActivityThread.java:141) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.os.Looper.loop(Looper.java:137) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at java.lang.reflect.Method.invokeNative(Native Method) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at java.lang.reflect.Method.invoke(Method.java:511) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at dalvik.system.NativeStart.main(Native Method) 
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2729) 
03-07 13:46:57.478: E/AndroidRuntime(28325): ... 13 more 
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:849) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.Activity.dispatchActivityResult(Activity.java:5293) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) 
03-07 13:46:57.478: E/AndroidRuntime(28325): ... 14 more 

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

+0

Любые удачи в этом? У меня одинаковая проблема. Я использую тот же плагин BarcodeScanner в приложении Android PhoneGap на ОС Android 4.1.1 и, похоже, получаю почти одинаковые сообщения об ошибках. Я получил ошибки 3 раза подряд и до сих пор не испытывал ошибок - и я не коснулся кода сканирования штрих-кода - ни моего кода, который вызывает его, ни исходного кода Java для него, поэтому я не знаю, Я знаю, что происходит. –

+0

Странно, что вы говорите, что это будет только время от времени. Для меня я никогда не испытывал этой ошибки раньше, и вдруг внезапно сканер штрих-кода не будет работать вообще, ничего не меняя. Я попробовал очистить свое решение, перезагрузив свой телефон и убедившись, что мои настройки телефона были обычным делом ... но до сих пор мне не повезло. Это очень раздражающая тайна! –

+0

Итак, я просто попробовал запустить приложение на HTC One X (гораздо лучший телефон с точки зрения технической спецификации) и нашел, что он работает отлично. Возможно ли, что проблема с производительностью? Возможно, приложение использует слишком много памяти для HTC Desire, где я получаю ошибки? Хотя я не совсем понимаю, как это могло быть так, потому что вчера оно работало для меня - и я больше ничего не добавлял в мое приложение (в последние дни я добавил больше кода, но я ничего не сделал усилит нагрузку на основную память телефона). –

ответ

0

Попробуйте выполнить заводскую перезагрузку ОС телефона. Я обнаружил, что, как только я это сделал, проблем больше не было.

У меня мало информации о том, почему он не работает на телефоне и что на самом деле вызывает ошибки. Я буду обновлять этот пост, если пойму, в чем проблема. Единственное, что я почти уверен в том, что проблема связана с проблемой с операционной системой на моем телефоне (HTC Desire).

Следует отметить, что версия Android, которую я установил, представляет собой порт Cyanogen, поскольку Android 4.2 обычно не работает на HTC Desires из-за ограничений памяти.

Как упоминалось выше, я не испытывал этих ошибок на HTC One X под управлением Android 4.2.