5

私の主な活動にはこの方法があります

private void beep()
{
    AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0,
            AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
    Uri notification = RingtoneManager
            .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(),
            notification);
    r.play();
}

私が理解しているように、通知の音量はSTREAM_NOTIFICATIONによって調整する必要があります。ただし、setStreamVolumeメソッドのボリューム番号に関係なく、通知は常に同じボリュームで再生されます。何故ですか?

4

4 に答える 4

9

私は別の道を行きました。それは私の質問に対する正確な答えではありませんが、適切なものです。STREAM_MUSICで通知を再生すると、すべて問題ありません。したがって、通知は、関数にパラメーターとして渡すボリュームで正確に再生されます

private void beep(int volume)
{
    AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);

    Uri notification = RingtoneManager
            .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    MediaPlayer player = MediaPlayer.create(getApplicationContext(), notification);
    player.start();
}
于 2012-07-04T18:42:35.850 に答える
3

まず、2つの通知を次々に再生しようとしていることを認識していただきたいと思います。そのため、競合が発生する可能性があります。AudioManager.FLAG_PLAY_SOUND両方ともr.play()サウンドを再生してみます。通常、UIまたは新しい音量でビープ音を鳴らすことにより、ユーザーに1種類の情報を提供するだけで十分です。フラグの1つを削除することをお勧めします。必要ない場合は、0を指定してください。

主な質問ですが、音量レベルを0に設定できるかどうかわかりません。1を入れてみてください。

manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 1, AudioManager.FLAG_SHOW_UI);

通知をミュートする場合は、音量を0に設定するのと同じsetStreamMuteを使用してみてください。

于 2012-07-02T23:01:10.423 に答える
0

私の場合、最終的にこれは機能しているように見えました。それはあなたのオーディオボリュームをストリームの現在のボリュームに対して相対的なものにしますが、それは私の必要性のために役に立ちました。

MediaPlayer player = MediaPlayer.create(getApplicationContext(), notificationUri);
player.setVolume(toneLevel, toneLevel);

toneLevelは0.0〜1.0であるため、ストリームの範囲を見つける必要はありません。

于 2018-12-28T16:02:03.450 に答える
-2

次のように関数を作成するか、次のようにコピーして貼り付けます。

public void ringtone() {
    try {
        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
        r.play();
    } catch (Exception e) {}
}

ringtone()ビープ音を鳴らしたいときに電話してください。

于 2013-07-26T05:08:53.697 に答える