小米开发平台Audio接口使用规范

在MIUI的项目开发过程中,经常收到用户反馈通话声音会自动外放,经分析排查发现均是第三方应用在通话期间调用了setSpeakerphoneOn(true)方法引起的,影响用户正常通话。

小米开发平台Audio接口使用规范

1. 关于setSpeakerphoneOn方面的使用

问题描述:

MIUI的项目开发过程中,经常收到用户反馈通话声音会自动外放,经分析排查发现均是第三方应用在通话期间调用了setSpeakerphoneOn(true)方法引起的,影响用户正常通话。

建议:

音频类应用可以利用AudioFocus机制或者监听电话状态来进行控制处理,在手机通话期间不要调用setSpeakerphoneOn方法,从而避免对正常通话的影响。

2. 关于setMode的使用

问题描述:

当前很多APP,多见于社交或需要队友语音的游戏。使用这个接口来设置手机通话模式,改变手机声音的输出设备。当电话模式处于“AudioManager.MODE_IN_COMMUNICATION”或“AudioManager.MODE_IN_CALL”时,声音会默认从听筒发声。且用户默认音量调节类型会变为通话音量类型。

建议:

开发过程中,setMode(AudioManager.MODE_IN_COMMUNICATION)和setMode(AudioManager.MODE_NORMAL)务必成对使用。需要考虑应用异常的情况下,也能够将电话模式重置为normal状态。

3. 关于getStreamVolume的使用

使用建议:

通过该方法得到的音量值受多方因素影响。需要充分考虑当前设备的audiopolicy route策略,选中不同的设备,得到的音量值也不一样。此外该方法受静音模式影响,如果手机处于静音状态,无论音量值为多少,得到的index均为0。如果需要不想受静音状态影响,建议使用getLastAudibleStreamVolume。

4. setStreamVolume音量设置会导致媒体音退出静音状态

问题描述:

  • MIUI允许用户在静音开启时静止媒体音。但静止状态时,一旦触发音量增操作,媒体音会立刻退出静音状态。有许多视频播放或直播app,会在退出app时保存当前音量值,重开app时将音量值restore。这个操作经常会错误的将用户的静音状态解除。
  • app会catch按键时间,调用setStreamVolume来控制媒体音量。某些情况会导致音量调节异常。

建议:

  • 当应用返回时,通过isStreamMute或getRingerMode方法获取手机当前状态,如果处于媒体音或者铃声状态处于静音,则不执行setStreamVolume操作。
  • 音量的控制尽可能的交由系统处理,少用setStreamVolume设置音量。

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12681/

部分内容来自网络投稿,如有侵权联系立删

(1)
上一篇 2022年11月24日 下午3:09
下一篇 2022年11月24日 下午3:12

相关推荐