Note that there are some explanatory texts on larger screens.

plurals
  1. POcamera for picture and video not working
    text
    copied!<p>I am using camera in android app to take pictures and videos. I am using following code but it forces app to close. The LogCat and code is shown below. If anybody could help,it would be highly appreciated.</p> <p>LogCat:</p> <pre><code> 09-09 14:32:08.246: E/AndroidRuntime(4764): FATAL EXCEPTION: main 09-09 14:32:08.246: E/AndroidRuntime(4764): java.lang.NullPointerException 09-09 14:32:08.246: E/AndroidRuntime(4764): at com.example.cameravideo.VideoCaptureActivity.initRecorder(VideoCaptureActivity.java:72) 09-09 14:32:08.246: E/AndroidRuntime(4764): at com.example.cameravideo.VideoCaptureActivity.surfaceCreated(VideoCaptureActivity.java:100) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.SurfaceView.updateWindow(SurfaceView.java:571) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.SurfaceView.access$000(SurfaceView.java:86) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:175) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:833) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1860) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.Choreographer.doFrame(Choreographer.java:532) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.os.Handler.handleCallback(Handler.java:730) 09-09 14:32:08.246: E/AndroidRuntime(4764): at android.os.Handler.dispatchMessage(Handler.java:92) </code></pre> <p>Code:</p> <pre><code> public class VideoCaptureActivity extends Activity implements SurfaceHolder.Callback { private final String VIDEO_PATH_NAME = "/mnt/sdcard/VGA_30fps_512vbrate.mp4"; private MediaRecorder mMediaRecorder; private Camera mCamera; private SurfaceView mSurfaceView; private SurfaceHolder mHolder; private View mToggleButton; private boolean mInitSuccesful; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera); mHolder = mSurfaceView.getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mToggleButton = (ToggleButton) findViewById(R.id.toggleButton); mToggleButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (((ToggleButton) v).isChecked()) { mMediaRecorder.start(); try { Thread.sleep(10 * 1000); } catch (Exception e) { e.printStackTrace(); } finish(); } else { mMediaRecorder.stop(); mMediaRecorder.reset(); try { initRecorder(mHolder.getSurface()); } catch (IOException e) { e.printStackTrace(); } } } }); } private void initRecorder(Surface surface) throws IOException { if (mCamera == null) { mCamera = Camera.open(); mCamera.unlock(); } if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); mMediaRecorder.setPreviewDisplay(surface); mMediaRecorder.setCamera(mCamera); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mMediaRecorder.setVideoEncodingBitRate(512 * 1000); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoSize(640, 480); mMediaRecorder.setOutputFile(VIDEO_PATH_NAME); try { mMediaRecorder.prepare(); } catch (IllegalStateException e) { e.printStackTrace(); } mInitSuccesful = true; } @Override public void surfaceCreated(SurfaceHolder holder) { try { if (!mInitSuccesful) initRecorder(mHolder.getSurface()); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { shutdown(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { } private void shutdown() { mMediaRecorder.reset(); mMediaRecorder.release(); mCamera.release(); mMediaRecorder = null; mCamera = null; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload