(1)apk监听按键,按如下接口调节音量:
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent keyEvent){
final int keyCode = keyEvent.getKeyCode();
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
// 按下vom+按键,调高音量
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { mAudioManager.adjustStreamVolume(AudioManager.STREAM_ALARM,AudioManager.ADJUST_RAISE ,0);
}
break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
// 按下vom-按键,调低音量
if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { mAudioManager.adjustStreamVolume(AudioManager.STREAM_ALARM,AudioManager.ADJUST_LOWER ,0);
}
break;
}
return true;
}
(2) AudioManager对象,adjustStreamVolume()函数,如下:
public void adjustStreamVolume(int streamType, int direction , @PublicVolumeFlags int flags) {
final IAudioService service = getService();
try {
service.adjustStreamVolumeWithAttribution(streamType, direction, flags,
getContext().getOpPackageName(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
2.1 streamType 参数,既音频流类型:
/** @hide */
@IntDef(flag = false, prefix = "STREAM", value = {
STREAM_VOICE_CALL,
STREAM_SYSTEM,
STREAM_RING,
STREAM_MUSIC,
STREAM_ALARM,
STREAM_NOTIFICATION,
STREAM_DTMF,
STREAM_ACCESSIBILITY }
)
2.2 direction 参数,既调整音量的方向:
// Increase the ringer volume.
public static final int ADJUST_RAISE = 1;
// Decrease the ringer volume.
public static final int ADJUST_LOWER = -1;
2.3 flags 参数,类型如下:
/**
* @hide
* This list contains all the flags that can be used in internal APIs for volume
* related operations */
@IntDef(flag = true, prefix = "FLAG", value = {
FLAG_SHOW_UI,
FLAG_ALLOW_RINGER_MODES,
FLAG_PLAY_SOUND,
FLAG_REMOVE_SOUND_AND_VIBRATE,
FLAG_VIBRATE,
FLAG_FIXED_VOLUME,
FLAG_BLUETOOTH_ABS_VOLUME,
FLAG_SHOW_SILENT_HINT,
FLAG_HDMI_SYSTEM_AUDIO_VOLUME,
FLAG_ACTIVE_MEDIA_ONLY,
FLAG_SHOW_UI_WARNINGS,
FLAG_SHOW_VIBRATE_HINT,
FLAG_FROM_KEY,
FLAG_ABSOLUTE_VOLUME,
})
flags设置为FLAG_SHOW_UI ,调节音量,会显示音量条信息,如下:
mAudioManager.adjustStreamVolume(AudioManager.STREAM_ALARM,AudioManager.ADJUST_RAISE ,AudioManager.FLAG_SHOW_UI);
以上,adjustStreamVolume() 调节音量参数信息,可以按照自己需求进行调整与修改。