8

Sto riscontrando un problema con la mia registrazione mediaria. Sto cercando di usare la fotocamera frontale per registrare. Questo mi dà un errore (ma l'anteprima funziona). Ogni volta che uso la fotocamera posteriore tutto funziona bene, penso che sia molto strano. Quale potrebbe essere il problema e quale potrebbe essere la soluzione? Il mio codice e gli errori sono mostrati di seguito.Errore iniziale mediarecording Android non riuscito -19 runTimeException

Modifica. La registrazione con una fotocamera frontale VGA sembra non funzionare. Com'è possibile? È comunque possibile la registrazione con l'app Fotocamera HTC.

Grazie in anticipo.

protected void startRecording() throws Exception 
{ 
    mrec = new MediaRecorder(); 
    mCamera.unlock(); 

    mrec.setCamera(mCamera); 


    mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 

    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    //mrec.setPreviewDisplay(surfaceHolder.getSurface()); 

    File picDirectory = new File(Environment.getExternalStorageDirectory() +"/TrouwApp"); 
    picDirectory.mkdirs(); 

    File mediaStorageDir = new File(Environment.getExternalStorageDirectory() +"/TrouwApp", "Videos"); 

    // Create the storage directory if it does not exist 
    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
     } 
    } 

    mrec.setOutputFile(mediaStorageDir.getPath() + File.separator + date + "_" + videonr+ ".3gp"); 

    mrec.prepare(); 
    mrec.start();//line 136 

    Log.d(TAG, "Recording started!!"); 
} 

linee aggiunte al manifesto:

<uses-feature android:name="android.hardware.camera" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

ErrorLog:

 08-25 23:25:25.332: V/MediaRecorderJNI(4989): setup 
08-25 23:25:25.362: V/MediaRecorder(4989): constructor 
08-25 23:25:25.402: V/MediaRecorder(4989): doCleanUp 
08-25 23:25:25.402: V/MediaRecorder(4989): setListener 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): setMediaRecorder E: mr = mr 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): setMediaRecorder X 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): JNIMediaRecorderListener::setCamera 
08-25 23:25:25.402: V/MediaRecorder(4989): setCamera(0x16c2290,0x1c08dc8) 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): setVideoSource(1) 
08-25 23:25:25.402: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.402: V/MediaRecorder(4989): setVideoSource(1) 
08-25 23:25:25.402: V/MediaRecorder(4989): Call init() since the media recorder is not initialized yet 
08-25 23:25:25.402: V/MediaRecorder(4989): init 
08-25 23:25:25.412: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.412: V/MediaRecorderJNI(4989): setAudioSource(1) 
08-25 23:25:25.412: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.412: V/MediaRecorder(4989): setAudioSource(1) 
08-25 23:25:25.412: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): setOutputFormat(2) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.502: V/MediaRecorder(4989): setOutputFormat(2) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): setVideoFrameRate(30) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.502: V/MediaRecorder(4989): setVideoFrameRate(30) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): setVideoSize(1920, 1088) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.502: V/MediaRecorder(4989): setVideoSize(1920, 1088) 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): setParameter() 
08-25 23:25:25.502: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.502: V/MediaRecorder(4989): setParameters(video-param-encoding-bitrate=12000000) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): setVideoEncoder(2) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.512: V/MediaRecorder(4989): setVideoEncoder(2) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): setParameter() 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.512: V/MediaRecorder(4989): setParameters(audio-param-encoding-bitrate=96000) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): setParameter() 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.512: V/MediaRecorder(4989): setParameters(audio-param-number-of-channels=1) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): setParameter() 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.512: V/MediaRecorder(4989): setParameters(audio-param-sampling-rate=48000) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): setAudioEncoder(3) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.512: V/MediaRecorder(4989): setAudioEncoder(3) 
08-25 23:25:25.512: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): setOutputFile 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.542: V/MediaRecorder(4989): setOutputFile(60, 0, 0) 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): prepare 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.542: V/MediaRecorder(4989): prepare 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.542: V/MediaRecorderJNI(4989): start 
08-25 23:25:25.552: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:25.552: V/MediaRecorder(4989): start 
08-25 23:25:25.562: E/MediaRecorder(4989): start failed: -19 
08-25 23:25:25.562: V/MediaRecorderJNI(4989): process_media_recorder_call 
08-25 23:25:25.562: E/MediaRecorder(4989): start failed. 
08-25 23:25:25.562: E/MediaRecorder(4989): try to delete broken file: /mnt/sdcard/TrouwApp/Videos/25-8-2013_0.3gp 
08-25 23:25:25.562: D/videoActivity(4989): ERROR start failed. 
08-25 23:25:25.562: D/videoActivity(4989): ERROR java.lang.RuntimeException: start failed. 
08-25 23:25:25.562: D/videoActivity(4989): ERROR java.lang.RuntimeException: start failed. 
08-25 23:25:25.562: V/MediaRecorderJNI(4989): release 
08-25 23:25:25.562: V/MediaRecorderJNI(4989): setMediaRecorder E: mr = null 
08-25 23:25:25.562: V/MediaRecorderJNI(4989): setMediaRecorder X 
08-25 23:25:25.562: V/MediaRecorder(4989): setListener 
08-25 23:25:25.562: V/MediaRecorder(4989): release 
08-25 23:25:25.562: V/MediaRecorder(4989): destructor 
08-25 23:25:25.562: D/videoActivity(4989): START RECORDING ERROR 
08-25 23:25:25.562: W/System.err(4989): java.lang.RuntimeException: start failed. 
08-25 23:25:25.572: W/System.err(4989):  at android.media.MediaRecorder._start(Native Method) 
08-25 23:25:25.572: W/System.err(4989):  at android.media.MediaRecorder.start(MediaRecorder.java:712) 
08-25 23:25:25.572: W/System.err(4989):  at com.example.trouwapp.VideoActivity.startRecording(VideoActivity.java:136) 
08-25 23:25:25.572: W/System.err(4989):  at com.example.trouwapp.VideoActivity.onClick(VideoActivity.java:246) 
08-25 23:25:25.572: W/System.err(4989):  at android.view.View.performClick(View.java:3549) 
08-25 23:25:25.572: W/System.err(4989):  at android.view.View$PerformClick.run(View.java:14393) 
08-25 23:25:25.582: W/System.err(4989):  at android.os.Handler.handleCallback(Handler.java:605) 
08-25 23:25:25.582: W/System.err(4989):  at android.os.Handler.dispatchMessage(Handler.java:92) 
08-25 23:25:25.582: W/System.err(4989):  at android.os.Looper.loop(Looper.java:154) 
08-25 23:25:25.582: W/System.err(4989):  at android.app.ActivityThread.main(ActivityThread.java:4945) 
08-25 23:25:25.582: W/System.err(4989):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-25 23:25:25.582: W/System.err(4989):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-25 23:25:25.582: W/System.err(4989):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
08-25 23:25:25.582: W/System.err(4989):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
08-25 23:25:25.592: W/System.err(4989):  at dalvik.system.NativeStart.main(Native Method) 
08-25 23:25:55.582: V/MediaRecorderJNI(4989): native_reset 
08-25 23:25:55.582: V/MediaRecorderJNI(4989): getMediaRecorder E 
08-25 23:25:55.582: V/MediaRecorderJNI(4989): release 
08-25 23:25:55.582: V/MediaRecorderJNI(4989): setMediaRecorder E: mr = null 
08-25 23:25:55.582: V/MediaRecorderJNI(4989): setMediaRecorder X 
08-25 23:25:56.002: D/AndroidRuntime(4989): Shutting down VM 
08-25 23:25:56.002: W/dalvikvm(4989): threadid=1: thread exiting with uncaught exception (group=0x40ac8228)
+0

cosa è mCamera? – grant

risposta

19

trovato la soluzione. Dal momento che sto usando la fotocamera frontale, ho bisogno di ottenere il profilo della videocamera dalla fotocamera frontale. Ho raggiunto thas facendo questo:

mrec.setProfile(CamcorderProfile.get(1, CamcorderProfile.QUALITY_HIGH)); 

Invece di questo:

mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
+8

Preferisci utilizzare Camera.CameraInfo.CAMERA_FACING_FRONT come 1 – jDourlens

+2

No, l'ID della telecamera e CameraInfo.facing sono due cose diverse! Per ottenere l'ID corretto, è necessario scorrere le informazioni della videocamera e verificare che CameraInfo.facing sia uguale a CAMERA_FACING_FRONT. – LukaCiko

-2

provare questo:

StartRecording = false; 

    if(mrec == null) { 
     mrec = new MediaRecorder(); 
     mCamera.unlock(); 
     mrec.setCamera(mCamera); 
     File picDirectory = new File(Environment.getExternalStorageDirectory() +"/TrouwApp"); 
     picDirectory.mkdirs(); 
     File mediaStorageDir = new File(Environment.getExternalStorageDirectory() +"/TrouwApp", "Videos"); 
     mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //you forgot this 
     mrec.setOutputFile(mediaStorageDir.getPath() + File.separator + date + "_" + videonr+ ".3gp"); 
     mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //you forgot this also 
     mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    } 
    if(!StartRecording) { 
    Log.d(TAG, "Recording stopped!!"); 
     try { 
      mrec.prepare(); 
      mrec.start(); 
      StartRecording = true; 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } else { 
    Log.d(TAG, "Recording started!!"); 
     StartRecording = false; 
     mrec.stop(); 
     mrec.reset(); 
     mrec.release(); 
     mrec = null; 
    }//else 
+0

Questo è esattamente lo stesso –