首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实时流链接MediaPlayer Android

实时流链接MediaPlayer Android
EN

Stack Overflow用户
提问于 2019-03-18 08:11:45
回答 1查看 51关注 0票数 1

我正在尝试让这个流播放:

代码语言:javascript
复制
    MediaPlayer mp = new MediaPlayer();
    try {
        mp.setDataSource("http://knhc-ice.streamguys1.com/live");
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.prepareAsync();
        mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
            @Override
            public void onPrepared(MediaPlayer mp)
            {
                mp.start();
            }
        });
    } catch (IOException e) {
        e.printStackTrace();
    }

但当应用程序运行时,它会给我这个错误:

代码语言:javascript
复制
2019-03-17 17:01:05.035 5924-5924/com.example.android.c895 W/System.err: java.io.IOException: setDataSource failed.: status=0x80000000

我知道我传递给媒体播放器的链接只是一个播放器,但我希望该播放器自动播放并被传递到MediaPlayer。有没有什么办法可以让我这样做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-18 09:55:08

我能弄明白的是把我的MediaPlayer放在我的应用程序的异步任务(后台线程)上。

代码语言:javascript
复制
mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

        b = (ImageButton) bottomSheet.findViewById(R.id.imageButton);

        new PlayerTask().execute(s);

        b.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view)
            {
                if(started)
                {
                    mediaPlayer.start();
                }
            }
        }); 
class PlayerTask extends AsyncTask<String, Void, Boolean>
{

    @Override
    protected Boolean doInBackground(String... strings) {


        try
        {
            mediaPlayer.setDataSource(strings[0]);
            mediaPlayer.prepare();
            prepared = true;
        } catch(IOException e)
        {
            e.printStackTrace();
        }

        return prepared;
    }

    @Override
    protected void onPostExecute(Boolean aBoolean)
    {
        super.onPostExecute(aBoolean);
        mediaPlayer.start();
    }
}

由于代码几乎是相同的,有人能回答为什么这不只是在主线程上工作吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55213224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档