2012-10-23 26 views
1

我想從我的Android應用程序錄制視頻。 這樣視頻錄製的意圖給出錯誤

File f = new File(Environment.getExternalStorageDirectory() + "/" 
      + app.getBaseName()); 
    if (!f.exists()) { 
     f.mkdir(); 
    } 



    filename = "Video" + lastfile() + ".mp4"; 

    File f1 = new File(Environment.getExternalStorageDirectory() + "/" 
      + app.getBaseName(), filename); 

    Uri uri = Uri.fromFile(f1); 

    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); 
    startActivityForResult(intent, 222); 

,並在活動上的結果

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 222) { 
     Log.v("log_tag", "Return to back 222" + resultCode); 
     if (resultCode == RESULT_OK) { 
      Log.v("log_tag", "Return to back"); 


     } else if (resultCode == RESULT_CANCELED) { 
      // User cancelled the image capture 
     } else { 
      // Image capture failed, advise user 
     } 

     Log.v("log_tag", "Return to back fury"); 
    } 

    finish(); 
    super.onActivityResult(requestCode, resultCode, data); 
} 

用這個,相機開始,然後我點擊中間的按鈕,錄製開始比我點擊左側的按鈕來停止並保存和應用程序崩潰。

我在onActivityResult中打印了resultCode的值,它給了我0 和視頻保存在給定路徑中,給定名稱正確。 請幫助我。

回答

0

我無法找到此妥善解決,但我用這個流程解決我的問題。讓默認的任何地方保存視頻文件,並在需要的地方製作另一個副本,您也可以在複製後刪除原始文件。

這樣

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == 222) { 
    if (resultCode == RESULT_OK){ 
    try { 
    AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r"); 
    FileInputStream fis = videoAsset.createInputStream(); 
    File f1 = new File(Environment.getExternalStorageDirectory() + "/" + app.getBaseName(), filename); 
    FileOutputStream fos = new FileOutputStream(f1); 

    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 
    } 
    } 
} 
super.onActivityResult(requestCode, resultCode, intent); 
} 
0

的resultCode爲0對應於RESULT_CANCEL如果我沒有錯,但爲什麼你有一個「完成();」在onActivityResult的結尾?你應該刪除它。

+0

感謝達米安,是的,我刪除它仍然崩潰,在日誌貓沒有錯誤。一個視頻也保存在適當的位置。比爲什麼它崩潰我無法理解。 –