2014-01-22 12 views
5

Aufbauend auf einer AOA-Anwendung kommuniziert mein Android-Gerät mit einem externen Zubehörteil, in diesem Fall einem Arduino.Lösung "Anwendung wurde gestoppt" Absturzfehler

Wenn ich das Zubehör anschließe, wird meine Android-Anwendung korrekt gestartet, da ich eine USB_ATTACHED-Aktion innerhalb meines Intent-Filters für meine mainActivity aktiviere.

Allerdings stürzt meine Android-Anwendung leider ab, wenn sie vom USB-Zubehör getrennt wird.

sofort Meine Schale wechselt von TCPIP dem USB-Modus auf Disconect aber wieder anschließen bekomme ich einen kompletten Stack-Trace

Können alle Android-Gurus empfehlen, wie ich weiter diese auf der folgenden logcat Ausgabe basierend debuggen könnte?

E/run  (5092): java.io.IOException: read failed: EIO (I/O error) 
D/PicasaSyncManager(4877): battery info: false 
D/UsbDeviceManager( 781): exited USB accessory mode 
E/UsbDebuggingManager( 781): got -1 reading 
E/UsbDebuggingManager( 781): Communication error: 
E/UsbDebuggingManager( 781): java.io.IOException: No such file or directory 
E/UsbDebuggingManager( 781): at android.net.LocalSocketImpl.connectLocal(Native Method) 
E/UsbDebuggingManager( 781): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:287) 
E/UsbDebuggingManager( 781): at android.net.LocalSocket.connect(LocalSocket.java:130) 
E/UsbDebuggingManager( 781): at com.android.server.usb.UsbDebuggingManager.listenToSocket(UsbDebuggingManager.java:75) 
E/UsbDebuggingManager( 781): at com.android.server.usb.UsbDebuggingManager.run(UsbDebuggingManager.java:111) 
E/UsbDebuggingManager( 781): at java.lang.Thread.run(Thread.java:841) 
D/dalvikvm( 781): GC_FOR_ALLOC freed 1069K, 14% free 31156K/35896K, paused 54ms, total 55ms 
V/SearchControllerCache(2819): creating SearchController 
W/Sidekick_LocationOracleImpl(2819): Best location was null 
D/dalvikvm(2819): GC_FOR_ALLOC freed 514K, 5% free 18100K/18940K, paused 15ms, total 15ms 
D/audio_hw_primary( 182): select_devices: out_snd_device(0:) in_snd_device(35: voice-rec-mic) 
D/  ( 182): Failed to fetch the lookup information of the device 0000003E 
E/ACDB-LOADER( 182): Error: ACDB AudProc vol returned = -19 
I/SearchController(2819): #onHotwordDetectorStarted 
D/MainActivity(5092): ASSERT registerPhone and register =false 
D/MainActivity(5092): ASSERT registerSms and register =false 
I/WroxAccessory(5092): disconnect 
D/AndroidRuntime(5092): Shutting down VM 
W/dalvikvm(5092): threadid=1: thread exiting with uncaught exception (group=0x41e7cba8) 
E/AndroidRuntime(5092): FATAL EXCEPTION: main 
E/AndroidRuntime(5092): Process: ca.foo, PID: 5092 
E/AndroidRuntime(5092): java.lang.RuntimeException: Unable to destroy activity {ca.foo/ca.foo.MainActivity}: java.lang.IllegalArgumentException: Receiver not registered: [email protected] 
E/AndroidRuntime(5092): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497) 
E/AndroidRuntime(5092): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515) 
E/AndroidRuntime(5092): at android.app.ActivityThread.access$1400(ActivityThread.java:135) 
E/AndroidRuntime(5092): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249) 
E/AndroidRuntime(5092): at android.os.Handler.dispatchMessage(Handler.java:102) 
E/AndroidRuntime(5092): at android.os.Looper.loop(Looper.java:136) 
E/AndroidRuntime(5092): at android.app.ActivityThread.main(ActivityThread.java:5017) 
E/AndroidRuntime(5092): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(5092): at java.lang.reflect.Method.invoke(Method.java:515) 
E/AndroidRuntime(5092): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
E/AndroidRuntime(5092): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
E/AndroidRuntime(5092): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(5092): Caused by: java.lang.IllegalArgumentException: Receiver not registered: [email protected] 
E/AndroidRuntime(5092): at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:667) 
E/AndroidRuntime(5092): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1453) 
E/AndroidRuntime(5092): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:489) 
E/AndroidRuntime(5092): at com.wiley.wroxaccessories.UsbConnection12.close(UsbConnection12.java:115) 
E/AndroidRuntime(5092): at ca.foo.MainActivity.onDestroy(MainActivity.java:164) 
E/AndroidRuntime(5092): at android.app.Activity.performDestroy(Activity.java:5403) 
E/AndroidRuntime(5092): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1117) 
E/AndroidRuntime(5092): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3484) 
E/AndroidRuntime(5092): ... 11 more 
+0

Ich kann mein gesamtes Manifest veröffentlichen, wenn jemand es relevant denkt. –

+0

Geben Sie stattdessen Ihr vollständiges logcat/stacktrace ein. Es sollte Ihnen sagen, wo es versagt hat. – 323go

+0

Fangen Sie die Ausnahme? – Submersed

Antwort

2

Für die IO-Fehler, die ausgelöst wird, stieß ich auf:

https://code.google.com/p/android/issues/detail?id=20545

Eine Option eine Funktion in onPause schreibt(), aber eine bessere Möglichkeit wäre: (wie erwähnt durch # 9 in dem gleichen Link) - Verwendung http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

Außerdem gibt es eine Frage richtig die uSB-Anschluss von Zusatzgeräte zu schließen, die in Ihrem Fall hilft Proper way to close a USB accessory connection

+0

Danke, ich habe keine der Lösungen ausprobiert, aber Sie haben mir genug gegeben, um das Problem zu lösen –

1

Ehrlich gesagt, als ich mit dem ersten Ihren Ausnahmen nicht sehr vertraut bin, habe ich versucht, etwas über sie zu erforschen und was scheint die entsprechende Beschreibung ist, dass es ein ICS Bug ist - Sie lesen können darüber here, aber ich kann die Beziehung zwischen Arduino und NFS nicht sehen.

Der zweite sieht mir viel vertrauter. Ich weiß nicht, ob es der einzige Fall ist, der es produziert (wahrscheinlich nicht), aber in meinem Fall war es, weil in der registerReceiver(...) ich es zwei Context s passierte, und auf unregisterReceiver(...) scheiterte genau mit dieser Ausnahme. Die Lösung übergab getApplicationContext() als Kontext bei der Registrierung und diese Ausnahme wurde nicht mehr angezeigt.

1

Löschen Sie einfach den Cache/Daten die Daten für diese Anwendung und setzen Sie das Gerät neu. Hoffentlich geht alles normal

Verwandte Themen