こんにちは、意図を使ってNougat 7.0からビデオを録画して保存しようとしました。ビデオは録画できますが、デバイスストレージには保存されません。私はさらに 'FileUriExposedException'を避けるためにFileProvider
を使用しました。しかし、画像をキャプチャする場合は、以下の指定されたパスに保存されます。 ここに私のコードです。MediaStore.ACTION_VIDEO_CAPTUREはNougat 7.0のビデオを保存していません
private Uri imageUri;
private File imageFile = null;
public File videoFilePath() {
return new File(getDefaultCameraPath(), "Video_" + System.currentTimeMillis() + ".mp4");
}
private void callCameraIntent(){
Intent cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
imageFile = videoFilePath();
imageUri = FileProvider.getUriForFile(CreatePostActivity.this, BuildConfig.APPLICATION_ID + ".provider", imageFile);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(cameraIntent, 2);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_CANCELED) {
//Here it returns imageFile does not exist so it skips the if statement
if (resultCode == Activity.RESULT_OK && requestCode == 2 && imageFile != null && imageFile.exists()) {
}
}
}
上記のコードは、すべてpre-Nougat
バージョンで正常に動作します。誰でも私にビデオを録画してデバイスストレージに保存するためのより良いソリューションを提供できますか?
をチェックする必要があります手段「のは、ビデオのために働いていない」ものを、詳細に、説明してください。 'EXTRA_OUTPUT'の' content''Uri'値のサポートは、あなたの 'ACTION_VIDEO_CAPTURE''' Intent'に応答する特定のアクティビティーまでです。いくつかのカメラアプリは 'content' Uri'値をサポートします。他はしません。 Googleの独自のカメラアプリは今年の夏までこれをサポートしていませんでした。 – CommonsWare
@CommonsWare私は、上記の方法で 'MediaStore.ACTION_VIDEO_CAPTURE'を' MediaStore.ACTION_IMAGE_CAPTURE'に置き換えてカメラ画像のプレビューを得ることができたことを意味しましたが、ビデオになるとプレビューは機能しません。ファイルパスからビデオを取得しようとしても、そのファイルは存在しません。遅く返事を申し訳ありません:) –
「プレビューが機能していません」とはどういう意味ですか?あなたがカメラアプリが壊れていることを意味するなら、これは驚くことではありませんが、それは残念です。 – CommonsWare