首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何为api级别20以上的android设备请求AudioFocus?

如何为api级别20以上的android设备请求AudioFocus?
EN

Stack Overflow用户
提问于 2019-11-07 13:00:04
回答 1查看 5.3K关注 0票数 2

我使用AudioManager类实现了调用,在本文档:https://developer.android.com/guide/topics/media-apps/audio-focus中提到了这一点。当我打电话时,我可以看到音频管理器资源被占用:

代码语言:javascript
运行
AI代码解释
复制
audioManager.requestAudioFocus(audioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

但是音频管理器资源不会通过调用:

代码语言:javascript
运行
AI代码解释
复制
audioManager.abandonAudioFocus(audioFocusChangeListener);

此外,如上文所述文件所述:

对于以Android5.0 (API 21)为目标的应用程序,音频应用程序应该使用AudioAttributes来描述应用程序正在播放的音频类型。例如,播放语音的应用程序应该指定CONTENT_TYPE_SPEECH。

但是在AudioManager类函数中,使用AudioAttributes调用被标记为下面提到的SystemApi:

代码语言:javascript
运行
AI代码解释
复制
@SystemApi
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public int requestAudioFocus(OnAudioFocusChangeListener l,
            @NonNull AudioAttributes requestAttributes,
            int durationHint,
            int flags)

那么,APILevel20 (Android )& 26 (Android )到requestAudioFocus()和AbandonAudioFocus()之间的设备应该调用哪个函数呢?

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 13:56:10

音频管理器资源没有发布

那是什么意思?你怎么看出来的?

( a)如果你请求AUDIOFOCUS_GAIN,然后放弃它,那么就会保持沉默。

例如,我在听应用程序A的音乐,然后我开始听应用程序B的音乐,然后暂停它。应用程序A不会自动开始播放,这很好。这就是暂时焦点的区别。

  • 当您计划在可预见的将来播放音频时(例如,在播放音乐时),并且您期望以前的音频焦点持有者停止播放时,请请求永久音频焦点(AUDIOFOCUS_GAIN)。

当你放弃专注时,你有责任停止播放。

如果您放弃焦点,继续播放,您将不再参与音频焦点机制。如果我启动了另一个音乐播放器,而不是你的应用程序,系统将无法停止您的应用程序的播放,当我的另一个音乐播放器要求音频焦点。

当您完成播放时,请调用abandonAudioFocus()

来源:安卓8.0前的音频焦点

设备L-O应该调用哪个函数?

唯一可用的AudioManager.STREAM_*常量之一,如安卓8.0前的音频焦点中提到的。

代码语言:javascript
运行
AI代码解释
复制
// Request audio focus for playback
val result: Int = audioManager.requestAudioFocus(
    afChangeListener,
    // Use the music stream.
    AudioManager.STREAM_MUSIC, // There's no AudioAttributes, just the more general constant.
    // Request permanent focus.
    AudioManager.AUDIOFOCUS_GAIN
)

对于以Android5.0 (API 21)为目标的应用程序,音频应用程序应该使用AudioAttributes来描述应用程序正在播放的音频类型。

您提到的引用不是关于requestAudioFocus调用,而是关于setAudioAttributes,它可以在MediaPlayerSoundPool.Builder和所有其他播放声音的东西上使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58756837

复制
相关文章
什么是音频焦点管理?音频焦点的行为准则是什么?
两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。 一次只能有一个应用获得音频焦点。
用户9253515
2022/01/17
2.3K0
Android开发(52) Android透明状态栏。适配 4.4 以上及 5.0以上设备
有时候我们想在 andorid 手机上实现一种 跨越 顶部状态栏的效果,比如一张图片直接显示在 状态栏内。比如下图:
张云飞Vir
2020/03/16
2K0
android学习笔记----关于音频焦点Audio Focus
为了便于理解,我们以android的8.0以前的版本为例,8.0以后有一定改动,但是基本思路一样。
砖业洋__
2023/05/06
1.8K0
实测Android音频的焦点获取和归还
最近老板想在产品中的短视频后者直播播放的时候对于手机中的音乐播放器进行暂停播放,并且退出视频播放后手机的音乐播放器还能继续播放之前的音乐。
静默加载
2022/02/09
3.8K0
实测Android音频的焦点获取和归还
如何为非常不确定的行为(如并发)设计安全的 API,使用这些 API 时如何确保安全
.NET 中提供了一些线程安全的类型,如 ConcurrentDictionary<TKey, TValue>,它们的 API 设计与常规设计差异很大。如果你对此觉得奇怪,那么正好阅读本文。本文介绍为这些非常不确定的行为设计 API 时应该考虑的原则,了解这些原则之后你会体会到为什么会有这些 API 设计上的差异,然后指导你设计新的类型。
walterlv
2023/10/22
1880
理解音频焦点 (第 3/3 部分):三个步骤实现音频聚焦
原文地址:Understanding Audio Focus (Part 3 / 3): 3 steps to implementing Audio Focus in your app 原文作者:Na
Android 开发者
2018/05/31
4K0
如何完成日千万级别以上的订单对账(二)
距离上篇对账文章也有几个月之久,对账二期系统早已如期上线。 对于该系统,目前只有两个字,稳定得一比。
谙忆
2021/01/21
2.3K0
如何完成日千万级别以上的订单对账(二)
如何完成日千万级别以上的订单对账(一)
前些日子发表了一篇对账的预热,现在来一篇干货。 文章精而不在多,多了也浪费大家时间。所以,这也是我放弃原来的公众号注册现在这个服务号来进行分享经验的原因之一。每月几篇分享,足以。
谙忆
2021/01/21
1.9K0
如何完成日千万级别以上的订单对账(一)
笔记59 | Android管理音频焦点的学习
管理音频焦点 由于可能会有多个应用可以播放音频,所以我们应当考虑一下他们应该如何交互。为了防止多个音乐播放应用同时播放音频,Android使用音频焦点(Audio Focus)来控制音频的播放——即只有获取到音频焦点的应用才能够播放音频。 在我们的应用开始播放音频之前,它需要先请求音频焦点,然后再获取到音频焦点。另外,它还需要知道如何监听失去音频焦点的事件并对此做出合适的响应。 请求获取音频焦点(Request the Audio Focus) 在我们的应用开始播放音频之前,它需要获取将要使用的音频流的音频
项勇
2018/06/19
2.1K0
另一种绕过 Android P以上非公开API限制的办法
去年发布的 Android P上引入了针对非公开API的限制,对开发者来说,这绝对是有史以来最重大的变化之一。前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加入了黑名单,而且 Google 要求下半年 APP 必须 target 28,这意味着现在的深灰名单也会生效;可以预见,在不久的将来,我们要跟大量的 API 说再见了。
weishu
2020/01/20
2.7K0
android: API24 及以上版本调用系统相机时报:FileUriExposedException 的解决
这个公众号也维护了有一小段时间了,虽然因为个人工作原因最近更新频率并不是很高,但我一定会坚持更新下去。
CnPeng
2020/08/11
6870
常用的设备交互api
Appium 提供了很多系统操作,在测试 APP 过程中会有一些特殊场景,比如来电话、短信,横竖屏切换,安装/卸载 APP,手机上的键盘操作,录屏等功能。下面介绍几个常用的设备交互 API。
hogwartstester
2022/06/06
3250
千万级别以上的地图兴趣点(POI)的快速查找测试
近期,终于有点时间,将之前的地图兴趣点爬虫程序(http://blog.csdn.net/sparkexpert/article/details/51554813)完善了下,并用了七天的时间爬取了覆盖全国的任一地区的所有类别的兴趣点数据。 数据下载还是一个艰难的过程,不过幸运的是,采用了新方法之后,基本上很少需要人工去干预,当然也会有网络的限制,但是基本上同时开辟5个下载通道,速度一直是嗖嗖的。 下载完成后,由于没有直接处理,只是下载了JSON格式的文本数据,约占磁盘空间60G以上。而汇总的POI个数则有好
sparkexpert
2018/01/09
2.4K1
千万级别以上的地图兴趣点(POI)的快速查找测试
Android Ble蓝牙App(六)请求MTU与显示设备信息
  在上一篇文章中已经了解了数据操作的方式,而数据交互的字节长度取决于我们手机与蓝牙设备的最大支持长度。
晨曦_LLW
2023/08/18
3.1K0
Android Ble蓝牙App(六)请求MTU与显示设备信息
Android 天气APP(三)访问天气API与数据请求
注册用邮箱就可以了,这里没有什么好讲解的,我是已经注册过了,所以我登录就可以了,然后进入控制台,创建应用。
晨曦_LLW
2022/05/10
2.7K0
Android 天气APP(三)访问天气API与数据请求
Android 天气APP(三)访问天气API与数据请求
注册用邮箱就可以了,这里没有什么好讲解的,我是已经注册过了,所以我登录就可以了,然后进入控制台,创建应用。
晨曦_LLW
2020/09/25
3.8K0
Android  天气APP(三)访问天气API与数据请求
如何为你的移动应用建立RESTful API
阅读本文,了解为您的移动应用程序设置RESTful API的基本知识。 在本篇中,我们将指导您通过服务器托管、设计后端体系结构、安全性、选择数据库和存储选项,以及创建与多个平台的兼容性。让我们深入探讨每一个要点,以便让你更好地理解。 系统安全和保护您的数据: 数据安全已成为当今时代的重中之重,通过黑客攻击可以很容易地攻破用户的个人数据。根据您具体的业务需求,认证方法有很多种。使用HTTP的基本身份验证技术不足以保护您的数据。但是,它很容易实现。 为了提供一个高度安全的环境,为企业和移动设备提供解决方案的端
程序你好
2018/07/20
6390
Linux笔记(20)| Linux的设备模型
大家好,今天跟大家分享的是在Linux中驱动led。今天的文章包括后面还有一篇是酝酿了近两个星期才开始动手写,可见这部分内容会比较抽象一些。
飞哥
2021/02/02
3.2K0
点击加载更多

相似问题

如何为API级别16以上的所有设备发送本地通知?

22

获取Android设备上传感器的类型( API级别20之前)

11

用于android级别api 20的Cordova构建

11

Android无法在API级别26及以上运行

11

如何为api低于20的可穿戴设备的Android应用程序进行布局

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文