Android基础:音频和视频的使用
Android 在播放音频和视频方面也是做了相当不错的支持,它提供了一套较为完整的API,使得开发者可以很轻松地编写出一个简易的音频或视频播放器。今天我们开始android中音频和视频使用的学习。
音频的播放
项目结构如下:一个简单的读取sd卡上的音频或者视频资源的应用
在Android 中播放音频文件一般都是使用MediaPlayer 类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。
一、 初始化音频的播放,调用 MediaPlayer 的 setDataSource 方法,可以接收音频文件的绝对路径,也可以是http或者rtsp的url:
private final static String TAG = "MainActivity";private MediaPlayer mediaPlayer = new MediaPlayer();
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initMediaPlayer();
}
private void initMediaPlayer() {
Log.i(TAG, "init media player");
try {
File file = new File(Environment.getExternalStorageDirectory(), "test.mp3");
mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径
mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态
} catch (Exception e) {
e.printStackTrace();
}
}
涉及到读取sd卡文件的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
二、 对音频的一系列操作:
// 播放音频public void playMusic(View view) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start(); // 开始播放
}
}
// 暂停音频public void pauseMusic(View view) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause(); // 暂停播放
}
}
// 停止音频public void stopMusic(View view) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset(); // 停止播放
initMediaPlayer();
}
三、 在ondestroy方法中释放资源:
@Overrideprotected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
四、 layout文件activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<VideoView android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="playVideo"
android:text="PlayVideo" />
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="pauseVideo"
android:text="PauseVideo" />
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="replyVideo"
android:text="ReplayVideo" />
</LinearLayout></LinearLayout>
视频的播放
一、 初始化视频的播放:
private VideoView videoView;
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_video);
videoView = (VideoView) findViewById(R.id.video_view);
initVideoPath();
}
// 初始化播放文件private void initVideoPath() {
File file = new File(Environment.getExternalStorageDirectory(), "test.mp4");
videoView.setVideoPath(file.getPath()); // 指定视频文件的路径
}
二、 视频的一系列的操作:
// 播放视频public void playVideo(View view) {
if (!videoView.isPlaying()) {
videoView.start(); // 开始播放
}
}
//暂停视频public void pauseVideo(View view) {
if (videoView.isPlaying()) {
videoView.pause(); // 暂时播放
}
}
//重新播放视频public void replyVideo(View view) {
if (videoView.isPlaying()) {
videoView.resume(); // 重新播放
}
}
三、 在ondestroy方法中释放资源:
@Overrideprotected void onDestroy() {
super.onDestroy();
if (videoView != null) {
videoView.suspend();
}
}
四、 视频的layout的文件:activity_play_video.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<VideoView android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="playVideo"
android:text="PlayVideo" />
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="pauseVideo"
android:text="PauseVideo" />
<Button android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="replyVideo"
android:text="ReplayVideo" />
</LinearLayout></LinearLayout>
- 赞