10

次のコード行を使用して、電話の着信時に電話の呼び出し音モードを RINGER_MODE_SILENT に変更しようとしています。

AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);

RINGER_MODE_SILENTのドキュメントには、振動も停止する必要があると記載されていますが、電話の呼び出し音が停止しても振動し続けます。

SDK 1.6 を使用しています

アップデート:

まだ解決策が見つからなかったので、振動設定を手動で無効にしようとしました。

am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF );

ただし、これは、電話がかかってきたときに電話フォームが振動するのを防ぐものでもありません。

何か案は?

更新 2:

今日は、振動オブジェクトを介して振動をキャンセルすることで問題を解決しようとしました。

Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();

繰り返しますが、成功しません。今、私はアイデアを使い果たし、振動を完全に止めることができるかどうかを自問しています.

更新 3:

Vibrator クラスのドキュメントを読み直したときに、別の興味深い事実を発見しました。ドキュメントには次のように記載されています。

「プロセスが終了すると、開始したバイブレーションは停止します。」

これは、バイブレーションがそれを開始したプロセスにリンクされており、別のプロセスからアクセスできないように思えます。

4

3 に答える 3

2

申し訳ありませんが、これは電話アプリの既知のバグです。現在、AudioManager.RINGER_MODE_CHANGED_ACTIONブロードキャストをリッスンしていません (呼び出し音とバイブレーションを停止するように指示します)。b.android.comでバグを報告することをお勧めします。

于 2010-05-01T20:43:48.987 に答える
0

私もこの機能をオフにするのに苦労しています。

AudioManager setVibrateSetting()、チャッキングイン、0を使用しましAudioManager.VIBRATE_TYPE_NOTIFICATIONたが、テキストメッセージを受信するとまだ振動します。

この機能を完全にオーバーライドする方法があるかどうか疑問に思っています。

cancel()Vibrator の方法は、現在進行中のバイブレーション用だと思います。

于 2010-04-19T15:21:18.613 に答える
0

パーミッションMODIFY_AUDIO_SETTINGSを試しましたか? SDK は次のように述べています:アプリケーションがグローバル オーディオ設定を変更できるようにします

于 2012-03-20T15:42:31.433 に答える