2013-05-26 13 views
5

Questa è probabilmente una domanda avanzata poiché ho un bel po 'di esperienza con lo sviluppo di app per fotocamera per Android e ho le basi giuste. Su alcuni telefoni, quando si chiamaRuntimeException using Camera.open()

Camera.open(0); 

Ottengo un RuntimeException. La mia app fotocamera funziona sulla maggior parte dei telefoni (oltre 1000 tipi di dispositivi Android) ma non riesce su alcuni (circa 50 tipi di dispositivi). Sembra anche incoerente tra i dispositivi, il che significa che l'app funzionerà sempre o meno sullo stesso modello del dispositivo. Per esempio. l'app funziona su alcuni Galaxy S2 ma non riesce su altri S2.

ho paio di logcats:


Su Android 4.0.4

05-26 12:22:26.150 I/CameraService(85): Opening camera 0<br/> 
05-26 12:22:26.150 I/NvOmxCamera(85): HAL_camera_device_open: open camera 0<br/> 
05-26 12:22:26.150 D/NvOmxCamera(85): HAL_openCameraHardware() use_camera_1st_source=1<br/> 
05-26 12:22:26.150 E/NvOmxCamera(85): Invalid camera ID 0, hardware does not support simultaneous CSI camera use<br/> 
05-26 12:22:26.150 E/CameraService(85): Could not open camera 0: -38<br/> 
05-26 12:22:26.150 I/CameraService(85): Destroying camera 0<br/> 
05-26 12:22:26.160 D/AndroidRuntime(25895): Shutting down VM<br/> 
05-26 12:22:26.160 W/dalvikvm(25895): threadid=1: thread exiting with uncaught exception (group=0x40a5a1f8)<br/> 
05-26 12:22:26.180 E/Crittercism(25895): java.lang.RuntimeException: Fail to connect to camera service<br/> 
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.native_setup(Native Method)<br/> 
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.<init>(Camera.java:304)<br/> 
05-26 12:22:26.180 E/Crittercism(25895): at android.hardware.Camera.open(Camera.java:264)<br/> 

Su Android 2.3.6

05-26 11:27:16.984 W/CameraSwitch(7088): open main camera<br/> 
05-26 11:27:16.984 W/CameraSwitch(7088): no file - can't switch camera<br/> 
05-26 11:27:16.994 D/CameraService(66): CameraService::connect E (pid 7088, client 0xad08)<br/> 
05-26 11:27:16.994 D/CameraService(66): CameraService::connect X (pid 7088, new client 0xad08) rejected. (old pid 7173, old client 0x3ca30)<br/> 
05-26 11:27:16.994 D/CameraService(66): The old client is dead!<br/> 
05-26 11:27:16.994 D/AndroidRuntime(7088): Shutting down VM<br/> 
05-26 11:27:16.994 W/dalvikvm(7088): threadid=1: thread exiting with uncaught exception (group=0x400259f8)<br/> 
05-26 11:27:17.094 D/dalvikvm(7088): GC_FOR_MALLOC freed 15803 objects/957392 bytes in 93ms<br/> 
05-26 11:27:17.114 E/Crittercism(7088): java.lang.RuntimeException: Fail to connect to camera service<br/> 
05-26 11:27:17.114 E/Crittercism(7088): at android.hardware.Camera.native_setup(Native Method)<br/> 
05-26 11:27:17.114 E/Crittercism(7088): at android.hardware.Camera.<init>(Camera.java:118)<br/> 
05-26 11:27:17.114 E/Crittercism(7088): at android.hardware.Camera.open(Camera.java:91) 
<br/> 

ho provato un sacco di cose, ma non riesco proprio a capire quale sia il problema. Questa riga di codice è una delle prime righe da eseguire (Camera.open()), quindi è improbabile che l'errore sia nel mio codice. Qualche idea sul perché questa linea non funziona su alcune fotocamere sarà molto utile.

Se è rilevante, sto aprendo la fotocamera da un servizio. Posso pubblicare qualsiasi informazione necessaria per diagnosticare questo problema. Grazie.

risposta

1

includi le autorizzazioni e le funzioni della videocamera nella tua app?
se sì, forse la fotocamera è in uso in un'altra app.

da android developers:
"Genera RuntimeException se aprendo la fotocamera non riesce (ad esempio, se la fotocamera è in uso da un altro processo o criterio dispositivo gestore ha disabilitato la telecamera)."

+0

No, questo non è un problema con le autorizzazioni. Come ho detto, la mia app funziona su oltre 1000 tipi di dispositivi Android. Ho una domanda, come potrebbe essere utilizzata l'app Fotocamera da un'altra app. A rigor di termini, potrebbe esserci un servizio in background che ha bloccato la videocamera ma è improbabile che così tanti utenti abbiano una fotocamera che viene utilizzata da un servizio in background di cui non sono a conoscenza. – user2421790