android audio不同音频流,(十)按键调节音量参数说明

(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() 调节音量参数信息,可以按照自己需求进行调整与修改。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android WebRTC中,设置输入音频音量需要使用AudioTrack类。以下是一些基本步骤: 1.首先,在您的应用程序中创建一个AudioTrack对象。要创建AudioTrack对象,您需要提供音频参数,例如音频格式、播放模式和采样率。 2.然后,使用AudioManager类获取当前音频管理器的实例。您可以使用它来设置音量级别。 3.调用AudioManager对象的setStreamVolume()方法来设置音频音量级别。您需要指定音频的类型以及音量级别。 4.最后,使用AudioTrack对象的setVolume()方法来设置与该音频相关联的音量级别。您可以指定左右声道的音量级别(介于0.0到1.0之间)。 以下是示例代码: // 创建AudioTrack对象 AudioTrack audioTrack = new AudioTrack( AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM ); // 获取音频管理器实例 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // 设置音量级别 audioManager.setStreamVolume( AudioManager.STREAM_MUSIC, volumeLevel, 0 // flags ); // 设置音频音量级别 float leftVolume = 0.8f; // 左声道音量级别 float rightVolume = 0.8f; // 右声道音量级别 audioTrack.setVolume(leftVolume, rightVolume); 请注意,每个应用程序的实现细节可能会有所不同。此外,您可能需要考虑使用系统默认音频管理器之外的其他音频API,以便完全控制音量级别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值