Android 使用实现简单的音乐播放以及管理
这里主要通过 MediaPlayer以及 AudioManager 来实现的对应的功能。
1.第一种,播放本地媒体文件:
你需要自己准备一个MP3格式的音频文件;

然后在资源目录(res)里面新建一个raw文件夹,将文件复制进去
像这样:

然后是使用
var mediaPlayer= MediaPlayer.create(getActivity().getApplicationContext(), R.raw.kc_voice_bi);
mediaPlayer.start();
我这里是在 fragment 中使用,要在 activity 中使用直接将 getActivity().getApplicationContext() 替换成 this 即可。
2.播放 URL 音频:
由于是 url 肯定是需要拉权限的
这里找到 AndroidManifest.xml ,在里头插入两短代码
<!-- 外部存储 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 声音播放权限 -->
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
然后就可播放了,这边直接上业务代码。
MediaPlayer mPlayer = new MediaPlayer();
String url = "https://downsc.chinaz.net/Files/DownLoad/sound1/202210/y1253.mp3";
mPlayer.setAudioAttributes(new AudioAttributes
.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) // 提示音类型
.build());
// 通常需要try catch 一下
mPlayer.setDataSource(url);
mPlayer.prepare();
// 一定要放在 setDataSource,prepare 之后
mPlayer.start();
到这里 就基本实现了对于音频的播放,如果想要进一步的了解的话。
这边还有一个 AudioManager 音频管理模块

这边有几个好用的方法
1.setStreamVolume(streamType, index, flags) -控制对应播放通道的音频大小。
streamType- 表示音频类型(官方解释 卷的索引流)即通过媒体、系统等通道播放音频
不同的Android版本用的通道不同
以 Android 13.0 举例(上源码)

主要有 STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(音乐)、STREAM_ALARM(闹铃声)
常用的 无非媒体、系统、通话以及闹铃 使用哪一种看业务需求。
直接控制音量的多少
if(isSilent){
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0, 0);
}else{
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume, 0);//tempVolume:音量绝对值
}
以一步步长控制音量的增减,并弹出系统默认音量控制条:
//降低音量,调出系统音量控制
if(flag ==0){
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,
AudioManager.FX_FOCUS_NAVIGATION_UP);
}
//增加音量,调出系统音量控制
else if(flag ==1){
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,
AudioManager.FX_FOCUS_NAVIGATION_UP);
}
index - 调节音量大小 (ADJUST_LOWER|ADJUST_SAME)减少|增大 以及取消静音 ADJUST_UNMUTE
flags - 设置模式 FLAG_SHOW_UI | FLAG_VIBRATE. 前者告诉AudioService需要弹出一个音量控制面板,后者可能,只是可能是设置在为0时震动一下,而设置了FLAG_PLAY_SOUND是松开音量键时有个提示音。
getMode()返回当前音频模式,如 NORMAL(普通), RINGTONE(铃声), orIN_CALL(通话)
而 setMode() 就是设置声音模式,可用参数同上。获得当前手机最大铃声 -
setStreamMute(int streamType, boolean state)
state为true,则设置为静音;否则,不设置为静音
扩展:setStreamVolume 和 adjustStreamVolume 区别
除了 setStreamVolume 之外, adjustStreamVolume 也能调节音量
两者之间的区别在于
setStreamVolume:直接设置音量大小
adjustStreamVolume :设置direction,以步长调节音量大小
Android 使用实现简单的音乐播放以及管理的更多相关文章
- Android应用--简、美音乐播放器增加音量控制
Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- swift3.0 简单直播和简单网络音乐播放器
本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...
- 使用Service组件实现简单的音乐播放器功能 --Android基础
1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放.) 2.核心代码: MusicService.java: pa ...
- 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...
- Android课程---简单的音乐播放器
第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...
- Android——用Activity和Service实现简单的音乐播放器
一.只用Activity 容易出现问题 xml <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- 用H5+Boostrap做简单的音乐播放器
前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...
- Android : 基于alsa库的音乐播放
继上篇:Android : alsa-lib 移植 ,这篇随笔实现一个demo基于移植好的alsa库在Android平台上播放wav文件: 一.利用ffmeg将一个mp3文件转换成wav文件: (1) ...
随机推荐
- centos7搭建安装loki、promtail、Grafana日志系统
loki.promtail.Grafana安装包 链接:https://pan.baidu.com/s/1vkSa_KYrXM0UEI8i42KdaA 提取码:4d4q 如果安装失败或者下载速度慢可以 ...
- MySQL开发
常用数据类型 整数:tinyint.int.bigint小数:decimal.字符串:char.varchar.text 增 insert into 表名(列名,列名)values(值,值): 删 d ...
- 一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用
一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机.海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用 ...
- win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案
一.背景win10本地python第三方库安装成功,但是pycharm项目无法使用解决方案如本地安装的python中的request库,在pycharm项目中居然无法使用,比较郁闷 pip list ...
- 倍福Ads协议通信测试
测试环境:vs2015 + TC31-Full-Setup.3.1.4022.30.exe 首先需要安装TC31-Full-Setup.3.1.4022.30.exe 本例子是用本机作测试,如果使用远 ...
- 真正“搞”懂HTTP协议04之搞起来
前两篇文章,我们从空间和时间的角度都对HTTP有了一定的学习和理解,那么基于上一篇的HTTP发展的时间顺序,我会在后面的文章由浅入深,按照HTTP版本内容的更迭,一边介绍相关字段的使用方法,一边讲解其 ...
- Inventor 2021保姆级安装教程
Inventor 2021 WIN10 64位安装步骤: 1.先使用"百度网盘客户端"下载INT21_CN_x64安装包到电脑磁盘里,并鼠标右击进行解压缩,安装前先断网,然后找到I ...
- 自学 TypeScript 第一天 环境开发配置 及 TS 基本类型声明
前言: 自学第一天,什么是TS ,为什么要用 TS TS 全程 Typed JavaScript at Any Scale 解释起来就是 添加了类型系统的 JavaScript, 是 JavaScr ...
- PHY驱动调试之 ---PHY设备驱动(三)
1. 前言 内核版本:linux 4.9.225,以freescale为例.(部分内容待修改和补充,不一定准确) 2. 概述 上一篇文章讲了控制器的驱动使用的是platform总线的连接方式,本节要讲 ...
- 在服务器上搭建Jenkins自动化部署工具
在公司发现很多时候都需要手动部署,然后有天听到自动部署这个词想着有没有什么工具能够自动部署项目,最好能自动化部署前后端生成 docker images 运行方便管理.最后经过我各种筛查,发现用 jen ...