相信大家不想再去了解那些本地音乐的了 其实网络获取音乐也没有那么复杂 你只需要有一个自己uri所谓的网址 但必须只有音乐文件 没有其他的元素 这里我为了方便自己搭建了一个服务器 直接从我服务器获取音乐软件 现在网络音乐播放大部分都是用户指明歌名来播放
下面给大家看一下我的工程文件夹 我使用了主线程和service服务两种方法来实现音乐播放 后台服务可以优化运行稳定性 首先我先来讲一下在线程中实现网络音乐播放器
首先看我的布局文件 是很简单的布局 主要是给一部分人讲思路 如果想实现音乐列表可以自己加一个listView 我这里主要指定了一个网络上的音乐 uri地址为http://120.78.188.33/wp-content/uploads/2018/07/楼沁-痴情玫瑰花-女声版-1.mp3
这是我自己的服务器地址 我的服务器我不一定随时开启 大家可以根据情况找地址
xml文件中加入了三个图片按钮 播放 暂停 停止
这里公布了MidiaPlayer的结构流程 顺便补充一下 不仅可以视频音乐播放 还可以流的播放 在API26即安卓8.0以后加了传输加密的工具 具体看官网谷歌官网MediaPlayer简介
由于我设备谷歌翻墙 这个链接可能不能访问 建议谷歌翻墙
然后看一下布局关联的java文件 声明三个按钮和MediaPlayer媒体播放器 媒体播放器可以播放音乐和视频 这里用到了音乐
声明网址 这里为公开的 如果不想公开可以设置成private 但其他类就不可以访问了 根据情况而定
下面是activity生命周期销毁的方法
如果播放器正在运行和播放器正在播放 停止播放器 主要是为了用户关闭你的软件优化内存
然后适当你占用系统播放器的资源 初始化你的播放器
继承销毁方法的所有类和属性
只有本方法可以访问到活动生命周期的创建周期
绑定ui控件id 也可以写一个方法用来单独存储绑定控件id
实现按钮监听 判断媒体播放器是否存在 如果不存在调用ready方法 这个方法下面会写到
点击播放按钮启动播放器
暂停按钮监听
当播放器存在和正在播放调用播放器的暂停方法
停止按钮监听
当播放器不为空和播放器正在运行
播放器停止运行 由于播放器只能播放一次音乐 所以需要释放资源 release
然后初始化 要不然播放器一直占用资源无法点击停止按钮后点击播放按钮 如果不写这两句会出现不能重新播放
下面写的是准备ready方法 这是我自己写的 然后在其他地方调用这个方法 用来避免代码的繁琐
准备工作是创建媒体播放器 如果媒体播放器不存在 创建媒体播放器
尝试媒体播放器设置数据资源 上下文本文 uri 解析开始声明的uri 这里到了初始化状态还不能播放
媒体播放器准备 当准备了就可以播放了
如果想有个音乐列表自己添加listView设置适配器 到这里就讲完了主线程实现音乐播放了 是不是特别简单
下面来讲述使用服务service实现音乐播放
布局文件同样是这个 我绑定了同一个布局
然后直接来看我的服务类的解析
这个类继承了服务的所有属性和方法
声明媒体播放器声明operatorReceiver操作寄存器 操作寄存器用来接受主界面ui的返回
同样声明uri网址 uri可以指明网址 也可以指明一些手机内部存储数据库地址
同样的与主线程方法一样实现软件销毁进程的方法 然后不管哪种情况都关闭registerReceiver寄存接收器 寄存接收器是用来放操作接收器获得的数据 用户销毁软件进程就不需要操作接受了 可以销毁
继承属性
活动的创建方法实现 每个活动都必须实现创建方法 否则会出错
初始化操作接收器
设置信使过滤器 指明action
把操作接收器获得的数据放到寄存接收器里 操作接收器的名字 和action
初始化媒体播放器
绑定方法 这里我没用到
下面写预测开始暂停停止的方法 调用开始暂停停止方法
同样 停止播放后重新准备一下 用来让用户停止后可以继续点击播放
服务的开始命令方法 同样调用一个准备工作
这里指明了准备方法的内容 这个准备方法不可以生成 是我自己写的方法
每次准备重启一下媒体播放器 reset重启
尝试
首先设置媒体播放器数据资源data Source 同样初始状态不可以播放
媒体播放器准备 写到这一步就可以播放音乐了
然后写了一个class用来继承广播接收器
实现接受方法
设置一个数组 命名 信使得到的额外数据 名字 默认值-1因为不可能为-1
开关名字cmd
按键Tools类中的按钮play调用开始音乐方法
来看一下我的tools文件 这里把按钮点击三个转换成了数字
最后别忘了在功能清单中声明网络权限和注册servicer
到这里两个方法就都讲完了 首先这里讲一下由于所有的代码都是自己写的思路 如果有哪里做的不好请指出 我会尽力为大家分享安卓开发的知识 有时间我会公布我的音乐列表播放和实现上下曲功能 同时读取音乐时间和艺人 而且我会讲述本人对官网的理解 相信大家一看到谷歌官网就头大 写的太乱 随后我会发表简书给大家分享经验
现在到了给小编点小心心的时候了 小编编写这又得不到好处 只希望你点个小心心 哈哈