バイブレーションの制御について

558 views
Skip to first unread message

Yuichi

unread,
Sep 11, 2009, 10:46:28 AM9/11/09
to Android-SDK-Japan
市村と申します。

表題の件ですが、
電話がかかってきた際にサイレントモードで動作するように制御するアプリを作成しようと思いまして、

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

とやってみましたが、着信音は出なくなりますがバイブレーションは続いてしまいます。
バイブレーションも止めたいのですどうするのがよいか、ご存知の方がいましたらご教示頂けませんでしょうか。

宜しくお願いします。

Yuichi

unread,
Sep 13, 2009, 7:33:14 PM9/13/09
to Android-SDK-Japan
市村です。

その後、
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
AudioManager.VIBRATE_SETTING_OFF);

といったことや

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

など試してみましたが、バイブレーションは止まりませんでした。
着信で作動したバイブレーションは外から制御できないものでしょうか?

ご存知の方がいましたら、ご教示いただけると助かります。
よろしくお願いします。

Keiji Ariyama

unread,
Sep 13, 2009, 7:39:52 PM9/13/09
to android-...@googlegroups.com
有山@大阪です。

 AudioManagerだけでなく、システム設定のバイブレーション
(Settings.SystemのVIBRATE_ON)の設定を無効化してみてはいかがでしょうか。
--
Keiji,
ml_an...@c-lis.co.jp

Yuichi

unread,
Sep 13, 2009, 10:41:38 PM9/13/09
to Android-SDK-Japan
有山様

アドバイスありがとうございます。

なるほど、
ContentResolver contentResolver = getContentResolver();
System.putInt(contentResolver, System.VIBRATE_ON, 0);

といった感じですね。
試して見て結果を報告させてもらいます。
> ml_andr...@c-lis.co.jp

Yuichi

unread,
Sep 14, 2009, 7:48:48 PM9/14/09
to Android-SDK-Japan
市村です。

試してみました。
以下のようにしてみましたが、バイブレーションは止まりませんでした。

mContentResolver = getContentResolver();
System.putInt(mContentResolver, System.VIBRATE_ON, 0);

また、先日のAudioManagerの記述にちょっと誤りがあったので以下のように
してみましたが、こちらもバイブレーションを止めることはできませんでした。

AudioManager am = (AudioManager) getSystemService
(Context.AUDIO_SERVICE);
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
AudioManager.VIBRATE_SETTING_OFF);

何か方法はないでしょうか。。

Yuichi

unread,
Sep 23, 2009, 9:58:15 PM9/23/09
to Android-SDK-Japan
その後、色々と試してみましたが「動作をしてしまったバイブレーション」を止めるのは難しいようです。

TelephonyManagerで、ステータスCALL_STATE_RINGINGを拾って、
その時点でサイレントモードにしてしまえば、鳴動しないことは確認できました。
----------------------------------------------------------------------------------------
AudioManager am = (AudioManager) getSystemService
(Context.AUDIO_SERVICE);
am.setRingerMode
(AudioManager.RINGER_MODE_SILENT);
----------------------------------------------------------------------------------------

やろうとしていたのは、CALL_STATE_RINGINGで別スレッドで
カウントダウンをはじめて、例えば10秒間鳴動した後で全ての音、バイブレーションを止めるということでした。
これはできなそうですかねぇ。。
Reply all
Reply to author
Forward
0 new messages