android 如何播放音频,Android中用MediaPlay播放音频和视频

在播放音频中SoundPool是个很好用的类,但是SoundPool只能播放音频,且通常只用来播放较短的音频,这就需要另外的类来实现视频和长音频的播放,那就是MediaPlay

实现MediaPlay的基本步骤是

创建MediaPlay对象

调用setDataSource对象这是音频文件路径

调用prepare加载音频

调用start开始播放

调用pause暂停

调用stop停止播放

而MediaPlay也有其他方法

getCurrentPosition,获得当前播放位置

getDuration,获得播放时长

isPlay,判断是否处于播放状态

release,释放资源

reset,回到最初的状态

seekTo,设置播放位置

setVolume,设置音量

private  MediaPlayer mediaPlayer=null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mediaPlayer=new MediaPlayer();

if(ContextCompat.checkSelfPermission(this,

Manifest.permission.READ_EXTERNAL_STORAGE)

!= PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(this,

new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);

}else{

initMediaPlayer();

}

Button btPlayMp3= (Button) findViewById(R.id.btPlayMp3);

btPlayMp3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if(!mediaPlayer.isPlaying()){

mediaPlayer.start();

}

}

});

Button btPauseMp3= (Button) findViewById(R.id.btPauseMp3);

btPauseMp3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if(mediaPlayer.isPlaying()){

mediaPlayer.pause();

}

}

});

Button btStopMp3= (Button) findViewById(R.id.btStopMp3);

btStopMp3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if(mediaPlayer.isPlaying()){

mediaPlayer.stop();

try {

mediaPlayer.prepare();

} catch (IOException e) {

e.printStackTrace();

}

}

}

});

}

private void initMediaPlayer(){

try {

File file=new File(Environment.getExternalStorageDirectory()+"/music","honor.mp3");

mediaPlayer.setDataSource(file.getPath());

mediaPlayer.prepare();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

if(requestCode==1){

if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){

initMediaPlayer();

}else{

Toast.makeText(this,"未获得SD卡访问权限",Toast.LENGTH_LONG).show();

finish();

}

}

}

@Override

protected void onDestroy() {

if(mediaPlayer!=null){

mediaPlayer.stop();

mediaPlayer.release();

mediaPlayer=null;

}

super.onDestroy();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值