如何让Android图库或照片查看自定义视频应用

时间:2015-12-23 23:11:02

标签: java android video

我已经编写了一个Android应用程序,它是一个更简单的相机版本。它只记录视频。

尽管这是一款自定义应用,但我希望通过照片和图库应用可以轻松看到由此录制的视频。

我的印象是,这就是" MediaScannerConnection"上课是为了。我找到了一些常见的建议,说明如何在" sendBroadcast"模式,或更多手动" scanFile"做法。我已经实施了这两个选项,发现它们似乎没有效果。当我停止录制器时,会存储一个有效的视频(之后我可以从文件浏览器播放),但照片或图库都不会识别新视频。

我一直将视频存储在" /storage/emulated/0/DCIM/Camera/20151223_150115.mp4"等文件中。该目录还包含相机应用程序拍摄的视频。基本路径是从" Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)"获得的。我最初尝试更换"相机"目录名称基于我的应用程序名称,但因为它没有工作(照片/图库没有看到它,尽管它存储得当),我决定尝试将它们存储在存储股票视频的地方。那也不行。

我的测试设备是Galaxy Note 3,运行Android 5.0。

我第一次尝试使用MediaScannerConnection是这样的:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + outputFilePath)));

" outputFilePath"的一个值正是上面显示的路径。

由于这似乎没有做任何事情,我后来尝试了这个:

new SingleMediaScanner(getApplicationContext(), new File(outputFilePath));

其中" SingleMediaScanner"是这样的:

public static class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {

    private MediaScannerConnection mMs;
    private File mFile;

    public SingleMediaScanner(Context context, File f) {
        mFile = f;
        mMs = new MediaScannerConnection(context, this);
        mMs.connect();
    }

    @Override
    public void onMediaScannerConnected() {
        mMs.scanFile(mFile.getAbsolutePath(), "image/*");
    }

    @Override
    public void onScanCompleted(String path, Uri uri) {
        mMs.disconnect();
    }
}

我尝试在调试器中运行最后一个实现,我看到它已经到了" onScanCompleted",但上述应用都没有看到新视频。

更新

通过当前的实施," onScanCompleted"使用" path"来调用回调方法和" uri"参数,具有以下值:

path:                         /storage/emulated/0/DCIM/Camera/20151223_194434.mp4
uri.toString():               content://media/external/file/106639
Uri.fromFile(new File(Path)): file:///storage/emulated/0/DCIM/Camera/20151223_194434.mp4

0 个答案:

没有答案