需要Android Mediaplayer播放/停止帮助

时间:2012-01-21 00:32:47

标签: android audio media-player playback

我正在尝试创建我的第一个Android应用程序,我想在这里完成的是播放声音,然后通过相同的按钮停止它。

当我点击它时播放声音有效,当我再次点击它时停止播放,但是当我第三次点击它再次开始声音时它将不播放。

我最终会在这里听到一些声音,所以我想知道我的项目是如何正确布局的?我可以节省一些时间吗?我有错误的方法吗?

package test.soundy.com;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class TestActivity extends Activity {
private MediaPlayer sound;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    sound = MediaPlayer.create(Test.this, R.raw.sound1);  

    Button test = (Button)this.findViewById(R.id.button1);
    test.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (sound.isPlaying()) {
                sound.stop();
            } else {
                sound.start();
            }
        }
    });


}
}

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:6)

开始/暂停时:

if(sound.isPlaying()){
    sound.pause();
}else{
    sound.start();
}

开始/停止时:

if(sound.isPlaying()) {
    sound.stop();
} else {
    sound.reset();
    sound.setDataSource(yourURL);  //or InputStream etc.
    sound.prepare();
    sound.start();
}

您也可以使用sound.seekTo(time)跳到某个位置。 请记住,当您想要播放新的声音(或重新启动)时,您应首先resetsetDataSourceprepare然后再start

编辑:获取FileDescripter

AssetManager assetManager=Context.getAssets();
AssetFileDescriptor fileDescriptor = assetManager.openFd("a2.mp3");
mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor());
编辑:我还没有找到将原始文件转换为filedescriptor的方法,所以我使用了MediaPlayer的静态方法

MediaPlayer  mediaPlayer = MediaPlayer.create(Activity.this,R.raw.a1);
mediaPlayer.setOnCompletionListener(new musicCompletionListener());
mediaPlayer.start();
private class musicCompletionListener implements OnCompletionListener {
    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
        mediaPlayer.release();
    }
}

同时在停止播放时释放媒体播放器。

答案 1 :(得分:0)

您是否尝试重置MP?

if (sound.isPlaying()) {

                sound.stop();
            } else {
                sound.reset();
                sound.prepare();
                sound.start();
            }

...编辑 完整的状态图如下:http://developer.android.com/reference/android/media/MediaPlayer.html