我有一个音频文件 700k的mp3文件,放到raw目录下
播放的代码如下:
Timer t = new Timer();
t.schedule(new TimerTask(){
@Override
public void run() {
final MediaPlayer player = MediaPlayer.create(TestappActivity.this,R.raw.test);
player.setOnCompletionListener(new OnCompletionListener(){ @Override
public void onCompletion(MediaPlayer mp) {
player.release();
}});
player.start();
}}, 5000);奇怪的是,在一个测试的app中,运行的很好,声音能从头播放到结尾但是放到真正的产品中,只能播放到一半,然后就再也不播放了,onCompletion这个方法也不回调了在停止播放时,看到这样的log:
09-25 17:48:25.469: DEBUG/dalvikvm(10235): GC_CONCURRENT freed 1590K, 47% free 5628K/10567K, external 1819K/1831K, paused 8ms+3ms
09-25 17:48:25.469: DEBUG/AudioTrack(1357): Audio Track already stopped大家有碰到过这个问题吗,是内存不够造成的吗?
播放的代码如下:
Timer t = new Timer();
t.schedule(new TimerTask(){
@Override
public void run() {
final MediaPlayer player = MediaPlayer.create(TestappActivity.this,R.raw.test);
player.setOnCompletionListener(new OnCompletionListener(){ @Override
public void onCompletion(MediaPlayer mp) {
player.release();
}});
player.start();
}}, 5000);奇怪的是,在一个测试的app中,运行的很好,声音能从头播放到结尾但是放到真正的产品中,只能播放到一半,然后就再也不播放了,onCompletion这个方法也不回调了在停止播放时,看到这样的log:
09-25 17:48:25.469: DEBUG/dalvikvm(10235): GC_CONCURRENT freed 1590K, 47% free 5628K/10567K, external 1819K/1831K, paused 8ms+3ms
09-25 17:48:25.469: DEBUG/AudioTrack(1357): Audio Track already stopped大家有碰到过这个问题吗,是内存不够造成的吗?
解决方案 »
- 请问如何结束Handler的线程
- 计算机远程控制手机(非恶意程序)
- android 自定义dialog,老报错! 请高手指教
- 如何在主类中添加外部定义的view——小白,期待高手解答,进来聊聊经验也感激不尽啊——————-——————
- 求教:使用SimpleCursorAdapter如何才能从数据库的最后一条数据开始显示
- 有关如何使用mutable的bitmap???
- 急求!android
- android studio补全代码和自动提示突然没了。。。是怎么回事,求帮助
- Retrofit网络无法请求
- 在AVD运行时,惠普笔记本改BIOS怎么弄
- 怎么显示一个窗体不规则的Dialog
- android 2.2和2.3apn拨号问题,难搞
LZ可以用setDataSource(String path),prepare()试试
最好不要用create,比较耗内存,文件一大就会出现各种问题
应该是GC导致播放被暂停了。我启动了另外一个线程来监控这个播放过程,一旦发现它不再播放,就马上调用mediaPlayer.start()方法来继续播放,这样可以解决这个问题。但是我不是很清楚为什么GC之后,MediaPlayer不自动继续播放,而需要人工干预