2015-05-02 6 views
11

C'era una domanda simile ma è andato irrisolto:W/CameraBase: verificato un errore durante la connessione alla macchina: 0

W/CameraBase﹕ An error occurred while connecting to camera: 0 on camera.open() call

Ho un app che (naturalmente) utilizza la fotocamera. Sta funzionando bene. Tuttavia, senza modifiche al codice, tra le build, l'app si è arrestata in modo anomalo (non è stato verificato alcun cambiamento di codice tramite la cronologia dei commit di Git).

Per verificare ulteriormente che il problema sia da qualche parte nell'hardware, ho eseguito lo stesso codice su un altro telefono e funziona perfettamente. In qualche modo la fotocamera è bloccata e non si apre.

Ecco il codice rilevante:

Creare un oggetto previe

_cameraPreview = new CameraPreview(getActivity(),_camera); 

Questo è il codice di creazione per esso

public CameraPreview(Context context, Camera camera) 
    { 
     super(context); 
     _camera = camera; 
     _surfaceHolder = getHolder(); 
     _surfaceHolder.addCallback(this); 
    } 

Apertura della fotocamera:

// Apre fotocamera frontale rivolta di default

public static Camera getCameraInstance() 
{ 
    Camera c = null; 
    try 
    { 
     c = Camera.open(); 
    }catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

    return c; 
} 

Questo è dove si verifica l'errore, camera.Open genera l'errore con la seguente traccia dello stack. Il mio oggetto camera è nullo. Questo codice proviene dai documenti ufficiali di Android ma non parla di come "rilasciare la videocamera" se è bloccata dall'esterno della sessione.

Il registro completo fuori è

W/CameraBase﹕ An error occurred while connecting to camera: 0 
W/System.err﹕ java.lang.RuntimeException: Fail to connect to camera service 
W/System.err﹕ at android.hardware.Camera.<init>(Camera.java:497) 
W/System.err﹕ at android.hardware.Camera.open(Camera.java:357) 
W/System.err﹕ at co.pumpup.app.EditPhotoFragment.getCameraInstance(EditPhotoFragment.java:241) 
W/System.err﹕ at co.pumpup.app.EditPhotoFragment.onCreateView(EditPhotoFragment.java:76) 
W/System.err﹕ at android.app.Fragment.performCreateView(Fragment.java:2053) 
W/System.err﹕ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:894) 
W/System.err﹕ at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
W/System.err﹕ at android.app.BackStackRecord.run(BackStackRecord.java:834) 
W/System.err﹕ at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1452) 
W/System.err﹕ at android.app.Activity.performStart(Activity.java:6005) 
W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) 
W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
W/System.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:151) 
W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err﹕ at android.os.Looper.loop(Looper.java:135) 
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5254) 
W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372) 
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

può consigliare come posso 'sbloccare' un rinchiuso macchina fotografica come questo?

risposta

15

Il messaggio "Impossibile connettersi al servizio fotocamera" indica che l'app fotocamera (o qualche altra) fotocamera non è riuscita a rilasciare correttamente la fotocamera. Questo mi stava succedendo di tanto in tanto mentre stavo sviluppando anche la mia app. La prima cosa che proverei è di aprire la fotocamera dall'app fotocamera predefinita fornita con il telefono (è sufficiente toccare il pulsante "fotocamera"). Se ciò non dovesse aprire, l'unica opzione era riavviare il telefono.

Questa è la speculazione, ma il codice potrebbe avere un bug che emerge solo occasionalmente e non è stato visualizzato fino ad ora per pura fortuna. Se persiste, controlla le domande relative a "come rilasciare correttamente la videocamera in Android". Mi avevano aiutato ad affrontare questo.

0

Non so se questo è il tuo caso, ma è successo a me quindi ho pensato di condividerlo. La mia app stava facendo la stessa cosa (anche se ho provato con Camera.open() quindi non l'ho visto all'inizio) MA ho fatto quello che ha detto panonski e ho acceso la fotocamera dall'app della fotocamera di sistema e ho visto che era utilizzando la fotocamera frontale. Passare alla fotocamera posteriore ha permesso alla mia app di funzionare di nuovo.

Sono passato dall'uso di Camera.open() a Camera.open (Camera.CameraInfo.CAMERA_FACING_BACK) e ora funziona indipendentemente da come la fotocamera è stata lasciata prima. (Utilizzando Galaxy Note 4).

Speriamo che questo aiuti.

13

A partire da Android 6.0 (livello API 23), gli utenti concedono le autorizzazioni alle app mentre l'app è in esecuzione, non quando installano l'app.Questo approccio semplifica il processo di installazione dell'app, poiché l'utente non deve concedere autorizzazioni quando installa o aggiorna l'app. Inoltre, offre all'utente un maggiore controllo sulle funzionalità dell'app; ad esempio, un utente può scegliere di concedere all'app della fotocamera l'accesso alla telecamera ma non alla posizione del dispositivo. L'utente può revocare le autorizzazioni in qualsiasi momento, accedendo alla schermata delle impostazioni dell'app. http://developer.android.com/training/permissions/requesting.html

+6

Per me questo era il caso quando si cercava di eseguire un'app di esempio. Non ha mai chiesto il permesso e la vista della telecamera non ha funzionato. Vai su ** impostazioni> app> yourappname> permessi ** e attiva l'autorizzazione della videocamera. – Niels

Problemi correlati