Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.57 KB | None | 0 0
  1. package com.android.camerarecorder;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.hardware.Camera;
  6. import android.os.Bundle;
  7. import android.view.SurfaceHolder;
  8. import android.view.SurfaceView;
  9. import android.view.View;
  10. import android.widget.Button;
  11.  
  12. public class CameraRecorder extends Activity implements SurfaceHolder.Callback {
  13. private static final String TAG = "Recorder";
  14. public static SurfaceView mSurfaceView;
  15. public static SurfaceHolder mSurfaceHolder;
  16. public static Camera mCamera ;
  17. public static boolean mPreviewRunning;
  18.  
  19. /** Called when the activity is first created. */
  20. @Override
  21. public void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.main);
  24.  
  25. mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
  26. mSurfaceHolder = mSurfaceView.getHolder();
  27. mSurfaceHolder.addCallback(this);
  28. mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  29.  
  30. Button btnStart = (Button) findViewById(R.id.StartService);
  31. btnStart.setOnClickListener(new View.OnClickListener()
  32. {
  33. public void onClick(View v)
  34. {
  35. Intent intent = new Intent(CameraRecorder.this, RecorderService.class);
  36. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  37. startService(intent);
  38. finish();
  39. }
  40. });
  41.  
  42. Button btnStop = (Button) findViewById(R.id.StopService);
  43. btnStop.setOnClickListener(new View.OnClickListener()
  44. {
  45. public void onClick(View v)
  46. {
  47. stopService(new Intent(CameraRecorder.this, RecorderService.class));
  48. }
  49. });
  50. }
  51.  
  52. @Override
  53. public void surfaceCreated(SurfaceHolder holder) {
  54.  
  55. }
  56.  
  57. @Override
  58. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
  59. }
  60.  
  61. @Override
  62. public void surfaceDestroyed(SurfaceHolder holder) {
  63. // TODO Auto-generated method stub
  64.  
  65. }
  66. }
  67.  
  68. package com.android.camerarecorder;
  69. import java.io.IOException;
  70. import java.util.List;
  71. import android.app.Service;
  72. import android.content.Intent;
  73. import android.graphics.PixelFormat;
  74. import android.hardware.Camera;
  75. import android.hardware.Camera.Size;
  76. import android.media.MediaRecorder;
  77. import android.os.IBinder;
  78. import android.util.Log;
  79. import android.view.SurfaceHolder;
  80. import android.view.SurfaceView;
  81. import android.widget.Toast;
  82.  
  83. public class RecorderService extends Service {
  84. private static final String TAG = "RecorderService";
  85. private SurfaceView mSurfaceView;
  86. private SurfaceHolder mSurfaceHolder;
  87. private static Camera mServiceCamera;
  88. private boolean mRecordingStatus;
  89. private MediaRecorder mMediaRecorder;
  90.  
  91. @Override
  92. public void onCreate() {
  93. mRecordingStatus = false;
  94. //mServiceCamera = CameraRecorder.mCamera;
  95. mServiceCamera = Camera.open();
  96. mSurfaceView = CameraRecorder.mSurfaceView;
  97. mSurfaceHolder = CameraRecorder.mSurfaceHolder;
  98.  
  99. super.onCreate();
  100. if (mRecordingStatus == false)
  101. startRecording();
  102. }
  103.  
  104. @Override
  105. public IBinder onBind(Intent intent) {
  106. // TODO Auto-generated method stub
  107. return null;
  108. }
  109.  
  110. @Override
  111. public void onDestroy() {
  112. stopRecording();
  113. mRecordingStatus = false;
  114.  
  115. super.onDestroy();
  116. }
  117.  
  118. public boolean startRecording(){
  119. try {
  120. Toast.makeText(getBaseContext(), "Recording Started", Toast.LENGTH_SHORT).show();
  121.  
  122. //mServiceCamera = Camera.open();
  123. Camera.Parameters params = mServiceCamera.getParameters();
  124. mServiceCamera.setParameters(params);
  125. Camera.Parameters p = mServiceCamera.getParameters();
  126.  
  127. final List<Size> listSize = p.getSupportedPreviewSizes();
  128. Size mPreviewSize = listSize.get(2);
  129. Log.v(TAG, "use: width = " + mPreviewSize.width
  130. + " height = " + mPreviewSize.height);
  131. p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
  132. p.setPreviewFormat(PixelFormat.YCbCr_420_SP);
  133. mServiceCamera.setParameters(p);
  134.  
  135. try {
  136. mServiceCamera.setPreviewDisplay(mSurfaceHolder);
  137. mServiceCamera.startPreview();
  138. }
  139. catch (IOException e) {
  140. Log.e(TAG, e.getMessage());
  141. e.printStackTrace();
  142. }
  143.  
  144. mServiceCamera.unlock();
  145.  
  146. mMediaRecorder = new MediaRecorder();
  147. mMediaRecorder.setCamera(mServiceCamera);
  148. mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  149. mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
  150. mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
  151. mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
  152. mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
  153. mMediaRecorder.setOutputFile("/sdcard/video.mp4");
  154. mMediaRecorder.setVideoFrameRate(30);
  155. mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
  156. mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
  157.  
  158. mMediaRecorder.prepare();
  159. mMediaRecorder.start();
  160.  
  161. mRecordingStatus = true;
  162.  
  163. return true;
  164. } catch (IllegalStateException e) {
  165. Log.d(TAG, e.getMessage());
  166. e.printStackTrace();
  167. return false;
  168. } catch (IOException e) {
  169. Log.d(TAG, e.getMessage());
  170. e.printStackTrace();
  171. return false;
  172. }
  173. }
  174.  
  175. public void stopRecording() {
  176. Toast.makeText(getBaseContext(), "Recording Stopped", Toast.LENGTH_SHORT).show();
  177. try {
  178. mServiceCamera.reconnect();
  179. } catch (IOException e) {
  180. // TODO Auto-generated catch block
  181. e.printStackTrace();
  182. }
  183. mMediaRecorder.stop();
  184. mMediaRecorder.reset();
  185.  
  186. mServiceCamera.stopPreview();
  187. mMediaRecorder.release();
  188.  
  189. mServiceCamera.release();
  190. mServiceCamera = null;
  191. }
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement