У меня есть приложение, которое производит звук на Android, мой код устанавливает громкость во всех аудиопотоках, чтобы убедиться, что все потоки имеют громкость. Вот что потоки:объем звука, не работающий на Android
STREAM_MUSIC
STREAM_RING
STREAM_ALARM
STREAM_NOTIFICATION
STREAM_VOICE_CALL
STREAM_DTMF
STREAM_SYSTEM
Если изменить громкость с помощью:
audioMgr.setStreamVolume(audioStream, newVolume, 0);
Я не вижу громкость меняется, он играет громкость по умолчанию, но громкость звука прикосновения становится изменена используя выше способ. Вот этот код:
HashMap<Integer, Integer> maxVolumeMap= new HashMap<Integer, Integer>();
AudioManager audioMgr = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
maxVolumeMap.put(AudioManager.STREAM_MUSIC,audioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
maxVolumeMap.put(AudioManager.STREAM_RING,audioMgr.getStreamMaxVolume(AudioManager.STREAM_RING));
maxVolumeMap.put(AudioManager.STREAM_ALARM,audioMgr.getStreamMaxVolume(AudioManager.STREAM_ALARM));
maxVolumeMap.put(AudioManager.STREAM_NOTIFICATION,audioMgr.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION));
maxVolumeMap.put(AudioManager.STREAM_VOICE_CALL,audioMgr.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL));
maxVolumeMap.put(AudioManager.STREAM_DTMF,audioMgr.getStreamMaxVolume(AudioManager.STREAM_DTMF));
maxVolumeMap.put(AudioManager.STREAM_SYSTEM,audioMgr.getStreamMaxVolume(AudioManager.STREAM_SYSTEM));
int newVolume = 7; //this is new volume value
Iterator<Integer> itr = maxVolumeMap.keySet().iterator();
while (itr.hasNext())
{
//set new volume for all audio streams
int audioStream = itr.next();
float deviceVolume = (float)(newVolume/10.0f) *maxVolumeMap.get(audioStream);
audioMgr.setStreamVolume(audioStream, Math.round(deviceVolume), 0);
}
Спасибо, не существует фиксированной политики томов, потому что сенсорный звук на экране работает с моим кодом, и я могу увеличить или уменьшить звук. – sam2215
Я также добавил код, спасибо – sam2215