STRATEGY_STREAM
时间: 2023-07-28 12:08:46 浏览: 37
STRATEGY_STREAM是Android平台上的一个音频策略常量。它表示在音频管理中,将某个应用程序的音频输出设置为流模式。流模式是一种常见的音频输出模式,它允许应用程序在设备的当前音频路由下播放声音。具体来说,STRATEGY_STREAM常量用于将音频输出设置为正常流模式,即应用程序的声音会受到设备当前音量和静音设置的影响。这是大多数应用程序默认使用的音频策略。
相关问题
STRATEGY_SONIFICATION
引用内容显示,STRATEGY_SONIFICATION是一个枚举类型的音频路由策略,用于在Android设备上控制音频的路由。它是一种专门用于播放提示音和通知音的策略,通常用于播放短暂的音频片段,例如按键声和提示音。在Android设备上,STRATEGY_SONIFICATION通常会使用扬声器或耳机作为音频输出设备。
以下是一个使用STRATEGY_SONIFICATION的示例代码:
```java
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(true);
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, audioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), 0);
```
bool ringActiveLocally = outputs.isActiveLocally(toVolumeSource(AUDIO_STREAM_RING), 0); // - for STRATEGY_SONIFICATION and ringtone active: // if SPEAKER was selected, and SPEAKER_SAFE is available, use SPEAKER_SAFE instead // - for STRATEGY_SONIFICATION_RESPECTFUL: // if no media is playing on the device, check for mandatory use of "safe" speaker // when media would have played on speaker, and the safe speaker path is available if (strategy == STRATEGY_SONIFICATION || ringActiveLocally || (strategy == STRATEGY_SONIFICATION_RESPECTFUL && !mediaActiveLocally)) { devices.replaceDevicesByType( AUDIO_DEVICE_OUT_SPEAKER, availableOutputDevices.getDevicesFromType( AUDIO_DEVICE_OUT_SPEAKER_SAFE)); } } break; case STRATEGY_CALL_ASSISTANT: devices = availableOutputDevices.getDevicesFromType(AUDIO_DEVICE_OUT_TELEPHONY_TX); break; case STRATEGY_NONE: // Happens when internal strategies are processed ("rerouting", "patch"...) break; default: ALOGW("%s unknown strategy: %d", __func__, strategy); break;
这段代码是关于选择输出设备的具体实现。首先,代码会根据当前的策略类型(`strategy`)和铃声是否正在播放(`ringActiveLocally`),选择是否要使用“safe”扬声器。如果当前策略是`STRATEGY_SONIFICATION`或者铃声正在播放,那么会尝试使用“safe”扬声器来输出声音,这是为了避免铃声等声音过大,导致设备损坏。其次,如果当前策略是`STRATEGY_SONIFICATION_RESPECTFUL`,并且没有其他媒体正在播放,那么也会尝试使用“safe”扬声器来输出声音。最后,根据不同的策略类型,会选择不同的输出设备。如果当前策略是`STRATEGY_CALL_ASSISTANT`,则会选择电话扬声器(`AUDIO_DEVICE_OUT_TELEPHONY_TX`),如果是`STRATEGY_NONE`,则不需要进行任何操作。如果策略类型不是以上任何一种,则会输出一个警告信息。