Hai qualche Consiglio/Critica/Suggerimento relativo al forum? Diccelo qui.Ti entusiasma l'idea di un forum italiano di Android? Vorresti partecipare in qualche modo?Scrivi un Tutorial o fai richiesta di ammissione nello Staff
private boolean mediaRecorderConfig() { try { mediaRecorder = new MediaRecorder(); mediaRecorder.setCamera(mCamera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setMaxDuration(maxDurationInMs); mediaRecorder.setOutputFile("/sdcard/myvideo.mp4"); mediaRecorder.setVideoFrameRate(videoFramesPerSecond); mediaRecorder.setVideoSize(mSurfaceView.getWidth(), mSurfaceView.getHeight()); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); mediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); mediaRecorder.setMaxFileSize(maxFileSizeInBytes); mediaRecorder.prepare(); } catch (IOException e) { Log.e(TAG,e.getMessage()); e.printStackTrace(); return false; } return true; }
private boolean startRecording() { try { mCamera.unlock(); if(!mediaRecorderConfig()) return false; mediaRecorder.start(); recording = true; return true; } catch (IllegalStateException e) { Log.e(TAG,e.getMessage()); e.printStackTrace(); return false; } }
private void stopRecording() { if(mediaRecorder != null) mediaRecorder.stop(); if(mCamera != null) mCamera.lock(); recording = false; }
mediaRecorder.start();
08-11 20:23:42.832: ERROR/AndroidRuntime(4661): FATAL EXCEPTION: main08-11 20:23:42.832: ERROR/AndroidRuntime(4661): java.lang.RuntimeException: start failed.08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.media.MediaRecorder.start(Native Method)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at it.android.TrackRace.ViewCamera.startRecording(ViewCamera.java:323)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at it.android.TrackRace.ViewCamera.onOptionsItemSelected(ViewCamera.java:205)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.app.Activity.onMenuItemSelected(Activity.java:2205)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.view.View$PerformClick.run(View.java:9080)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.os.Handler.handleCallback(Handler.java:587)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.os.Handler.dispatchMessage(Handler.java:92)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.os.Looper.loop(Looper.java:130)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at android.app.ActivityThread.main(ActivityThread.java:3683)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at java.lang.reflect.Method.invokeNative(Native Method)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at java.lang.reflect.Method.invoke(Method.java:507)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)08-11 20:23:42.832: ERROR/AndroidRuntime(4661): at dalvik.system.NativeStart.main(Native Method)
package app.travel.utilities;import android.content.Context;import android.hardware.Camera;import android.hardware.Camera.Parameters;import android.media.MediaRecorder;//import android.media.CamcorderProfile; //da API level 8import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;public class RecorderPreview extends SurfaceView implements SurfaceHolder.Callback{ //Create objects for MediaRecorder and SurfaceHolder. MediaRecorder recorder; SurfaceHolder mHolder; Camera mCamera; //Create constructor of Preview Class. In this, get an object of //surfaceHolder class by calling getHolder() method. After that add //callback to the surfaceHolder. The callback will inform when surface is //created/changed/destroyed. Also set surface not to have its own buffers. public RecorderPreview(Context context, MediaRecorder temprecorder) { super(context); recorder=temprecorder; mCamera = Camera.open(); mHolder=getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } // Implement the methods of SurfaceHolder.Callback interface // SurfaceCreated : This method gets called when surface is created. // In this, initialize all parameters of MediaRecorder object as explained // above. public void surfaceCreated(SurfaceHolder holder) { try { Log.d("RecorderPreview", "RecorderPreview::surfaceCreated()"); mCamera.unlock(); recorder.setCamera(mCamera); /*********************************************************************************/ recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); /*********************************************************************************/ recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); /*********************************************************************************/ recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); recorder.setOutputFile("/sdcard/recordvideooutput.3gpp"); recorder.setVideoSize(320, 240); recorder.setVideoFrameRate(24); recorder.setPreviewDisplay(mHolder.getSurface()); /*********************************************************************************/ recorder.prepare(); } catch (Exception e) { String message = e.getMessage(); } } //SurfaceDestroyed : This method gets called immediately before the//surface is being destroyed. Stop camera preview because surface will no//longer exist. public void surfaceDestroyed(SurfaceHolder holder) { if(recorder!=null) { recorder.release(); recorder = null; } } //surfaceChanged : This method is called after the surface is created. public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { }}