Android 无法连接摄像头服务,但我可以获取摄像头信息

Android 无法连接摄像头服务,但我可以获取摄像头信息,android,camera,Android,Camera,我对Camera.open()有问题。它抛出一个异常 07-04 10:38:52.039 22582-22582/test.videorecorder E/Camera numbers:﹕ 2 07-04 10:38:52.049 22582-22582/test.videorecorder E/Camera 0﹕ 1 07-04 10:38:52.049 22582-22582/test.videorecorder E/Camera 1﹕ 0 07-04 10:38:52.559 2

我对Camera.open()有问题。它抛出一个异常

07-04 10:38:52.039  22582-22582/test.videorecorder E/Camera numbers:﹕ 2
07-04 10:38:52.049  22582-22582/test.videorecorder E/Camera 0﹕ 1
07-04 10:38:52.049  22582-22582/test.videorecorder E/Camera 1﹕ 0
07-04 10:38:52.559  22582-22582/test.videorecorder E/init camera﹕ can't open the back camera
java.lang.RuntimeException: Fail to connect to camera service
        at android.hardware.Camera.native_setup(Native Method)
        at android.hardware.Camera.<init>(Camera.java:370)
        at android.hardware.Camera.open(Camera.java:329)
        at test.videorecorder.MainActivity.initCamera(MainActivity.java:72)
        at test.videorecorder.MainActivity.onCreate(MainActivity.java:55)
        at android.app.Activity.performCreate(Activity.java:5243)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
        at android.app.ActivityThread.access$700(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4998)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
        at dalvik.system.NativeStart.main(Native Method)
07-04 10:38:52.779  22582-22582/test.videorecorder E/preview holder﹕ surface create
07-04 10:38:52.779  22582-22582/test.videorecorder E/preview holder﹕ 1 times create
07-04 10:38:52.789  22582-22582/test.videorecorder E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: test.videorecorder, PID: 22582
java.lang.NullPointerException
        at test.videorecorder.MainActivity$2.surfaceCreated(MainActivity.java:115)
        at android.view.SurfaceView.updateWindow(SurfaceView.java:664)
        at android.view.SurfaceView.access$000(SurfaceView.java:93)
        at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:191)
        at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1888)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1017)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5603)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
        at android.view.Choreographer.doCallbacks(Choreographer.java:562)
        at android.view.Choreographer.doFrame(Choreographer.java:532)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4998)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
        at dalvik.system.NativeStart.main(Native Method)
07-04 10:38:52.039 22582-22582/测试。录像机E/摄像机编号:﹕ 2.
07-04 10:38:52.049 22582-22582/测试。录像机E/摄像机0﹕ 1.
07-04 10:38:52.049 22582-22582/测试.录像机E/摄像机1﹕ 0
07-04 10:38:52.559 22582-22582/test.videorecorder E/init camera﹕ 无法打开后摄像头
java.lang.RuntimeException:无法连接到摄影机服务
在android.hardware.Camera.native_设置中(本机方法)
在android.hardware.Camera.(Camera.java:370)
打开(Camera.java:329)
at test.videorecorder.MainActivity.initCamera(MainActivity.java:72)
在test.videorecorder.MainActivity.onCreate(MainActivity.java:55)
位于android.app.Activity.performCreate(Activity.java:5243)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)上
在android.app.ActivityThread.access$700(ActivityThread.java:135)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4998)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
在dalvik.system.NativeStart.main(本机方法)
07-04 10:38:52.779 22582-22582/测试.录像机E/预览支架﹕ 曲面创建
07-04 10:38:52.779 22582-22582/测试.录像机E/预览支架﹕ 1次创建
07-04 10:38:52.789 22582-22582/test.videorecorder E/AndroidRuntime﹕ 致命异常:主
过程:测试录像机,PID:22582
java.lang.NullPointerException
在test.videorecorder.MainActivity$2.surfaceCreated(MainActivity.java:115)
在android.view.SurfaceView.updateWindow(SurfaceView.java:664)上
在android.view.SurfaceView.access$000(SurfaceView.java:93)
在android.view.SurfaceView$3.onPreDraw(SurfaceView.java:191)
在android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)中
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1888)
位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1017)
在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5603)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
位于android.view.Choreographer.doCallbacks(Choreographer.java:562)
位于android.view.Choreographer.doFrame(Choreographer.java:532)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)中
位于android.os.Handler.handleCallback(Handler.java:733)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4998)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:811)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:627)
在dalvik.system.NativeStart.main(本机方法)
我写的代码是:

private void initCamera() {
    try {
        int defaultBackCamera = 0;
        Log.e("Camera numbers: " , "" + Camera.getNumberOfCameras());
        Camera.CameraInfo info = new Camera.CameraInfo();

        for (int i = 0; i < Camera.getNumberOfCameras(); i ++) {
            Camera.getCameraInfo(i, info);
            Log.e("Camera " + i, "" + info.facing);
            if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK)
                defaultBackCamera = i;
        }
        mCamera = Camera.open(defaultBackCamera);
    } catch (Exception e) {
        Log.e("init camera", "can't open the back camera", e);
        if (mCamera != null) {
             mCamera.release();;
            mCamera = null;
        }
    }
}
private void initCamera(){
试一试{
int defaultBackCamera=0;
Log.e(“摄像机编号:”,“+Camera.getNumberOfCameras());
Camera.CameraInfo info=新建Camera.CameraInfo();
对于(int i=0;i
AndroidManifest.xml我添加了以下行:

  <uses-permission android:name="android.permission.CAMERA" />
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />


我看了很多关于打开相机失败的问题,但是没有一个能解决我的问题,所以我想知道原因和如何解决它

关于
open()
,只有两个记录在案的异常原因:1)没有权限2)照相机已在使用中。您在清单中拥有所需的权限,因此请寻找相机可能已经打开的方式。您是否可能调用了两次
initCamera()
,第一次工作,第二次失败?不,第一次不能工作。我的领导询问了平台硬件的工程师,并得到了答案。他们修改了一些程序,用一般的方法无法打开相机。所以,这个问题不能解决,除非他们给我们正确的方法。谢谢!关于
open()
,只有两个记录在案的异常原因:1)没有权限2)照相机已在使用中。您在清单中拥有所需的权限,因此请寻找相机可能已经打开的方式。您是否可能调用了两次
initCamera()
,第一次工作,第二次失败?不,第一次不能工作。我的领导询问了平台硬件的工程师,并得到了答案。他们修改了一些程序,用一般的方法无法打开相机。所以,这个问题不能解决,除非他们给我们正确的方法。谢谢!