2013-08-13 3 views
3

안드로이드 내장 카메라를 피하기 위해 인 텐트를 사용하지 않고 카메라 기능을 구현하려고하는 안드로이드 앱을 개발 중입니다.인 텐트를 사용하지 않고 안드로이드의 카메라 앱

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) 

점점되지 않음 잘못된. 도와주세요! 감사!

+4

당신은 로그 고양이를 게시해야하며 또한 귀하의 manafest에 '카메라'권한을 추가 했습니까? – Broak

+1

카메라를 직접 사용하는 것은 다소 복잡합니다. [CWAC-Camera library] (https://github.com/commonsguy/cwac-camera)를 직접 사용하거나 직접 구현을위한 아이디어의 소스로 사용할 수도 있습니다. – CommonsWare

+0

logcat 게시 – Niko

답변

1

매니페스트 파일에 필요한 권한이 모두 설정되어 있는지 확인하십시오. this link

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

이 추측이 도움이되지 않으면 사용자가 로그 캣 정보와 같은 더 많은 정보를 제공해야합니다에서.

+0

안녕하세요, 오류 로그로 질문을 업데이트했습니다. 감사! – sanjana

관련 문제