一、播放音频
1、 Android中播放音频文件一般都是使用MediaPlayer类来实现的,MediaPlayer类中一些较为常用的控制方法如下:


  1. 方法名 功能描述
  2. setDatasource() 设置要播放的音频文件的位置
  3. prepare() 在开始播放之前调用
  4. start() 开始或继续播放音频
  5. pause() 暂停播放音频
  6. reset() 将MediaPlayer对象重置到刚刚创建的状态
  7. seekTo() 从指定的位置开始播放音频
  8. stop() 停止播放音频。调用这个方法后的MediaPlayer对象无法再播放音频
  9. release() 释放掉与MediaPlayer对象相关的资源
  10. isPlaying() 判断当前MediaPlayer是否正在播放音频
  11. getDuration() 获取截入的音频文件的时长

2、使用MediaPlayer的步骤
1)创建一个MediaPlayer对象
2)调用setDataSource()方法来设置音频文件路径
3)调用prepare()方法使MediaPlayer进入到准备状态
4)调用start()方法播放音频,pause()方法暂停播放,reset()方法停止播放

二、播放视频
1、 步骤:
1)在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件
2)调用 setVideoPath: 来加载指定的视频
3)调用VideoView的start()、stop()、pause()方法来控制视频的播放

三、例子
我将播放音频与播放视频放到了一个程序中


1、主界面
activity_main.xml

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:text="#多媒体的运用#"        android:textSize="25dp"        android:textColor="#000"        android:gravity="center"        android:layout_width="match_parent"        android:layout_height="100dp" />    <Button        android:id="@+id/btn_media"        android:text="音频播放"        android:textSize="25dp"        android:background="@drawable/corner"        android:layout_marginTop="30dp"        android:layout_width="match_parent"        android:layout_height="80dp" />    <Button        android:id="@+id/btn_video"        android:text="视频播放"        android:textSize="25dp"        android:background="@drawable/corner"        android:layout_marginTop="30dp"        android:layout_width="match_parent"        android:layout_height="80dp" />LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {    private Button btn_media,btn_video;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        btn_media = (Button) findViewById(R.id.btn_media);        btn_media.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent();                intent.setClass(MainActivity.this,MediaPlayerActivity.class);                startActivity(intent);            }        });        btn_video = (Button) findViewById(R.id.btn_video);        btn_video.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent = new Intent();                intent.setClass(MainActivity.this,VideoActivity.class);                startActivity(intent);            }        });    }}

主界面主要就是设置了按钮进行跳转,没什么说的

2、播放音频页面

布局 activity_media_player.xml

"http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    

MediaPlayerActivity.java

public class MediaPlayerActivity extends AppCompatActivity implements View.OnClickListener{    private Button media_play,media_pause,media_stop;    private MediaPlayer mediaPlayer = new MediaPlayer();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_media_player);        initView();        //自我检查,写入SD卡权限是否在系统已允许的权限库里        if (ContextCompat.checkSelfPermission(MediaPlayerActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){            //若不在系统已允许的权限库里,则弹出权限申请窗口。requestPermissions方法中的整数参数是为了有多个权限时加以区分            ActivityCompat.requestPermissions(MediaPlayerActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);        }else{            initMediaPlayer(); //初始化MediaPlayer        }    }    private void initMediaPlayer() {        try{              File file = new File(Environment.getExternalStorageDirectory(),"music.mp3");//            ediaPlayer的setDataSource一共四个方法://            setDataSource (String path)//            setDataSource (FileDescriptor fd)//            setDataSource (Context context, Uri uri)//            setDataSource (FileDescriptor fd, long offset, long length)             mediaPlayer.setDataSource(file.getPath()); //指定音频文件的路径             mediaPlayer.prepare(); //让MediaPlayer进入到准备状态        }catch (Exception e){            e.printStackTrace();        }    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        switch (requestCode){            case 1:                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){                    initMediaPlayer();                }else{                    //决绝授予权限                    Toast.makeText(this, "拒绝权限将无法使用程序", Toast.LENGTH_SHORT).show();                    finish();  //关闭程序                }        }    }    private void initView() {        media_play = (Button) findViewById(R.id.media_play);        media_play.setOnClickListener(this);        media_pause = (Button) findViewById(R.id.media_pause);        media_pause.setOnClickListener(this);        media_stop = (Button) findViewById(R.id.media_stop);        media_stop.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.media_play:                if(!mediaPlayer.isPlaying()) {                    mediaPlayer.start(); //开始播放                }break;            case R.id.media_pause:                if (mediaPlayer.isPlaying()){                    mediaPlayer.pause();//暂停播放            }break;            case R.id.media_stop:                if(mediaPlayer.isPlaying()){                    mediaPlayer.reset(); //停止播放                }break;            default:                break;        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if (mediaPlayer != null){            mediaPlayer.stop();  //停止播放            mediaPlayer.release();  //释放资源        }    }}

3、播放视频
布局 activity_video_view.xml

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    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="400dp" />    <LinearLayout        android:orientation="horizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <Button            android:id="@+id/video_start"            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="50dp"            android:textSize="30dp"            android:gravity="center"            android:text="开始"/>        <Button            android:id="@+id/video_pause"            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="50dp"            android:textSize="30dp"            android:gravity="center"            android:text="暂停"/>        <Button            android:id="@+id/video_replay"            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="50dp"            android:textSize="30dp"            android:gravity="center"            android:text="重播"/>    LinearLayout>LinearLayout>

VideoActivity.java

public class VideoActivity extends AppCompatActivity implements View.OnClickListener{    //视频    private VideoView video_view;    //开始  停止  暂停    private Button video_start,video_pause,video_replay;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_video_view);        initView();        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();//初始化MediaPlayer        }    }    private void initVideoPath() {        File file = new File(Environment.getExternalStorageDirectory(),"movie.mp4");        video_view.setVideoPath(file.getPath()); //指定视频文件的路径    }    //初始化view    private void initView() {        video_view = (VideoView) findViewById(R.id.video_view);        video_start = (Button) findViewById(R.id.video_start);        video_start.setOnClickListener(this);        video_pause = (Button) findViewById(R.id.video_pause);        video_pause.setOnClickListener(this);        video_replay = (Button) findViewById(R.id.video_replay);        video_replay.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.video_start:                video_view.start(); //开始播放                break;            case R.id.video_pause:                video_view.pause(); //暂停播放                break;            case R.id.video_replay:                video_view.resume(); //重新播放                break;        }    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] 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:        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if (video_view !=null){            video_view.suspend();        }    }}

4、别忘了在AndroidManifest.xml清单文件中声明权限

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

OKlalalalalala~~~~~~

业精于勤荒于嬉,行成于思毁于随

更多相关文章

  1. Android(安卓)U盘文件显示在文件管理器
  2. Android(安卓)Scroll详解(三):Android(安卓)绘制过程详解
  3. Android(安卓)Scollview嵌套Listview,Gridview数据显示不完全问
  4. Java代理模式与Android的情结
  5. Android事件分派机制
  6. Android消息机制(一):主要流程与原理解析
  7. Android中的Sqlite数据库的简单使用
  8. 【工利其器】必会工具之(四)Refactor篇——Android(安卓)Studio在
  9. 【转】eclipse 上调试android的自带应用方法

随机推荐

  1. android 模拟器上查看shareperference文
  2. android实现下拉框和输入框结合
  3. Android通话默认打开扬声器
  4. YUV420转RGB的代码(C++/JAVA)
  5. Android之开发者应该收藏的优秀博客和技
  6. Android(安卓)Mvp 简单示例
  7. Failed to install *.apk on device 'emu
  8. Hardcoded string "xxxxxxxxxxxx", shoul
  9. Android显示图片崩溃的解决办法
  10. CrossWalk项目main_delegate类的问题