Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 媒体播放器返回错误且没有声音播放_Java_Android_Android Mediaplayer_Media - Fatal编程技术网

Java 媒体播放器返回错误且没有声音播放

Java 媒体播放器返回错误且没有声音播放,java,android,android-mediaplayer,media,Java,Android,Android Mediaplayer,Media,大家好,我一直在测试我为应用程序启动声音创建的基本媒体播放器。媒体从我的firebase数据库中包含的url中提取。。媒体播放器可以在早期的模拟器上工作,但不能在任何实际设备上工作 错误代码为MediaPlayer在状态0下启动调用(错误-38,0) 我读到这是因为onprepare在播放媒体之前还没有准备好。。所以我添加了一个onPreparelistener,它仍然会给出相同的错误。有人帮忙吗 public class harropMediaplayer { MediaPlayer play

大家好,我一直在测试我为应用程序启动声音创建的基本媒体播放器。媒体从我的firebase数据库中包含的url中提取。。媒体播放器可以在早期的模拟器上工作,但不能在任何实际设备上工作

错误代码为MediaPlayer在状态0下启动调用(错误-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);
} 

您需要在启动媒体播放器之前准备好它。使用mediaplayer.prepare()命令

在这种情况下,一旦设置了源 呼叫 Player.prepare();
Player.start()

onPrepareListener与preparing不同,您只需调用:

mediaPlayer.prepare();

我这样做的时候没有准备好的侦听器,也没有让他们犯同样的错误现在运行一个测试来确认会让你知道修复了感谢@Marcos它在volmute和maxvol部分,它仍然在旧代码中,我没有看到player=Appobjects.mp删除它,然后实现player.prepare()修好了谢谢你的帮助