【问题标题】:How to make the standard music player find my files如何让标准音乐播放器找到我的文件
【发布时间】:2013-02-13 16:58:45
【问题描述】:

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

我使用此代码下载文件

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){

        }
}

【问题讨论】:

  • 它应该自动完成。下载项目后,您可能需要重新启动音乐播放器。

标签: android android-mediascanner


【解决方案1】:

您可以通过广播强制扫描媒体文件:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      每当您添加删除文件时,让 MediaStore Content Provider 知道它使用

      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())));
      

      太贵了,扫描所有东西。我的建议:如果可以,请使用“每个文件”的方法。

      【讨论】:

        猜你喜欢
        • 2017-09-13
        • 2012-11-30
        • 2021-10-01
        • 1970-01-01
        • 2022-11-15
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多