java - 关于MediaPlayer.setDatasource(URL)的查询;

标签 java android stream media-player

我是 android 编程的初学者,我想编写 mp3 应用程序以从 URL 调用一些 mp3 文件,所以当我在 android 开发人员中显示“媒体播放器”时,我将 URL 放在 setDataSource 它工作正常,但问题是 Activity 需要很多时间来显示它,有时应用程序会崩溃。这是我的代码的一部分:

    file_url = Mp3_Linkes[num];

    //Set Source
    try {   
        mp.setDataSource(file_url); 
    } catch (Exception e) {

        Toast.makeText(this, "Source Error !!", Toast.LENGTH_LONG).show();
    }


    //Prepare
    try {
        mp.prepare();
    }catch(Exception e)
    {
        Toast.makeText(this, "Prepare Error !!", Toast.LENGTH_LONG).show();
    }



    //Start
    mp.start();

最佳答案

您的 Activity 正在阻塞,因为您正在主线程(UI 线程)上调用准备

相反,您可以使用 prepareAsynch 和 OnPreparedListener 在从远程源加载时专门启动:

代码:

try {

     mp.setDataSource(file_url);

    mp.setOnPreparedListener(new OnPreparedListener() {
         public void onPrepared(MediaPlayer player) {

                player.start();
        }
     });
    mp.prepareAsync();

关于java - 关于MediaPlayer.setDatasource(URL)的查询;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817536/

相关文章:

java - Web 服务最重要的用途

java - 如何在Java中实现递归方法中的引用传递

java - 我需要使用没有数组或循环的 Java/RegEx 从大型数据文件的车辆描述字段中删除 ~50 个颜色名称

android - 使用 zxing 的 DataMatrix 编码仅生成 14px 位图

android - 在 Android 中以编程方式居中 ProgressBar

java - JDBC(微软SQL服务器): No suitable driver found for url

java - android经纬度返回0.0

Node.js:如何通过我的服务器将远程文件流式传输给用户?

serialization - Haskell中未定义长度列表的二进制序列化

c++ - 在 C++ 高效存储上,刷新文件策略