android audio不同音频流,(三)各音频流默认音量加载过程

各音频流默认值,定义文件路径:
frameworks/base/media/java/android/media/AudioSystem.java

默认音量定义数组:
 /** @hide */
 public static int[] DEFAULT_STREAM_VOLUME = new int[] {
          4,  // STREAM_VOICE_CALL
          7,  // STREAM_SYSTEM
          5,  // STREAM_RING
          5, // STREAM_MUSIC
          6,  // STREAM_ALARM
          5,  // STREAM_NOTIFICATION
          7,  // STREAM_BLUETOOTH_SCO
          7,  // STREAM_SYSTEM_ENFORCED
          5, // STREAM_DTMF
          5, // STREAM_TTS
          5, // STREAM_ACCESSIBILITY
          5, // STREAM_ASSISTANT
      };

 不同音频流,默认音量get函数:
   /** @hide */
   public static int getDefaultStreamVolume(int streamType) {
          return DEFAULT_STREAM_VOLUME[streamType];
     }

各音频流默认值,加载文件路径:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 

音频流,默认值加载:

      private void loadVolumeLevels(SQLiteDatabase db) {
          SQLiteStatement stmt = null;
          try {
             。。。     

             loadSetting(stmt, Settings.System.VOLUME_MUSIC,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
              loadSetting(stmt, Settings.System.VOLUME_RING,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_RING));
              loadSetting(stmt, Settings.System.VOLUME_SYSTEM,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
              loadSetting(
                      stmt,
                      Settings.System.VOLUME_VOICE,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
              loadSetting(stmt, Settings.System.VOLUME_ALARM,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
              loadSetting(
                      stmt,
                      Settings.System.VOLUME_NOTIFICATION,
                      AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
              loadSetting(
                      stmt,
                      Settings.System.VOLUME_BLUETOOTH_SCO,                               AudioSystem.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));  
             。。。     
          } finally {
              if (stmt != null) stmt.close();
          }
  }

以上,系统启动过程,拉起loadVolumeLevels()函数,将默认音频流音量保存在数据库。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值