【问题标题】:Control Soundpool volume when receiving a call接听电话时控制 Soundpool 音量
【发布时间】:2017-02-02 12:12:12
【问题描述】:

我有一个使用 Linphone 进行 VOIP 通话的 Android 应用程序。

当我接到电话时,我会像这样开始自己的铃声(原始 mp3 文件):

final AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
final float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_RING, (int)maxVolume , 0);
soundPool.play(id, maxVolume , maxVolume , 1, 0, 1.0f);

正在播放我想要的声音,但音量很小。呼叫本身会被自动接受,无需接收端的许可。

如果我在声音结束之前接听电话并结束通话,声音会继续(这没关系),但音量会突然达到我想要的最大值。也就是说,设备可能会进入通话状态,声音池的音量会自动降低,通话结束时,声音可以达到最大值。

如何在通话中将音量设置为最大?

【问题讨论】:

  • 您好 Yonatan,您的具体要求是什么?您想在通话过程中播放声音吗?为什么要在通话进行时播放声音?你想通过这样做达到什么目的?
  • 通话被自动接听,所以我需要播放声音让用户知道有通话正在进行。因此,只要通话正在进行,我就可以播放声音,但似乎无法将其设置为最大音量

标签: android audio android-audiomanager ringtone


【解决方案1】:

由于音量会自动降低,所以我只能在播放声音后尝试接听电话。由于SoundPool 不支持声音播放完毕时的事件处理,我已切换到使用支持它的MediaPlayer,所以我正在播放铃声,然后接听电话。

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2013-12-13
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多