将音频(wav文件)添加到Android Media Store

时间:2013-06-20 07:33:24

标签: android mediastore android-mediascanner

我有一个记录和播放音频的Android应用。我的录音有问题,Android默认音频播放器(我的情况下为Walkman)无法立即识别它们。此外,当我将手机连接到PC时,计算机的浏览器无法看到录制内容。我应该将每个录音添加到Media Store?如果是,我应该如何通过不触发整个SD卡扫描,但仅将记录本身包含在Media Server数据库中?

我想尽可能避免下面这一行,因为我认为会触发整个SD卡被扫描,这样会耗尽电池电量:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。从“SD card in Android

中获取了一些代码
new MediaScannerWrapper(ctx, mostRecentRecording.getFullPath(), "audio/*").scan();
ctx.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + PathsHandler.getInstance().getRecordingsDirectory())));

下面是我从上面提到的帖子中获取的MediaScannerWrapper:

public class MediaScannerWrapper implements MediaScannerConnectionClient {

     private MediaScannerConnection mConnection;
     private String mPath;
     private String mMimeType;

     public MediaScannerWrapper(Context ctx, String filePath, String mime){
         mPath = filePath;
         mMimeType = mime;
         mConnection = new MediaScannerConnection(ctx, this);
     }

     public void scan(){
         mConnection.connect();
     }

    @Override
    public void onMediaScannerConnected() {
        mConnection.scanFile(mPath, mMimeType);
        Log.d(getClass().getName(), "Media file scanned: "+mPath);
    }

    @Override
    public void onScanCompleted(String arg0, Uri arg1) {
    }

}