首页 > 代码库 > Android 之 向媒体库添加新媒体

Android 之 向媒体库添加新媒体

在默认的情况下。由自己的程序创建,并存储在应用程序私有文件夹中的媒体文件,对其他应用程序来说是不可用的。要想这些媒体文件可以被其他应用程序使用。需要把他们添加到媒体库中,目前有两种方法可以实现。

 

第一种:使用媒体扫描仪添加到媒体库。

/**     * 扫描指定目录了的文件,添加到媒体库     *      * @param filePath     *            路径     */    private void scanMedia(final String filePath) {                MediaScannerConnectionClient mediaSan = new MediaScannerConnectionClient() {            private MediaScannerConnection msc = null;            {                // 首先需要创建与媒体扫描仪的连接                msc = new MediaScannerConnection(MainActivity.this, this);                msc.connect();            }            @Override            public void onScanCompleted(String path, Uri uri) {                // 扫描完成关闭与媒体扫描仪的连接                msc.disconnect();                MainActivity.this.runOnUiThread(new Runnable() {                    @Override                    public void run() {                        Toast.makeText(MainActivity.this, "扫描完成!",                                Toast.LENGTH_SHORT).show();                    }                });            }            @Override            public void onMediaScannerConnected() {                // 可以指定一个mime类型,如果不指定Media Scaner根据文件名自己假定一种类型                String mimeType = null;                msc.scanFile(filePath, mimeType);            }        };    }
View Code

 

这里主要用到的是“MediaScannerConnectionClient”和“MediaScannerConnection”两个类。

实现步骤:

(1)创建与媒体扫描仪的连接。

(2)调用scanFile方法扫描文件。

(3)扫描完成后,关闭与扫描仪的连接。

 

第二种:手动添加到媒体库

 

    ContentValues values = new ContentValues();                //媒体文件的标题                values.put(Audio.AudioColumns.TITLE,"我的媒体文件");                //时间戳                values.put(Audio.AudioColumns.DATE_ADDED,System.currentTimeMillis()/1000);                //文件类型                values.put(Audio.AudioColumns.MIME_TYPE,"audio/amr");                //指定文件路径。必须是绝对路径                values.put(MediaStore.Audio.Media.DATA, "/sdcard/myVideo.mp4");                                //把文件插入到媒体库ContentProvider中                ContentResolver resolver = getContentResolver();                Uri uri= resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);                                //发送广播。通知此媒体文件已经可以用啦                sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,uri));
View Code