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

mac2022-06-30  120

一 播放音乐

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.使用方法和之前的播放音频方法十分类似,就不再赘述。

转载于:https://www.cnblogs.com/Mask-D/p/9536611.html

最新回复(0)