需要Android媒体播放器播放/停止帮助



我正在尝试创建我的第一个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();
            }
        }
    });

}
}

任何帮助都将不胜感激,谢谢。

何时启动/暂停:

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());

编辑:我还没有找到将原始文件转换为文件描述符的方法,所以我使用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();
    }
}

当媒体播放器停止时,也可以释放它。

您是否尝试重置MP?

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

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

相关内容

最新更新