3

これに対する答えを見つけるために考えられるあらゆる場所を調べました.Androidのオーディオに関する質問はたくさんありますが、ICSの新しい設定について話しているものは見つかりません.

私のアプリには、ユーザーがボタンを押すだけで、電話の呼び出し音が静かになり、振動がなくなる機能があります。これが私のコードです。これまではうまく機能していました。

        mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);

ユーザーがボタンを押すと、音量はまだ0になりますが、電話、特にGalaxy S3には短い振動があります. 次に、[設定] -> [サウンド] で、サイレント モードが [オフ] から [バイブレーション] に変更されました。そのため、特定のことが発生するたびに、短いバイブレーション通知が引き続き表示されます. そのように振動するために具体的に何が起こるかを知るのに十分なほど徹底的にテストすることはできませんでしたが、それは問題のポイントではありません.

私の質問は、オフ、バイブレーション、およびミュートの ICS サイレント モード設定をどのように制御できるかということです。そのボタンを押したときにミュートに設定し、もう一度押したときにオフまたは設定したものに戻ることができるようにしたいと考えています。mAudioManager.setStreamMute メソッドを使用してみましたが、これは望ましい効果ではなく、サイレント モードの設定も変更されません。

事前に助けてくれてありがとう、それは大歓迎です!!

ポール

4

1 に答える 1

4

わかりました!助けてくれたiturkiに+1、ありがとう!! すでに RINGER_MODE_SILENT を試しましたが、うまくいくとは思いませんでした。うまくいきませんでしたが、それは解決策の半分に過ぎなかったからです。でも必要です!

これが毎回私のために働いている方法です:

AudioManager.RINGER_MODE_NORMAL または AudioManager.RINGER_MODE_SILENT のいずれかを設定しても、通知の振動をまだ受け取っていることがわかりました。これが、私がそれが機能しないとコメントした理由です。さらにテストした結果、これを引き起こしているのは RINGER_MODE 設定ではなく、実際には次のコード行であることがわかりました。

mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);

何らかの理由で、RINGER_MODE 設定が NORMAL または SILENT の場合、このように STREAM_RING の音量を 0 に設定すると、Settings->Sound の Silent Mode 設定が Vibrate に変更されます。

ソリューション:

    mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

STREAM_RING 設定を削除して、そのままにしておく必要がありました。これで、RINGER_MODE_SILENT に設定し、STREAM_RING を放っておくと、迷惑な 0.5 秒のバイブレーションがなくなりました!!! VibrateSetting を OFF に設定せずにテストしたところ、まだ機能していましたが、別の理由でアプリに残しています。

重要: RINGER_MODE_NORMAL から RINGER_MODE_SILENT へのこの変更が以前のバージョンの Android にどのように影響するかはわかりませんので、注意してください。この変更が以前のバージョンにどのような影響を与えるかを知っている人がいる場合は、お気軽にお知らせください。

助けてくれてありがとう!

于 2012-09-02T17:25:24.497 に答える