我有一个音频文件 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大家有碰到过这个问题吗,是内存不够造成的吗?

解决方案 »

  1.   

    从external 1819K/1831K看来感觉上是内存不够了
    LZ可以用setDataSource(String path),prepare()试试
    最好不要用create,比较耗内存,文件一大就会出现各种问题
      

  2.   

    谢谢
    应该是GC导致播放被暂停了。我启动了另外一个线程来监控这个播放过程,一旦发现它不再播放,就马上调用mediaPlayer.start()方法来继续播放,这样可以解决这个问题。但是我不是很清楚为什么GC之后,MediaPlayer不自动继续播放,而需要人工干预