热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android使用实现简单的音乐播放以及管理

这里主要通过MediaPlayer以及AudioManager来实现的对应的功能。1.第一种,播放本地媒体文件:你需要自己准备一个MP3格式的音频文件;然后在资源目录(res)里面

这里主要通过 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 ,在里头插入两短代码





然后就可播放了,这边直接上业务代码。

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是松开音量键时有个提示音。



扩展

除了 setStreamVolume 之外, adjustStreamVolume 也能调节音量
两者之间的区别在于
setStreamVolume:直接设置音量大小
adjustStreamVolume :设置direction,以步长调节音量大小



  1. getMode() 返回当前音频模式,如 NORMAL(普通), RINGTONE(铃声), orIN_CALL(通话)

    而 setMode() 就是设置声音模式,可用参数同上。



  2. 获得当前手机最大铃声 - setStreamMute(int streamType, boolean state)

    state为true,则设置为静音;否则,不设置为静音





推荐阅读
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • Go语言实现文件读取与终端输出
    本文介绍如何使用Go语言编写程序,通过命令行参数指定文件路径,读取文件内容并将其输出到控制台。代码示例中包含了错误处理和资源管理的最佳实践。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Adversarial Personalized Ranking for Recommendation
    目录概主要内容基础对抗扰动对抗训练细节代码HeX.,HeZ.,DuX.andChuaT.Adversarialpersonalizedrankingforrecommendatio ... [详细]
  • 本文探讨了如何利用 Android 的 Movie 类来展示 GIF 动画,并详细介绍了调整 GIF 尺寸以适应不同布局的方法。同时,提供了相关的代码示例和注意事项。 ... [详细]
author-avatar
斯高一耐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有