Android手机多媒体——播放音乐 视频

一 播放音乐

1.播放音频的MediaPlayer类

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

 

2.布局文件

有三个按钮来控制,分别是开始,暂停,停止

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="match_parent"
 3     android:layout_height="match_parent"
 4     android:orientation="vertical">
 5 
 6     <Button
 7         android:id="@+id/play"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:text="play" />
11 
12     <Button
13         android:id="@+id/pause"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:text="pause" />
17 
18     <Button
19         android:id="@+id/stop"
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:text="stop" />
23 </LinearLayout>

3.权限声明:

因为该程序中用到了Sd卡相关存储的功能,所以需要权限声明

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

4.实例代码:

在注册过按键之后,先进行一个权限判断。如果有授权就加入到initMediaPlayer中进行初始化,如果没有授权则反馈信息并直接finish()来结束进程。

在initMediaPlayer初始化中,确定file存储地址。然后,指定音频文件路径,并准备音频文件。

之后就是按键的switch处理,判断按下的是什么键,然后判断音频是否在播放,然后执行相关的操作。

最后在onDestroy 活动停止是也要停止音频的相关播放。代码如下:

 1 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 2 
 3     private MediaPlayer mediaPlayer = new MediaPlayer();
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9 
10         Button play = (Button) findViewById(R.id.play);
11         Button pause = (Button) findViewById(R.id.pause);
12         Button stop = (Button) findViewById(R.id.stop);
13         play.setOnClickListener(this);
14         pause.setOnClickListener(this);
15         stop.setOnClickListener(this);
16 
17         if (ContextCompat.checkSelfPermission(MainActivity.this,
18                 Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
19             ActivityCompat.requestPermissions(MainActivity.this,
20                     new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
21         }else{
22             initMediaPlayer();  //初始化MediaPlayer
23         }
24     }
25 
26     private void initMediaPlayer() {
27         try{
28             File file = new File(Environment.getExternalStorageDirectory(),"music.mp3");
29             mediaPlayer.setDataSource(file.getPath());  //为音频指定路径
30             mediaPlayer.prepare();  //使音频加入准备状态
31         } catch (IOException e) {
32             e.printStackTrace();
33         }
34     }
35 
36     @Override
37     public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
38         switch(requestCode){
39             case 1:
40                 if(grantResults.length>=0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
41                     initMediaPlayer();
42                 }else {
43                     Toast.makeText(this,"未获得授权",Toast.LENGTH_LONG).show();
44                     finish();
45                 }
46                 break;
47             default:
48                 break;
49         }
50     }
51 
52     @Override
53     public void onClick(View view) {
54         switch (view.getId()){
55             case R.id.play:
56                 //如果媒体没有在播放,则开始播放
57                 if(!mediaPlayer.isPlaying()){
58                     mediaPlayer.start();
59                 }
60                 break;
61             case R.id.pause:
62                 //如果媒体正在播放,则暂停播放
63                 if (mediaPlayer.isPlaying()){
64                     mediaPlayer.pause();
65                 }
66                 break;
67             case R.id.stop:
68                 if(mediaPlayer.isPlaying()){
69                     mediaPlayer.reset(); //停止播放
70                     initMediaPlayer();
71                 }
72                 break;
73             default:
74                 break;
75         }
76     }
77 
78     /*在程序关闭时,停止音乐播放并清空资源*/
79     @Override
80     protected void onDestroy(){
81         super.onDestroy();
82         if(mediaPlayer!=null){
83             mediaPlayer.stop();
84             mediaPlayer.release();
85         }
86     }
87 }

 

二 播放视频

1.VideoView类相关方法:

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

2.使用方法和之前的播放音频方法十分类似,就不再赘述。

posted @ 2018-08-26 11:06  Mask_D  阅读(549)  评论(0编辑  收藏  举报