Iām interested in writing an Android application where, after a certain event, the application automatically takes a photo using the Android camera.
What I need:
Here is the code I tried from the online tutorial:
public void snap(){ mCamera = Camera.open(); SurfaceView sv = new SurfaceView(getApplicationContext()); try { mCamera.setPreviewDisplay(sv.getHolder()); parameters = mCamera.getParameters(); //set camera parameters mCamera.setParameters(parameters); mCamera.startPreview(); mCamera.takePicture(null, null, mCall); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Get a surface sHolder = sv.getHolder(); } Camera.PictureCallback mCall = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { //decode the data obtained by the camera into a Bitmap FileOutputStream outStream = null; try{ outStream = new FileOutputStream("/sdcard/Image.jpg"); outStream.write(data); outStream.close(); } catch (FileNotFoundException e){ Log.d("CAMERA", e.getMessage()); } catch (IOException e){ Log.d("CAMERA", e.getMessage()); } } }; public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; }
along with the logarithm of what he did
11-24 01:54:37.738: E/AndroidRuntime(6971): FATAL EXCEPTION: main 11-24 01:54:37.738: E/AndroidRuntime(6971): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.udptest/com.example.udptest.Main}: java.lang.RuntimeException: takePicture failed 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread.access$600(ActivityThread.java:153) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.os.Handler.dispatchMessage(Handler.java:99) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.os.Looper.loop(Looper.java:137) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread.main(ActivityThread.java:5227) 11-24 01:54:37.738: E/AndroidRuntime(6971): at java.lang.reflect.Method.invokeNative(Native Method) 11-24 01:54:37.738: E/AndroidRuntime(6971): at java.lang.reflect.Method.invoke(Method.java:511) 11-24 01:54:37.738: E/AndroidRuntime(6971): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 11-24 01:54:37.738: E/AndroidRuntime(6971): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562) 11-24 01:54:37.738: E/AndroidRuntime(6971): at dalvik.system.NativeStart.main(Native Method) 11-24 01:54:37.738: E/AndroidRuntime(6971): Caused by: java.lang.RuntimeException: takePicture failed 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.hardware.Camera.native_takePicture(Native Method) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.hardware.Camera.takePicture(Camera.java:1101) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.hardware.Camera.takePicture(Camera.java:1046) 11-24 01:54:37.738: E/AndroidRuntime(6971): at com.example.udptest.Main.snap(Main.java:129) 11-24 01:54:37.738: E/AndroidRuntime(6971): at com.example.udptest.Main.onCreate(Main.java:84) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.Activity.performCreate(Activity.java:5104) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 11-24 01:54:37.738: E/AndroidRuntime(6971): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262) 11-24 01:54:37.738: E/AndroidRuntime(6971): ... 11 more
Any ideas what might be here, or the best way to complete this task?
java android android-camera
Phoenixlament
source share