播放音频:

在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了MediaPlayer 类中一些较为常用的控制方法。

播放流程:

1)首先需要创建出一个 MediaPlayer 对象

2)然后调用 setDataSource()方法来设置音频文件的路径, 

3)再调用 prepare()方法使 MediaPlayer进入到准备状态, 

4)接下来调用 start()方法就可以开始播放音频, 调用 pause()方法就会暂停播放,调用 reset()方法就会停止播放。

代码实践:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button play;
    private Button pause;
    private Button stop;
    private MediaPlayer mediaPlayer = new MediaPlayer();
    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        play = (Button) findViewById(R.id.play);
        pause = (Button) findViewById(R.id.pause);
        stop = (Button) findViewById(R.id.stop);
        play.setOnClickListener(this);
        pause.setOnClickListener(this);
        stop.setOnClickListener(this);
        initMediaPlayer(); // 初始化MediaPlayer
    }private void initMediaPlayer() {try {
//            File file = new File(Environment.getExternalStorageDirectory(),
//                    "music.mp3");
//            mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径
            mediaPlayer.setDataSource(MainActivity.this,Uri.parse("http://sc.111ttt.com/up/mp3/73262/46444AE0C73A8C8B4DCE6B2A1CE33302.mp3"));
            mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态
        } catch (Exception e) {e.printStackTrace();
        }}@Override
    public void onClick(View v) {switch (v.getId()) {case R.id.play:if (!mediaPlayer.isPlaying()) {mediaPlayer.start(); // 开始播放
                }break;
            case R.id.pause:if (mediaPlayer.isPlaying()) {mediaPlayer.pause(); // 暂停播放
                }break;
            case R.id.stop:if (mediaPlayer.isPlaying()) {mediaPlayer.reset(); // 停止播放
                    initMediaPlayer();
                }break;
            default:break;
        }}@Override
    protected void onDestroy() {super.onDestroy();
        if (mediaPlayer != null) {mediaPlayer.stop();
            mediaPlayer.release();
        }}
}

记得添加网络权限,否则提示no content provider

播放视频:

播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView 类来实现的。

实现代码:
public class video extends AppCompatActivity implements View.OnClickListener{private VideoView videoView;
    private Button play;
    private Button pause;
    private Button replay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.video);
        play = (Button) findViewById(R.id.play);
        pause = (Button) findViewById(R.id.pause);
        replay = (Button) findViewById(R.id.replay);
        videoView = (VideoView) findViewById(R.id.video_view);
        play.setOnClickListener(this);
        pause.setOnClickListener(this);
        replay.setOnClickListener(this);
        initVideoPath();
    }private void initVideoPath() {File file = new File(Environment.getExternalStorageDirectory(),
                "xxx.mp4");
        videoView.setVideoPath(file.getPath()); // 指定视频文件的路径
    }@Override
    public void onClick(View v) {switch (v.getId()) {case R.id.play:if (!videoView.isPlaying()) {videoView.start(); // 开始播放
                }break;
            case R.id.pause:if (videoView.isPlaying()) {videoView.pause(); // 暂时播放
                }break;
            case R.id.replay:if (videoView.isPlaying()) {videoView.resume(); // 重新播放
                }break;
        }}@Override
    protected void onDestroy() {super.onDestroy();
        if (videoView != null) {videoView.suspend();
        }}
}

借助于官方的VideoView进行布局

<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:id="@+id/play"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Play" />
        <Button
            android:id="@+id/pause"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Pause" />
        <Button
            android:id="@+id/replay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Replay" />
    </LinearLayout>
</LinearLayout>

Android学习之运用多媒体相关推荐

  1. Android学习-运用手机多媒体-通知使用技巧、调用摄像头拍照、从相册中选取照片、播放音频和视频文件(MediaPlayer、VideoView)

    android提供了一系列的API,使得我们可以在程序中调用很多的多媒体资源,从而编写出更加丰富多彩的应用程序. 使用通知 通知(Notification)是Android系统中比较有特色的一个功能, ...

  2. Android学习记录——8.多媒体

    文章目录 1.将程序运行到手机上 2.使用通知 2.1 通知的基本用法 2.2 通知的进阶技巧 2.3 通知的高级功能 3.调用摄像头和相册 3.1 调用摄像头拍照 3.2 从相册中选择图片 4.播放 ...

  3. Android学习笔记——手机多媒体运用

    参考书籍:Android第一行代码(第二版).郭霖著 1.通知 Notification是Android中较有特色的功能,当应用程序希望向用户发出提示信息但不在前台运行时可使用(手机顶部显示通知图标, ...

  4. Android学习(运用手机多媒体)

    一.使用通知Notification: 当某个应用程序希望向用户发出一些提示信息,而该程序又不在前台运行时,就可以借助通知来实现. 1.通知的基本用法: 通知可以在活动.在广播接收器或在服务里创建. ...

  5. 《Android学习指南》目录

    转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...

  6. Android 学习指南(2017版)

    Android 学习指南 不断有新人来询问如何学习Android,很多都是无从下手,没有任何概念.正好好久没写文章了,今天来整理一下Android学习大纲,同时也会附上部分学习资料,主要还是希望大家能 ...

  7. [转] android学习和广告平台赚钱

    转自:http://www.iteye.com/topic/1121899 前言: 2011年11月份我开始学习android软件开发(本人有良好的java基础.web开发基础.c++基础),2011 ...

  8. 2015最新Android学习线路图

    Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导.据2011年初数据显示仅正式上市两年的操作系统Android已经跃居全球最受欢迎的 ...

  9. 道阻且长 行则将至——android学习总结

    道阻且长 行则将至--android学习总结 我是14年毕业的,我在想我是从什么时候开始做的android开发呢?是大二下学期的时候,那个时候跟在学长的屁股后面蹭一个软件设计大赛的比赛.那时,我们选的 ...

最新文章

  1. android软件安全权威指南 pdf_AV-TEST 发布 2019 最佳 Android 安全软件榜单
  2. 关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》
  3. git commit -amend_Github标星3W+,这份Git飞行规则你值得拥有
  4. Elasticsearch全文检索对比:match、match_phrase、wildcard
  5. 今天收到 OCP 证书
  6. 总线制和多线制示意图_火灾自动报警系统 总线制与多线制的区别
  7. 浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?
  8. 架构探险笔记11-与Servlet API解耦
  9. 数据结构笔记(四)-- 静态链表实现
  10. pcie routing
  11. 分布式系统与海量数据处理
  12. android toast居中显示_Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明...
  13. 水彩绘画艺术效果PS动作
  14. 【记录】AI换脸 桥本云龙你还喜欢吗 —— 玩转API第二弹
  15. 抖音推独立社交产品“多闪” 主打视频社交PK微信
  16. java调用python需要复权吗_用Python从新浪下载A股复权因子信息
  17. APP+spring boot校园购物网站 毕业设计-附源码041037
  18. 微信小程序请求php文件报错,微信小程序wx.request请求数据报错
  19. 已知随机变量X的协方差矩阵求去X的特征值 特征向量 PCA投影矩阵
  20. 发烧后的咽喉肿痛自我治疗

热门文章

  1. 同源策略(拓展) HTML DOM、API等介绍
  2. 一区WR | 河海大学李轶课题组利用环境兼容的载氧生物炭修复缺氧淡水生物机制
  3. H5网页头部的声明应该是用 lang=zh 还是 lang=zh-cn?
  4. 小说作者推荐: 闹月合集
  5. HTML中的父元素与子元素
  6. Python中调用FRED报错ValueError: time data 'fred' does not match format '%Y-%m-%d'
  7. 126篇殿堂级深度学习论文分类整理 从入门到应用
  8. AVR单片机及其编译软件
  9. Java 破解谷歌翻译api,可以实现程序自动化翻译文章
  10. git如何忽略文件或者文件夹