2010-04-13 2 views
9

다음 코드 줄을 사용하여 전화가 수신 될 때 전화 벨소리 모드를 RINGER_MODE_SILENT (으)로 변경하려고합니다. Android : 벨소리 모드를 무음으로 변경해도 진동이 멈추지 않습니다.

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

전화 정지는 RINGER_MODE_SILENT의 문서 그것은 또한 진동을 중지해야한다고 말했습니다하지만 진동이 계속 울리는 동안.

나는 SDK 1.6

UPDATE를 사용하고 있습니다 : 아직 해결책을 찾지 못했습니다으로

, 나는 수동 진동 설정을 비활성화했습니다.

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

그러나 이것은 또한 전화가 들어올 때 전화 모양이 진동하는 것을 방지하지 못합니다.

아이디어가 있으십니까?

UPDATE 2

오늘 I는 진동 객체를 통해 진동을 상쇄하여 문제를 해결하는 것을 시도했다.

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

다시 성공. 지금 나는 아이디어가 부족하고 진동을 멈추는 것이 가능한지 스스로에게 묻습니다.

UPDATE 3 : 나는 내가 documentation of the Vibrator class을 다시 읽고 한 또 다른 흥미로운 사실을 발견했습니다

. 설명서에 표시되는 내용은 다음과 같습니다.

"프로세스가 종료되면 진동이 시작되어 시작됩니다."

마치 진동이 시작된 프로세스에 연결되어 있고 다른 프로세스에서 액세스 할 수없는 것처럼 들립니다.

답변

0

이 기능을 사용 중지하는 데 문제가 있습니다.

Ive는 AudioManager.VIBRATE_TYPE_NOTIFICATION 및 0으로 채우는 AudioManager의 setVibrateSetting을 사용했지만 텍스트 메시지를 받으면 여전히 진동합니다.

완전히 지금이 기능을 오버라이드 (override) 할 수있는 방법이 있는지 궁금 해요 ...

나는 진동의 취소() 메소드는 현재 진행중인 진동에 대한 생각합니다.

1

죄송합니다. 이것은 전화 앱의 알려진 버그입니다. 현재 AudioManager.RINGER_MODE_CHANGED_ACTION 브로드 캐스트를 수신하지 않습니다 (벨소리 및 진동을 중지시키는 것으로 알려짐). b.android.com에 버그를 제출하는 것이 좋습니다.

0

허가를 시도한 적이 있습니까 MODIFY_AUDIO_SETTINGS? SDK는 말합니다 : 응용 프로그램이 전체 오디오 설정을 수정하도록합니다.

관련 문제