媒体播放器 returns 错误,没有声音播放
Media player returns error and no sound plays
我一直在测试为应用程序启动声音创建的基本媒体播放器。媒体是从我的 firebase 数据库中包含的 URL 中提取的。媒体播放器可以在较早的模拟器上运行,但不能在任何真实设备上运行。
错误代码是在状态 0 中调用 MediaPlayer 启动(错误 -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 和准备不一样,你只需要调用:
mediaPlayer.prepare();
我一直在测试为应用程序启动声音创建的基本媒体播放器。媒体是从我的 firebase 数据库中包含的 URL 中提取的。媒体播放器可以在较早的模拟器上运行,但不能在任何真实设备上运行。
错误代码是在状态 0 中调用 MediaPlayer 启动(错误 -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 和准备不一样,你只需要调用:
mediaPlayer.prepare();