我在服务中使用AudioManager来控制媒体音量,但是我只能控制用setStreamVolume()
写的媒体类型。我尝试使用getRingerMode()
来获取媒体类型,但是内容是我服务的内容。
int currentType = audioManager.getRingerMode();
int currentVoice = audioManager.getStreamVolume(currentType);
audioManager.setStreamVolume(currentType, currentVoice, AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);
如何控制其他应用的音量?
答案 0 :(得分:2)
Ref:how to increase and decrease the volume programmatically in android
AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
Button upButton = (Button) findViewById(R.id.upButton);
upButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//To increase media player volume
audioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND);
}
});
Button downButton = (Button) findViewById(R.id.downButton);
downButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//To decrease media player volume
audioManager.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND);
}
});
答案 1 :(得分:1)
感谢杜威·里德和阿什文·索兰基。
我从Ashvin solanki得到启发,Dewey Reed帮助我阅读了Android Source。
要获取当前的媒体类型,可以使用
adjustVolume()
并将direction
的值设置为AudioManager.ADJUST_SAME
。
例如 :
audioManager.adjustVolume(AudioManager.ADJUST_SAME, AudioManager.FLAG_PLAY_SOUND| AudioManager.FLAG_SHOW_UI);
现在显示了AudioControl窗口,并具有当前的媒体类型。