当前位置: 首页 > 知识库问答 >
问题:

程序下载的MP3文件不出现在任何音乐播放器中

都浩淼
2023-03-14

我想下载的文件出现在音乐播放器,它是可播放的,当我从文件资源管理器手动打开它。我尝试添加专辑名称和艺人名称,但似乎不起作用。

Context context;
public DownloadMusic(Context context)
{
    this.context = context;
}

NotificationCompat.Builder noti;
Notification notify;
NotificationManager manager;
String channel="chennel";
MediaScannerConnection scanner;
@Override
protected String doInBackground(String... strings) {
    try {
        downloadStartNotification(strings[3]);
        URL url = new URL(strings[strings.length-2]);
        URLConnection connection = url.openConnection();
        connection.connect();
        int fileLength = connection.getContentLength();
        int progress;
        InputStream input = new BufferedInputStream(url.openStream());
        File path = new File(Environment.getExternalStorageDirectory() + File.separator
                + "G-Music");
        String filepath = path+File.separator+strings[3]+".mp3";
        try {
            path.mkdir();
        }catch (Exception e){}
        OutputStream output = new FileOutputStream(filepath);
        byte data[] = new byte[1024];
        long total = 0;
        int count;
        showNotification(strings[3]);
        while ((count = input.read(data)) != -1) {
            total += count;
            progress = (int) (total * 100 / fileLength);
            noti.setProgress(100,progress,false);
            noti.setContentText(progress+" %");
            manager.notify(2,noti.build());
            output.write(data, 0, count);
        }
        output.flush();
        output.close();
        input.close();

        modify(filepath,strings);
        downloadFinishNotification(strings[3]);
        musicAdd(filepath);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}
void musicAdd(final String path)
{
    File audioFilePath = new File(path);
    context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(audioFilePath)));
    MediaScannerConnection.scanFile(
            context,
            new String[]{ path },
            new String[]{ "audio/mp3", "*/*" },
            new MediaScannerConnection.MediaScannerConnectionClient()
            {
                public void onMediaScannerConnected()
                {
                }
                public void onScanCompleted(String path, Uri uri)
                {
                }
            });
}

我想下载的文件出现在音乐播放器,它是可播放的,当我从文件资源管理器手动打开它。我尝试添加专辑名称和艺人名称,但似乎不起作用。

共有1个答案

蓬森
2023-03-14

你可能需要告诉Android系统你下载了一个新文件

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

或者它仍然不起作用

MediaScannerConnection.scanFile(
    context, 
    new String[]{ pathFile1, pathFile2 }, 
    new String[]{ "audio/mp3", "*/*" }, 
    new MediaScannerConnectionClient()
    {
        public void onMediaScannerConnected()
        {
        }
        public void onScanCompleted(String path, Uri uri)
        {
        }
    });
 类似资料:
  • 我已经在android studio中创建了一个音乐播放器应用程序。当我运行它时,没有问题,应用程序运行良好,但当我尝试从文件管理器播放歌曲时,应用程序选择弹出窗口显示我的应用程序。当我选择音乐播放器时,它会打开音乐播放器,但不会播放歌曲。只显示最后播放的歌曲。如何自动播放所选歌曲?我有什么需要捕捉的意图吗? AndroidManifest。xml 主要活动。JAVA

  • 我正在为android开发音乐播放器。我编写了一个代码,从android手机上获取所有音频(标题、艺术家姓名、uri、专辑艺术)。但问题是加载所有歌曲需要1分钟以上。所有音乐播放器应用如何处理此问题。有没有办法一首接一首地获取或加载音频歌曲并添加到RecyclerView中。比如Facebook新的订阅源。首先,当用户向下滚动时,它会加载几个故事,然后再加载几个故事。请帮我解决这个问题

  • MP3(MPEG-1/2 Audio Layer-3) MP4(MPEG-4 AAC) WAVE(Linear PCM) 部分文件可能因种类的限制和文件大小而无法播放。 无法播放内建著作权保护功能的文件。 部分在互联网等公开的内容,播放方法可能受到限制。详情请洽询各内容之供货商。

  • 我正试图从Dropbox下载一些音频文件供用户下次在没有互联网的情况下使用,因此代码实际上下载了该文件,但我在播放该音频时遇到了问题,我不知道是否需要解析下载的文件或其他什么,希望您能提供帮助 下载文件并播放它类,它在执行后播放它,或者至少它尝试 我在日志上发现了这个错误 问题是试图播放下载的文件,即使尝试播放它与Android本地播放器它说"该播放器不支持这种类型的音频文件",所以我不知道我是否

  • 如何控制Android或任何其他播放器的默认音乐播放器?通过控制,我的意思是暂停,播放,下一个等等。我必须绑定服务吗?我尝试使用,但它不起作用。当然有出路,因为我在Android市场上看到了控制音乐播放器的应用程序。任何想法?

  • 免责声明:我已经转发了这个问题,并删除了最初的问题,因为一个人给出了一个愚蠢的答案,降低了这个问题的可见性。 基本上,我正在将我的机器人迁移到discord.py的重写版本。 我正在测试机器人与前一个只有几个功能,现在我测试音频功能与on_voice_state_update()事件,机器人应该播放音频时,有人加入一个频道。 我写了这样的事件: 这段代码的作用是,检查用户是否加入了语音频道,加入了