summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/example/rotorm/CameraActivity.java60
1 files changed, 57 insertions, 3 deletions
diff --git a/src/com/example/rotorm/CameraActivity.java b/src/com/example/rotorm/CameraActivity.java
index 6b35995..4018e47 100644
--- a/src/com/example/rotorm/CameraActivity.java
+++ b/src/com/example/rotorm/CameraActivity.java
@@ -10,6 +10,7 @@ import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
+import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
@@ -24,6 +25,7 @@ import android.widget.FrameLayout;
//why is it so hard to put an eclipse project into git
+//http://developer.android.com/guide/topics/media/camera.html
public class CameraActivity extends Activity {
public static final String TAG = "rotorM";
@@ -33,6 +35,8 @@ public class CameraActivity extends Activity {
String fileName;
Activity act;
Context ctx;
+ boolean isRecording;
+ MediaRecorder mMediaRecorder;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -54,7 +58,32 @@ public class CameraActivity extends Activity {
buttonClick.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
- camera.takePicture(shutterCallback, rawCallback, jpegCallback);
+ //camera.takePicture(shutterCallback, rawCallback, jpegCallback);
+ if (isRecording) {
+ // stop recording and release camera
+ mMediaRecorder.stop(); // stop the recording
+ releaseMediaRecorder(); // release the MediaRecorder object
+ camera.lock(); // take camera access back from MediaRecorder
+
+ // inform the user that recording has stopped
+ setCaptureButtonText("Capture");
+ isRecording = false;
+ } else {
+ // initialize video camera
+ if (prepareVideoRecorder()) {
+ // Camera is available and unlocked, MediaRecorder is prepared,
+ // now you can start recording
+ mMediaRecorder.start();
+
+ // inform the user that recording has started
+ setCaptureButtonText("Stop");
+ isRecording = true;
+ } else {
+ // prepare didn't work, release the camera
+ releaseMediaRecorder();
+ // inform user
+ }
+ }
}
});
@@ -80,7 +109,7 @@ public class CameraActivity extends Activity {
camera.startPreview();
preview.setCamera(camera);
}
-
+/*
@Override
protected void onPause() {
if(camera != null) {
@@ -91,12 +120,36 @@ public class CameraActivity extends Activity {
}
super.onPause();
}
+ */
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ releaseMediaRecorder(); // if you are using MediaRecorder, release it first
+ releaseCamera(); // release the camera immediately on pause event
+ }
+
+ private void releaseMediaRecorder(){
+ if (mMediaRecorder != null) {
+ mMediaRecorder.reset(); // clear recorder configuration
+ mMediaRecorder.release(); // release the recorder object
+ mMediaRecorder = null;
+ camera.lock(); // lock camera for later use
+ }
+ }
+
+ private void releaseCamera(){
+ if (camera != null){
+ camera.release(); // release the camera for other applications
+ camera = null;
+ }
+ }
private void resetCam() {
camera.startPreview();
preview.setCamera(camera);
}
-
+/*
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
// Log.d(TAG, "onShutter'd");
@@ -131,4 +184,5 @@ public class CameraActivity extends Activity {
Log.d(TAG, "onPictureTaken - jpeg");
}
};
+ */
}