2015-05-02 3 views
11

Es gab eine ähnliche Frage, aber es ging ungelöst:W/CameraBase: Ein Fehler ist aufgetreten, während zur Kamera anschließen: 0

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

ich eine App haben, die (natürlich) die Kamera verwendet. Es hat gut funktioniert. Aber ohne Code-Änderungen, zwischen den Builds, stürzte die App ab (verifizierte keine Code-Änderungen über den Git-Commit-Verlauf).

Um das Problem zu überprüfen ist irgendwo in der Hardware, lief ich den gleichen Code auf einem anderen Telefon und es funktioniert gut. Irgendwie ist die Kamera gesperrt und kann nicht geöffnet werden.

ist hier der entsprechende Code:

ein Objekt previe erstellen

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

Dies ist der Code-Erstellung für sie

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

Öffnen der Kamera:

// Öffnet Blick in die Kamera standardmäßig zurück

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

    return c; 
} 

ist, wo der Fehler auftritt, camera.Open führt den Fehler mit dem folgenden Stack-Trace. Mein Kameraobjekt ist null. Dieser Code stammt von den offiziellen Android-Dokumenten, aber sie sprechen nicht darüber, wie die Kamera freigegeben wird, wenn sie außerhalb der Sitzung gesperrt ist.

Der vollständige Abmelde ist

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) 

Können Sie raten, wie ich kann ‚Unlock‘ eine Kamera wie diese einsperren?

Antwort

15

Die „fail zum Kamera-Dienst verbinden“ bedeutet, dass Ihre (oder ein anderer) Kamera-App richtig Kamera lösen ist fehlgeschlagen. Dies passierte mir gelegentlich, als ich auch meine App entwickelte. Das erste, was ich versuchen würde, ist die Kamera von dem Standard-Kamera-App zu öffnen, die mit dem Handy kommt (nur die „Kamera“ Taste tippen). Wenn dies nicht möglich wäre, war die einzige Möglichkeit, das Telefon neu zu starten.

Dies ist Spekulation, aber Ihr Code könnte einen Fehler haben, der nur gelegentlich auftaucht und es erschien nur bis jetzt durch pures Glück. Wenn es weiterhin besteht, lesen Sie die Fragen zu "Wie kann ich die Kamera richtig in Android freigeben". Sie hatten mir geholfen, damit umzugehen.

0

Ich weiß nicht, ob dies der Fall ist, aber es ist einfach passiert mir so dachte ich, dass ich es teilen würde. Meine App hat dasselbe gemacht (obwohl ich versucht habe, Camera.open() so zu umkreisen, dass ich es zuerst nicht gesehen habe) ABER ich habe getan, was panonski gesagt hat und die Kamera von der Systemkamera-App eingeschaltet und gesehen, dass es war mit der Frontkamera. Durch den Wechsel zur Rückfahrkamera konnte meine App wieder funktionieren.

Ich habe von Camera.open() zu Camera.open (Camera.Camera Info.CAMERA_FACING_BACK) geändert und jetzt funktioniert das, egal wie die Kamera vorher war. (Mit Galaxy Note 4).

Hoffentlich hilft das.

13

Ab Android 6.0 (API-Stufe 23) gewähren Benutzer Berechtigungen für Anwendungen während der Ausführung der App, nicht bei der Installation der Anwendung.Dieser Ansatz optimiert den App-Installationsprozess, da der Benutzer keine Berechtigungen erteilen muss, wenn er die App installiert oder aktualisiert. Es gibt dem Benutzer auch mehr Kontrolle über die Funktionalität der App. Beispielsweise könnte ein Benutzer einer Kamera-App den Zugriff auf die Kamera, nicht aber den Standort des Geräts gewähren. Der Benutzer kann die Berechtigungen jederzeit widerrufen, indem er zum Bildschirm Einstellungen der App geht. http://developer.android.com/training/permissions/requesting.html

+6

Für mich war dies der Fall, wenn Sie versuchen, eine Beispielanwendung auszuführen. Es hat nie um Erlaubnis gefragt, und die Kameraansicht hat nicht funktioniert. Gehe zu ** Einstellungen> Apps> Benutzername> Berechtigungen ** und aktiviere die Kameraberechtigung. – Niels