《Android第一行代码》first reading 十一
16lz
2021-01-24
Android多媒体应用 二
音频和视频播放
音频播放
步骤:
- 创建MediaPlayer
- 绑定监听
- 运行时权限处理
- 完善
onClick()
- 重写
onDestory()
,释放MediaPlayer
代码
//布局就是4个按钮public class MainActivity extends AppCompatActivity { MediaPlayer mediaPlayer = new MediaPlayer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//ButterKnife绑定 ButterKnife.bind(this);//运行时权限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1); }else{ initMediaPlayer();//初始化MediaPlayer } } private void initMediaPlayer() { try { File file = new File(Environment.getExternalStorageDirectory(),"music.mp3"); mediaPlayer.setDataSource(file.getPath());//指定音频路径 mediaPlayer.prepare();//让MediaPlayer进入准备阶段 } catch (IOException e) { e.printStackTrace(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ initMediaPlayer(); }else{ Toast.makeText(this,"拒绝权限将无法使用程序",Toast.LENGTH_SHORT).show(); finish(); } break; } } @OnClick({R.id.play,R.id.pause,R.id.stop,R.id.jump}) public void onClick(View v){ switch (v.getId()){ case R.id.play: if (!mediaPlayer.isPlaying()){ mediaPlayer.start(); } break; case R.id.pause: if (mediaPlayer.isPlaying()){ mediaPlayer.pause(); } break; case R.id.stop: if (mediaPlayer.isPlaying()){ mediaPlayer.reset(); initMediaPlayer(); } break; default: break; } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null){ mediaPlayer.stop(); mediaPlayer.release();//释放掉与MediaPlayer是否正在播放音频 } }}
MediaPlayer常用方法:
方法名 | 功能描述 |
---|---|
setData() | 设置要播放的音频的位置 |
prepare() | 在开始播放前调用此方法完成准备工作 |
start() | 开始或继续播放音频 |
pause() | 暂停播放音频 |
reset() | 将MediaPlayer对象重置到刚刚创建时的状态 |
seekTo() | 从指定的位置开始播放音频 |
stop() | 停止播放。调用这个方法后的MediaPlayer对象无法再播放音频 |
release() | 释放掉与MediaPlayer对象相关的资源 |
isplaying() | 判断当前MediaPlayer是否正在播放音频 |
getDuration() | 获取载入的音频文件的时长 |
注意:
我们还要在AndroidMainfest文件中添加上权限:
视频播放
步骤:
- 获取VideoView
- 绑定监听
- 运行权限处理
- 完善
onClick()
- 重写
onDestory()
,释放VideoView
代码:
//布局是三个button加一个VideoViewpublic class VideoActivity extends AppCompatActivity { @BindView(R.id.video_view) VideoView videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); ButterKnife.bind(this);//运行和权限处理 if (ContextCompat.checkSelfPermission(VideoActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(VideoActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1); }else{ initVideoPath(); } } private void initVideoPath() { File file = new File(Environment.getExternalStorageDirectory(),"movie.mp4"); //初始化VideoView videoView.setVideoPath(file.getPath()); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ initVideoPath(); }else{ Toast.makeText(this,"拒绝权限将无法使用程序",Toast.LENGTH_SHORT).show(); finish(); } break; default: break; } } @OnClick({R.id.play_video,R.id.pause_video,R.id.replay_video}) public void onClick(View v){ switch (v.getId()){ case R.id.play_video: if (!videoView.isPlaying()){ videoView.start(); } break; case R.id.pause_video: if (videoView.isPlaying()){ videoView.pause(); } break; case R.id.replay_video: if (videoView.isPlaying()){ videoView.resume(); } break; } } @Override protected void onDestroy() { super.onDestroy(); if (videoView != null){ videoView.suspend();//释放资源 } }}
VideoView常用方法:
方法名 | 功能描述 |
---|---|
setVideoPath() | 设置要播放的视频文件的位置 |
start() | 开始或继续播放视频 |
pause() | 暂停播放视频 |
resume() | 将视频重头开始播放 |
seekTo() | 从指定的位置开始播放视频 |
isPlaying() | 判断当前是否正在播放视频 |
getDuration() | 获取载入的视频文件的时长 |
suspend() | 释放资源 |
注意:
两个示例代码都需要在手机的根目录下预先放好一个音频和视频。
示例来源于《Android第一行代码》,边读边敲,益于学习。
更多相关文章
- Android(安卓)6.0运行时权限解决方案
- Android(安卓)保存图片到本地
- Android(安卓)权限列表permission说明
- android 得到唯一码和电话号码
- Android(安卓)动态获取创建与删除文件权限
- android 开启关闭wifi服务
- Android(安卓)中如何复制文件的操作
- 原YUV格式的解析 Android(安卓)NV21 视频采集
- [Android开发]android 跨进程通信之content provider