2011-11-09 4 views
4

私はプログラムでカメラを開いてビデオを撮影します。私はカメラに、次のようなコードを使って指定された場所にビデオファイルを置くよう指示します:Motorola Android 2.2カメラはEXTRA_OUTPUTパラメータを無視します

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
File out = new File("/sdcard/camera.mp4"); 
Uri uri = Uri.fromFile(out); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
startActivityForResult(intent, GlobalUtility.CAMERA_VIDEO); 

これはHTC電話でうまくいきます。しかし私のモットーでは、MediaStore.EXTRA_OUTPUTパラメータを無視し、ビデオをデフォルトの場所に配置します。 それでは、私は問題を解決するためにonActivityResult()関数でこのコードを使用します。

private String getRealPathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

String realPath; 
try { 
    File file = new File("/sdcard/camera.mp4"); 
    if (!file.exists()) { 
     Uri videoUri = data.getData(); 
     realPath = getRealPathFromURI(videoUri); 
    } 
} catch (Exception ex) { 
    Uri videoUri = data.getData(); 
    realPath = getRealPathFromURI(videoUri); 
} 

が、これは一部の人を助けることを願っています。

+1

thankx)はあなたのために動作しませんでしたinsted/sdcardのような静的パスを渡すか? – MKJParekh

+1

これはsdcardの問題ではありません。ビデオの代わりに写真を撮ると、 "/sdcard/camera.png"はうまくいきます。 –

答えて

0

ちょうど/sdcard/が1つの電話機のsdcardディレクトリであり、Androidの1つのビルドが一貫性​​を保つとは限りません。

フランケンシュタインのコメントからもわかるように、Environment.getExternalStorageDirectory()を使用します。これは、常にSDカードのディレクトリを取得するために動作します。

また、電話機がUSBストレージモードになっている可能性があるため、SDカードが現在マウント可能であることを確認する必要があります。

のようなものを試してみてください...

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ 
    Log.d(TAG, "No SDCARD"); 
} else { 
    File out = new File(Environment.getExternalStorageDirectory()+File.separator+"camera.mp4");  
} 
0

私はまだこのように行われているが任意のerror..soあなたにこれを試してみてくださいので、私は現実を知ることができる「MOTOが挑む」が見つかりませんでした。結果に活動に

Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE); 
startActivityForResult(intent,2323); 

:テントを呼び出すために

info..tell私Environment.getExternalStorageDirectory(のための

Uri contentUri = data.getData(); 
String[] proj = { MediaStore.Images.Media.DATA }; 
Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
cursor.moveToFirst(); 
String tmppath = cursor.getString(column_index); 

videoView.setVideoPath(path); 
関連する問題