gpt4 book ai didi

java - MediaPlayer 音量问题-AudioStream 问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:53 24 4
gpt4 key购买 nike

当我在我的应用程序中收到一条消息时,我正在尝试提供自定义蜂鸣声。此哔声应符合主电话通知音量级别(不是铃声音量)。这意味着如果电话通知 vol =3/10 ,则蜂鸣强度应为 3/10。我无法做到这一点,

  AudioManager audioMan = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
int volume;

if (mPlayer == null) {
mPlayer = MediaPlayer.create(context, R.raw.mytone);
}

if (mPlayer.isPlaying()) {
mPlayer.stop();
mPlayer.release();
mPlayer = MediaPlayer.create(context, R.raw.mytone);

}

volume = audioMan.getStreamVolume(AudioManager.STREAM_NOTIFICATION);

mPlayer.setVolume(volume, volume);//this doesn't work for me, beep sound is taking media player volume by default.

mPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer player, int what, int extra) {
player.stop();
player.reset();
return true;
}
});

if (mVibrator == null)
mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

mVibrator.cancel();

能否请您分享您的知识并给我指路。谢谢你。

最佳答案

看起来您正在通过引用 AudioManager.STREAM_MUSIC 的音乐流播放您的声音。修改音量级别会修改该流上播放的所有内容的级别。这就是音乐/媒体播放“一团糟”的原因。

如果您想使用铃声流(及其音量设置),那么您应该改用 AudioManager.STREAM_RING。你说你试过这个但是你给出的代码 fragment 只是调整音量 - 在你要求它播放你的声音之前你没有展示你如何创建和配置你的 MediaPlayer

在设置 MediaPlayer 实例时,您必须选择适当的流。由于我已经在您描述的那种场景中成功地使用了不同的流,这就是您的问题所在。要选择播放自定义蜂鸣音的音频流,请在您的 MediaPlayer 实例上使用 setAudioStream,如下所示:

// Get a reference to the MP3 file to play
AssetFileDescriptor afd = getContext().getResources().openRawResourceFd(R.raw.my_mp3);

// Create the media player
MediaPlayer mediaPlayer = new MediaPlayer();

// Give it the MP3 you want played
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

// Set the audio stream to play over
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);

// Now play the sound
mediaPlayer.prepare();
mediaPlayer.start();

为您的用户提供自己选择流的选项是一种很好的做法 - 除了音乐和铃声流之外,还有警报和通知流,每个流都有独立的音量级别(还有其他的,但这些是核心的)。查看有关 AudioManager 的 Android 文档 here .

关于java - MediaPlayer 音量问题-AudioStream 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com