ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在Android API级别7中是否有任何与requestAudioFocus相同的功能?

2019-07-09 20:23:59  阅读:190  来源: 互联网

标签:android android-audiomanager


我的Android应用程序需要支持Android平台2.1.x(Android API等级7).我需要使用requestAudioFocus()和abandonAudioFocus()方法暂停其他应用程序(例如音乐),以便在我的应用程序开始播放媒体时播放,并在应用程序停止后恢复它们.

但是,这两个功能仅适用于API级别8及更高级别. API级别7的等效功能是什么?或者如何在API级别8之前执行此操作?

解决方法:

感谢Christopher(https://stackoverflow.com/questions/1993471/android-can-i-mute-currently-playing-audio-applications),我正在引用:

Android上的音频处理在一段时间内会非常糟糕. API非常奇怪,文档记录很差,并且在版本之间不断变化/弃用/中断.甚至AudioManager代码中也包含FIXME.

无论如何,Android中有几种流类型(音乐,通知,电话等),应用程序用于选择适当的播放类型.我想大多数Android应用都应该使用音乐/媒体类型(STREAM_TYPE_MUSIC).您可以使用setAudioStreamType方法在MediaPlayer上设置此项.

SDK允许您将单个流类型设置为solo – 导致所有其他流被静音 – 但我不相信您可以识别特定应用程序正在播放的音频,并以某种方式暂停/取消暂停.音乐应用程序通常会在呼叫进入时使用PhoneStateListener暂停.

因此,在您的情况下,您可以“借用”MediaPlayer的电话呼叫流并在播放开始时使用方法调用AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL,true),然后在播放或​​您的活动时取消独奏流为false完成.

我可以告诉你,这是有效的,但我不记得你在使用语音呼叫流时是否需要将音频模式设置为MODE_IN_CALL(如:AudioManager.setMode(AudioManager.MODE_IN_CALL)).如果您发现这是必需的,那么您需要确保在播放完成后将模式返回到MODE_NORMAL,否则无论何时按下音量硬键,它都会说“通话音量”!但是,如果您确实想要更改回MODE_NORMAL,则必须检查当时没有发生正电话…

也许您可以使用另一种流类型而不是语音呼叫类型,但我只是根据使用可以使用扬声器或耳机进行音频播放的应用程序的经验来讲述,这需要使用语音呼叫流.

就像我说的,音频处理不是特别有趣……;)

标签:android,android-audiomanager
来源: https://codeday.me/bug/20190709/1416583.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有