Java Android中的摄像头应用程序,无需使用intent

Java Android中的摄像头应用程序,无需使用intent,java,android,camera,android-camera,Java,Android,Camera,Android Camera,我正在开发一个android应用程序,试图实现摄像头功能,但无意避免使用android内置摄像头 我正在使用Preview.java显示摄像头在屏幕上看到的内容 public void surfaceCreated(SurfaceHolder holder) { Mydcamera = Camera.open(); try { Mydcamera.setPreviewDisplay(holder);

我正在开发一个android应用程序,试图实现摄像头功能,但无意避免使用android内置摄像头

我正在使用Preview.java显示摄像头在屏幕上看到的内容

    public void surfaceCreated(SurfaceHolder holder) {

        Mydcamera = Camera.open();

        try {

            Mydcamera.setPreviewDisplay(holder);

            Mydcamera.setPreviewCallback(new PreviewCallback() {

                public void onPreviewFrame(byte[] data, Camera arg1) {
                    FileOutputStream outStream = null;
                    try {
                        outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));  
                        outStream.write(data);
                        outStream.close();

                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } finally {
                    }
                        Preview.this.invalidate();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
但每次我运行应用程序时,我都会在下面的代码行上强制关闭

    Mydcamera = Camera.open();
错误日志:

     08-14 09:10:57.027: E/AndroidRuntime(2318): java.lang.RuntimeException: Fail to connect to camera service
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.hardware.Camera.native_setup(Native Method)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.hardware.Camera.<init>(Camera.java:294)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.hardware.Camera.open(Camera.java:271)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at com.ssn.newcamerademo.Preview.surfaceCreated(Preview.java:45)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.SurfaceView.updateWindow(SurfaceView.java:564)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.SurfaceView.updateWindow(SurfaceView.java:408)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.SurfaceView.dispatchDraw(SurfaceView.java:352)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.View.draw(View.java:6936)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.View.draw(View.java:6936)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1904)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewRoot.draw(ViewRoot.java:1527)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewRoot.performTraversals(ViewRoot.java:1263)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.os.Handler.dispatchMessage(Handler.java:99)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.os.Looper.loop(Looper.java:130)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at android.app.ActivityThread.main(ActivityThread.java:3687)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at java.lang.reflect.Method.invokeNative(Native Method)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at java.lang.reflect.Method.invoke(Method.java:507)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
     08-14 09:10:57.027: E/AndroidRuntime(2318):    at dalvik.system.NativeStart.main(Native Method)
08-14 09:10:57.027:E/AndroidRuntime(2318):java.lang.RuntimeException:无法连接到相机服务
08-14 09:10:57.027:E/AndroidRuntime(2318):在android上。硬件。摄像头。本机设置(本机方法)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.hardware.Camera.(Camera.java:294)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.hardware.Camera.open(Camera.java:271)
08-14 09:10:57.027:E/AndroidRuntime(2318):在com.ssn.newcamerademo.Preview.surfaceCreated(Preview.java:45)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.SurfaceView.updateWidow(SurfaceView.java:564)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.SurfaceView.updateWidow(SurfaceView.java:408)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.SurfaceView.dispatchDraw(SurfaceView.java:352)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.view.draw(view.java:6936)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.widget.FrameLayout.draw(FrameLayout.java:357)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.drawChild(ViewGroup.java:1646)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.view.draw(view.java:6936)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.widget.FrameLayout.draw(FrameLayout.java:357)
08-14 09:10:57.027:E/AndroidRuntime(2318):在com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1904)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewRoot.draw(ViewRoot.java:1527)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewRoot.performTraversals(ViewRoot.java:1263)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.os.Handler.dispatchMessage(Handler.java:99)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.os.Looper.loop(Looper.java:130)上
08-14 09:10:57.027:E/AndroidRuntime(2318):在android.app.ActivityThread.main(ActivityThread.java:3687)上
08-14 09:10:57.027:E/AndroidRuntime(2318):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-14 09:10:57.027:E/AndroidRuntime(2318):位于java.lang.reflect.Method.invoke(Method.java:507)
08-14 09:10:57.027:E/AndroidRuntime(2318):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
08-14 09:10:57.027:E/AndroidRuntime(2318):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-14 09:10:57.027:E/AndroidRuntime(2318):在dalvik.system.NativeStart.main(本机方法)

我没有走错方向。请帮忙!谢谢

检查您是否在清单文件中设置了所有必需的权限。从



如果这个猜测对你没有帮助,你必须提供更多的信息,比如logcat信息

你需要发布日志猫,还有,你是否已将“摄像头”权限添加到你的manafest?直接使用摄像头是相当复杂的。您可以考虑直接使用,或者将其用作自己实现的思想来源。请在清单FrimeHi中提到相机权限,我用错误日志更新了问题。谢谢
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />