MediaPlayer.setDataSource()和prepare()不工作 - 机器人机器人、工作、MediaPlayer、setDataSource

2023-09-12 22:30:23 作者:■□ 空° 心。

我有一个裂缝用MediaPlayer对象并没有多大的成功。如果我添加了完善的资产,我的原文件夹,并用在R int值调用它,它工作正常。但我希望能够拉东西了网址。

据我所读过的setDataSource(文件的)应该接受一个字符串参数的URL到一个文件中。

我不断收到在prepare()语句IO异常。我甚至试过在本地,仍然复制文件没有骰子。

任何人有什么想法?

  MediaPlayer的熔点为新的MediaPlayer();
尝试 {
        mp.setDataSource(http://www.urltofile.com/file.mp3);
        MP prepare()。
        mp.start();
    }赶上(抛出:IllegalArgumentException E){
        e.printStackTrace();
    }赶上(IllegalStateException异常E){
        e.printStackTrace();
    }赶上(IOException异常E){
        e.printStackTrace();
    }
 

解决方案

尝试MediaPlayer.create(),您可能还需要只启动后,玩家实际上是准备好,例如:

  @覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的MediaPlayer播放器= MediaPlayer.create(这一点,Uri.parse(http://www.urltofile.com/file.mp3));
    player.setOn preparedListener(新在preparedListener(){
        @覆盖
        公共无效于prepared(MediaPlayer的MP){
            mp.start();
        }
    });
}
 

AndroidMultimedia框架总结 三 MediaPlayer中建到setDataSource过程

I'm having a crack at using the MediaPlayer object and not having much success. If I add a sound asset to my raw folder and call it using the int value within R, it works fine. But I want to be able to pull things off of url.

According to all of the documentation I've read setDataSource() should accept a string param with a url to a file.

I keep getting an IO exception on the prepare() statement. I've even tried copying the file locally and still no dice.

Anyone have any ideas?

MediaPlayer mp = new MediaPlayer();
try {
        mp.setDataSource("http://www.urltofile.com/file.mp3");
        mp.prepare();
        mp.start();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

解决方案

Try MediaPlayer.create(), you also may want to start only after player is actually ready, for example:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://www.urltofile.com/file.mp3"));
    player.setOnPreparedListener(new OnPreparedListener() { 
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });
}