播放下载的歌曲

时间:2013-09-22 23:26:55

标签: android

我是android的新手,所以我在思考解决方案时遇到了问题。我做的第一件事是将活动改为不同的屏幕,而在活动中我下载了一首歌。然后我返回MainActivity,这是一个MediaPlayer活动。现在,我对活动生命周期有点困惑,如果我返回MainActivity,并运行:

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
        File song = new File(path, "SpaceJam.mp3");

那是在我的onCreate中,所以基本上我问每次你回到活动时onCreate会运行吗?

其次,我有一个播放/暂停按钮:

btnPlay.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // check for already playing
                if(mp.isPlaying()){
                    if(mp!=null){
                        mp.pause();
                        // Changing button image to play button
                        btnPlay.setImageResource(R.drawable.play_t);                    }
                }else{
                    // Resume song
                    if(mp!=null){
                        mp.start();
                        // Changing button image to pause button
                        btnPlay.setImageResource(R.drawable.pause_t);
                    }
                }

            }
        });

问题是,我不想使用:

mp.setDataSource(path+"/"+fileName);
mp.prepare();
mp.start();

在我的播放按钮上,因为它每次都会重新初始化歌曲。这样做的最佳方式是什么?

由于

1 个答案:

答案 0 :(得分:1)

That's in my onCreate, so basically I'm asking does onCreate run every time you return to an activity?

没有。 onResume()onStart()是不错的选择,但您应该阅读活动生命周期文档并相应地选择。

http://developer.android.com/training/basics/activity-lifecycle/index.html

On my play button, because it'll reinitialize the song every time. What's the best way to go about doing this?

要保存当前位置,例如在onPause()

Mediaplayer.pause();
length=Mediaplayer.getCurrentPosition();

要恢复,例如在onResume()

Mediaplayer.seekTo(length);
Mediaplayer.start();