i am developing an android app where i am trying to implement the camera functionality, without using the intent to avoid getting android built-in camera.
I am using Preview.java to display what the camera see's on the screen.
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();
}
}
But Each time i run the app, i am getting force close on the below line of code
Mydcamera = Camera.open();
Error Log:
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)
Not getting where iam going wrong. Please Help! Thanks!
Check if you have all the required permissions set in the manifest file. From this link
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
If this guess didn't help you you'll have to provide more information like the logcat info.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.