首页 文章

如何让标准音乐播放器找到我的文件

提问于
浏览
0

我的应用程序将一些mp3文件下载到SD卡 . 我想和设备上安装的其他音乐播放器一起播放 . 但其他音乐播放器不会自动找到我下载的文件 . 如何强制MediaScanner运行,以便我的媒体文件可以从音乐应用程序中播放?

我使用此代码下载文件

public void run() {
        loaded = 0;
        try{                
        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(url).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(FileName);
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
        byte[] data = new byte[1024];
        int x=0;
        while((x=in.read(data,0,1024))>=0 && !stop){
            loaded += x;
            bout.write(data,0,x); 
        }
        fos.flush();
        bout.flush();
        fos.close();
        bout.close();
        in.close();

        }catch(Exception e){

        }
}

3 回答

  • 0

    您可以使用广播强制扫描媒体文件:

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

    确保文件所在的文件夹中没有名为“.nomedia”的文件 . 该文件告诉MediaScanner不要检查那里 .

    (注意:nomedia前面有一个“ . ”,表示可能隐藏了)

  • 0

    这是一个简单的“基于单一文件的解决方案”:

    每当你 addremove 文件时,让MediaStore内容提供商使用它来了解它

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));
    

    主要优点:使用MediaStore支持的任何mime类型

    注意:

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

    太贵了,扫描一切 . 我的建议:如果可以,请使用“每个文件”方法 .

相关问题