2012-05-11 6 views
1

を例外:ファイル::デバッグ時アンドロイド:ビデオ録画は、だから私は以下のコード使用してビデオを記録するためにカメラの活動に組み込まれて使用しようとしているエラー

Intent videoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
    videoIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileURI); 
    videoIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60); 
    startActivityForResult(videoIntent, VIDEO_ACTIVITY); 

を、fileURIはの価値を持って// /mnt/sdcard/Spootur/Videos/c14e0eb2-0737-4931-9898-e85d10bab74e.mp4、およびvideoIntentはのmExtras値を持っています

Bundle[{output=file:///mnt/sdcard/Spootur/Videos/c14e0eb2-0737-4931-9898-e85d10bab74e.mp4, android.intent.extra.durationLimit=60}] 

私は録音を開始すると、それがうまく行くが、私はreclickとき録画ボタンを押して録画を停止すると、カメラアプリはこれをスローします:

05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CamcorderEngine.renameTempFile(CamcorderEngine.java:1352) 
05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CamcorderEngine.doStopVideoRecordingSync(CamcorderEngine.java:849) 
05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CeStateRecording.handleRequest(CeStateRecording.java:69) 
05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CeRequestQueue.startFirstRequest(CeRequestQueue.java:123) 
05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CeRequestQueue.access$200(CeRequestQueue.java:32) 
05-11 01:08:11.325: E/AndroidRuntime(3748):  at com.sec.android.app.camera.CeRequestQueue$MainHandler.handleMessage(CeRequestQueue.java:60) 

これを引き起こす可能性があり、それを修正する方法のアイデアはありますか?ありがとう!

また、録画した動画ファイルがそのURIにあることを確認できます。

+0

この行を削除してみましたか?videoIntent.putExtra(MediaStore.EXTRA_OUTPUT、fileURI);それ以降は は例外を示していますか? – user370305

+0

はい、その後正常に動作します。私のURIの問題は何か分かりません。 –

答えて

10

は実は、私は上記のコードを試してみて、私はあなたを知らせるonActivityResult()

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 

    if (resultCode == RESULT_OK) 
    { 
    try { 
     AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(intent.getData(), "r"); 
     FileInputStream fis = videoAsset.createInputStream(); 
     File videoFile = new File(Environment.getExternalStorageDirectory(),"<VideoFileName>.mp4"); 
     FileOutputStream fos = new FileOutputStream(videoFile); 

     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = fis.read(buffer)) > 0) { 
       fos.write(buffer, 0, length); 
      }  
     fis.close(); 
     fos.close(); 
     } catch (IOException e) { 
      // TODO: handle error 
     } 
    } 
} 

でキャプチャしたビデオファイルを保存し、SO、他のトリックのやり方がある 、いくつかのケースではMediaStore.EXTRA_OUTPUTが正常に動作しないました成功。

+0

それは素晴らしい作品です!おかげさまで、私はそれを考えなかったでしょう! –

+1

ありがとう!聖なる牛、Androidプラットフォームはどのように壊れていますか? –

+0

ありがとうございます。このエラーはGalaxy S3(4.1.2)では表示されていましたが、Nexus 5(5.0.1)では表示されませんでした – Odaym