通过点击按钮实现播放、暂停和关闭(重置)音频和视频

一、知识点

1. 音频

在Android中一般使用MediaPlayer类来实现播放音频文件。

方法名 功能描述
setDataSource() 设置要播放的音频文件的位置
prepare() 在开始播放之前调用这个方法完成准备工作
start() 开始或继续播放音频
pause() 暂停播放音频
reset() 将MediaPlayer对象重置到刚刚创建的状态
seekTo() 从指定位置开始播放音频
stop() 停止播放音频。调用这个方法后的MediaPlayer对象无法再播放音频
release() 释放掉与MediaPlayer对象相关的资源
isPlaying() 判断当前MediaPlayer是否正在播放音频
getDuration() 获取载入的音频文件的时长

2. 视频

主要使用VideoView类来实现,这个类将视频的显示和控制集于一身。这个类只是帮我们做了一个很好的封装,它的背后仍然是使用MediaPlayer来对视频文件进行控制的。

方法名 功能描述
setVideoPath() 设置要播放的视频文件的位置
start() 开始或继续播放视频
pause() 暂停播放视频
resume() 将视频重头开始播放
seekTo() 从指定位置开始播放视频
isPlaying() 判断当前是否正在播放视频
getDuration() 获取载入的视频文件的时长

二、Demo

1. 效果图


2. activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.thinkpad.mediaplayer.MainActivity">    <Button        android:id="@+id/play_music"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="播放音乐"/>    <Button        android:id="@+id/pause_music"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="暂停音乐"/>    <Button        android:id="@+id/stop_music"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="关闭音乐"/>    <View        android:layout_width="match_parent"        android:layout_height="1dp"        android:background="#000000"/>    <Button        android:id="@+id/play_video"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="播放视频"/>    <Button        android:id="@+id/pause_video"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="暂停视频"/>    <Button        android:id="@+id/replay_video"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="重置视频"/>    <VideoView        android:id="@+id/video_view"        android:layout_width="match_parent"        android:layout_height="wrap_content" />LinearLayout>

3. MainActivity.java

import android.Manifest;import android.content.pm.PackageManager;import android.media.MediaPlayer;import android.os.Environment;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;import android.widget.VideoView;import java.io.File;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private MediaPlayer mediaPlayer = new MediaPlayer(); //创建MediaPlayer对象    //各个控件    private Button playMusic;    private Button pauseMusic;    private Button stopMusic;    private Button playVideo;    private Button pauseVideo;    private Button replayVideo;    private VideoView videoView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实例化控件对象        playMusic = (Button)findViewById(R.id.play_music);        pauseMusic = (Button)findViewById(R.id.pause_music);        stopMusic = (Button)findViewById(R.id.stop_music);        playVideo = (Button)findViewById(R.id.play_video);        pauseVideo = (Button)findViewById(R.id.pause_video);        replayVideo = (Button)findViewById(R.id.replay_video);        videoView = (VideoView)findViewById(R.id.video_view);        //设置点击对象        playMusic.setOnClickListener(this);        pauseMusic.setOnClickListener(this);        stopMusic.setOnClickListener(this);        playVideo.setOnClickListener(this);        pauseVideo.setOnClickListener(this);        replayVideo.setOnClickListener(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            initVideoPath();//初始化Viedo        }    }    //初始化MediaPlayer    private void initMediaPlayer(){        try{            File file = new File(Environment.getExternalStorageDirectory(),"xsdhls.mp3");            mediaPlayer.setDataSource(file.getPath()); //指定音频文件的路径            mediaPlayer.prepare();//让MediaPlayer进入到准备状态        }catch (Exception e){            e.printStackTrace();        }    }    //初始化Video    private void initVideoPath(){        File file = new File(Environment.getExternalStorageDirectory(),"如约而至许嵩.mp4");        videoView.setVideoPath(file.getPath());    }    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        switch (requestCode) {            case 1:                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    initMediaPlayer();                    initVideoPath();                } else {                    Toast.makeText(this, "你选的嘛偶像!", Toast.LENGTH_SHORT).show();                    finish();                }                break;            default:        }    }    @Override    public void onClick(View v){        switch (v.getId()){            case R.id.play_music:                if (!mediaPlayer.isPlaying()){                    mediaPlayer.start();//开始播放音乐                }                break;            case R.id.pause_music:                if (mediaPlayer.isPlaying()){                    mediaPlayer.pause();//暂停音乐                }                break;            case R.id.stop_music:                if (mediaPlayer.isPlaying()){                    mediaPlayer.reset(); //停止音乐                    initMediaPlayer();                }                break;            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;            default:                break;        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if (mediaPlayer != null){            mediaPlayer.stop();            mediaPlayer.release();        }        if (videoView != null){            videoView.suspend();        }    }}

4. AndroidManifest.xml

添加权限说明

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

整理学习自郭霖大佬的《第一行代码》
目前小白一名,持续学习Android中,如有错误请批评指正!

更多相关文章

  1. 谷歌宣布Android(安卓)3.0暂停开源
  2. Android开发从零开始视频教程相关介绍
  3. Android上定义播放器控件UniversalVideoView
  4. android videoView 按不同比例缩放
  5. Android用MediaRecorder实现MPEG4视频监控
  6. Android开发者指南(12) —— Android(安卓)Supported Media For.
  7. 本科学习Android笔记之传智播客_快速掌握Android视频教程
  8. 玩转 Android(安卓)MediaPlayer之视频预加载(优化)
  9. 【Andorid】短视频拍摄SDK——Vitamio Recorder 2.0 发布(支持ffm

随机推荐

  1. Android移动应用基础学习——第二章UI开
  2. .NET 开源了,Visual Studio 开始支持 Andr
  3. 开发可统计单词个数的Android驱动程序(1)
  4. 处女男学Android(十四)---Android 重量级数
  5. Android小项目合集(经典教程)包含十五个And
  6. android studio 如何修改app名字、修改ap
  7. Android 平台基础开发简介
  8. Android平台开发-Android HAL develop-An
  9. 基于WiEngine游戏引擎--背景移动
  10. Android Studio Android UI控件学习笔记