0

我想制作一个控制 DTMF 音量(例如 0 到 100)的 Seek Bar。我搜索了很多,但找不到任何东西。我正在这样做,但它不起作用..

int seekbarValue=seekBar.getProgress();
AudioManager audioManager=(AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_DTMF, seekbarValue, 0); 

请任何人告诉我控制 DTMF 音量的解决方案。

4

2 回答 2

1

( AudioManager.STREAM_*) 个卷都没有达到 100 (int)。

的有效流体积setStreamVolume(...)介于 0 和 之间getStreamMaxVolume(int streamType)

每个流可以有不同的最大音量 int,比如我记得的 8、10 或 16。甚至可能在不同的设备上有所不同。

我希望这足以为您和未来的访客指明正确的方向。

于 2015-07-12T15:02:31.673 回答
1

我想在@Anonsage 的答案中添加更多信息。

正如@Anonsage 提到的,每个流都有不同的最大音量。根据 Kitkat 4.4.2 实施,这些是最大值。

  1. 流.DTMF:15
  2. 流媒体音乐:15
  3. STREAM.VOICECALL:5
  4. 流铃音:7

如果您真正进入较低级别并查看AOSP代码的AudioService.java,则有一个重新缩放操作有助于显示类似的 UI 并更新流的实际值。

于 2016-08-19T14:56:09.293 回答