android-MediaPlayer无法正确播放音频
作者:互联网
我正在尝试在WebView中播放音频.该音频由URL提供.我通过覆盖url加载来解决这个问题.它开始播放音频,但是很多时候Media Player都停止了.这种情况发生的时间大约为30%,并且此音频文件的时间不得超过30秒.
我尝试了MP3,OGG和WAV,并且它们中的任何一个都发生了.
我也尝试过但先下载文件然后播放它,而不是流式传输它,但也没有用.
这是一段代码…向您展示其工作方式:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.endsWith(".ogg")){
AudioLoader audioLoader = new AudioLoader(url);
audioLoader.start();
return true;
}
else if (url.endsWith(".wav")){
Uri tempPath = Uri.parse(url);
MediaPlayer player = MediaPlayer.create(interfazWeb, tempPath);
if (player != null){
player.start();
} else {
Log.e(TAG, "No se puede abrir el audio:" + url);
}
return true;
}
else if (url.endsWith(".mp3")){
AudioLoader audioLoader = new AudioLoader(url);
audioLoader.start();
return true;
}else{
return super.shouldOverrideUrlLoading(view, url);
}
}
我已经检查了由“ AudioLoader”保存的音频文件,这很好. WAV案例正在使用我的第一次尝试,并通过流媒体播放它.
还尝试了SoundPool和AsyncPlayer …没有任何效果!
所以…到目前为止,我认为这不是通信,编解码器或缓冲区问题.我唯一的提示是这些日志条目,使用所有格式和所有方法,每次出现问题时都会重复这些日志条目:
12-31 09:41:49.284: WARN/AudioFlinger(59): write blocked for 160 msecs, 20 delayed writes, thread 0xd7a8
12-31 09:41:49.554: WARN/TimedEventQueue(59): Event 6 was not found in the queue, already cancelled?
请问有人有线索吗?或者我只是面临一个错误/缺失功能.
祝您2011年愉快,特别是如果您能够帮助我:P
问候,曼努埃尔.
解决方法:
您正在以本地方式创建audioLoader和/或MediaPlayer对象(这些对象是功能shouldOverrideUrlLoading的本地对象).因此,一旦退出该功能,当垃圾收集器尝试收集所有未引用的对象时,它将破坏您的对象,然后声音将停止.
尝试将AudioLoader和MediaPlayer对象声明为全局对象:
private AudioLoader audioLoader;
private MediaPlayer player;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.endsWith(".ogg")){
audioLoader = new AudioLoader(url);
audioLoader.start();
return true;
}
else if (url.endsWith(".wav")){
Uri tempPath = Uri.parse(url);
player = MediaPlayer.create(interfazWeb, tempPath);
if (player != null){
player.start();
} else {
Log.e(TAG, "No se puede abrir el audio:" + url);
}
return true;
}
else if (url.endsWith(".mp3")){
audioLoader = new AudioLoader(url);
audioLoader.start();
return true;
}else{
return super.shouldOverrideUrlLoading(view, url);
}
}
标签:media-player,android 来源: https://codeday.me/bug/20191208/2094632.html