我写了个自动播放的程序。主界面是listactivity的。在onListItemClick事件中记录点击的项并播放些项音乐。如:    Intent   it = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse(music);
        it.setDataAndType(uri, "audio/mp3");
        startActivity(it);
然后会调用系统自带的音乐应用播放,播放完成后音乐应用会自动退出。然后我在主activity的onRestart方法里面播放下一首。
Intent it1 = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse(music);
        it1.setDataAndType(uri, "audio/mp3");
        startActivity(it1);
注:music是局部变量,记录的是当前要放的音乐文件。目录是规律性的,因此只要知道当前的文件就可以知道下一项所对应的文件。
每次都循环上面的两个过程,直至放完所有的音乐。我觉得逻辑上是没有问题的。程序运行的时候有些也是正常的(放完一首能自动放下一首)。但是有个问题。就是有的时候放完一首后,确实也跳到下一首了,但是跳至下一首时下一首放了一两秒就停了进度条直接跑到最后面停着不放了,有时候还跟本没声音进度条直接跑到最后停着不放了。我觉得用代码调音乐应用和自个去点应是一样的效果,而我自动一首一首的点把onRestart里面的方法注释的话是正常的。效果应是一样的才对啊,只不过用代码调用快多了而已。高人们啊!!!!!!!!!!!!!!!!!!!999999999999999999999999999999999999999

解决方案 »

  1.   

    可以是由于播放第一次后你没有正确释放musicplayer的一些资源,导致第二次出问题了
      

  2.   

    我也这样猜测过啊,自动调用比手动快得多,可能手动调用点击所花费的时间里系统能帮我们释放一些资源所以不会出现问题吧。但是我也搞不懂我得怎么样去释放这些资源。我是在我的activity里调用一个系统的音乐应用activity.
      

  3.   

    请教楼主,为什么我使用下面的方法,出现错误ActivityNotFoundExceptionIntent it = new Intent(Intent.ACTION_VIEW); 
    Uri uri =  Uri.parse("file:///sdcard/NotEasy.mp3");  
    it.setDataAndType(uri, "audio/mp3");
    // 启动Activity
    startActivity(intent);