getStrategy根据StreamType得到Strategy,AudioPolicyManager再从mOutputRoutes里查出Strategy和前面得到的Strategy相等的Route里面的Device
从以上可以看出, Strategy可以定义为:Group of stream types with the similar behavior。当然从getStrategyForStream函数的定义也可以看出来:
164 routing_strategy Engine::getStrategyForStream(audio_stream_type_t stream)
165 {
166 // stream to strategy mapping
167 switch (stream) {
168 case AUDIO_STREAM_VOICE_CALL:
169 case AUDIO_STREAM_BLUETOOTH_SCO:
170 return STRATEGY_PHONE;
171 case AUDIO_STREAM_RING:
172 case AUDIO_STREAM_ALARM:
173 return STRATEGY_SONIFICATION;
174 case AUDIO_STREAM_NOTIFICATION:
175 return STRATEGY_SONIFICATION_RESPECTFUL;
176 case AUDIO_STREAM_DTMF:
177 return STRATEGY_DTMF;
178 default:
179 ALOGE("unknown stream type %d", stream);
180 case AUDIO_STRE