【问题标题】:Media player returns error and no sound plays媒体播放器返回错误并且没有声音播放
【发布时间】:2018-02-19 20:09:08
【问题描述】:

我一直在测试为应用启动声音创建的基本媒体播放器。媒体是从我的 firebase 数据库中包含的 URL 中提取的。媒体播放器可以在早期的模拟器上运行,但不能在任何真实设备上运行。

错误代码是在状态 0 中调用 MediaPlayer start (Error -38, 0)。 我读过这是因为在播放媒体之前 onprepare 还没有准备好,所以我添加了一个 onPreparelistener ,它仍然给出了同样的错误。接下来我可以尝试什么?

public class harropMediaplayer {
MediaPlayer player;
String media;
Context c;
public harropMediaplayer(String media,Context c){
    this.media = media;
    this.c = c;
    Log.i("Sound: ","Initalized");

}

public void volumeSetting(){

    SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(c);

    boolean bnSoundMute = sharedpreferences.getBoolean("soundMute",false);

    if(bnSoundMute==true){
mutevol();
        Log.i("sound","muted");

    }else{
volmax();
        Log.i("sound","max vol");
    }
}
public void plysound() {



    player = new MediaPlayer();

    Log.i("Url", media);
    try {
        player.setDataSource(media);
    } catch (IOException e) {
        e.printStackTrace();
    }
    catch (IllegalStateException o){
        o.printStackTrace();
    }
    try {
        player.prepare();
        volumeSetting();
        player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            public void onPrepared(MediaPlayer mp) {
               if (!mp.isPlaying()){
                   mp.start();
               }

            }

        });


    } catch (IOException e) {
        e.printStackTrace();
    }

    Log.i("Sound playing", "Ok");




}

public void stopplying(){
    player.stop();

}
public void volmax(){
    player = App_Objects.mp;
    player.setVolume(1,1);
}
public void mutevol(){
    player = App_Objects.mp;
    player.setVolume(0,0);
} 

【问题讨论】:

    标签: java android android-mediaplayer media


    【解决方案1】:

    onPrepareListener 和准备不一样,你只需调用:

    mediaPlayer.prepare();
    

    【讨论】:

    • 我在没有准备好的监听器的情况下这样做了,并且得到了同样的错误
    • 现在只运行一个测试来确认会让你知道
    • 已修复感谢@Marcos,它位于 volmute 和 maxvol 部分,它仍然在旧代码中,我没有看到 player = Appobjects.mp 删除它然后实现 player.prepare() 修复它,谢谢非常感谢您的帮助
    【解决方案2】:

    您需要在启动媒体播放器之前对其进行准备。使用 mediaplayer.prepare()

    在这种情况下,一旦您设置了来源 称呼 播放器.prepare(); 播放器.start();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多