0

ネイティブカメラインテントを使用してビデオをキャプチャしています。Nexus Sの場合ビデオをキャプチャすると、キャンセルするか[OK]を押すかに関わらず、ビデオファイルは常にデフォルトのMediURIパスに保存されます。ただし、ユーザーが[OK]をクリックしたときに、キャプチャしたビデオを削除する必要があります。次のコードを使用してカメラを呼び出しています

Intent videoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(videoIntent, CAPTURE_VIDEO);

次のciodeは、キャンセルボタンクリックイベントを処理します

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        try {
            if (requestCode == CAPTURE_VIDEO) {if(resultCode == Activity.RESULT_CANCELED) 
//pointer comes here successfully. It tells that cancel button is clicked. But I am unabelt to know how to delete the currently cancelled video
}
}
}
4

1 に答える 1

0

わかりました、そのいくつかの醜い方法..

最初に、返された URI からビデオの実際のパスを取得します。

private String videoPath = "";

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAPTURE_VIDEO) 
    {

      Uri vid = data.getData();
      videoPath = getRealPathFromURI(vid);
    }   
}

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

これで、ビデオ ファイルの実際のパスがわかり、ファイル操作を使用して削除できます。

File videoFile = new File(videoPath);
videoFile.deleteOnExit();

Androidデータベースから削除する方法があるかどうかは疑問です..

于 2012-01-25T05:20:11.243 に答える