2011-11-17 1 views
1

나는 임무가있다 - 전화가 울릴 때 즉시 벨소리 볼륨을 변경하십시오. 예를 들면 다음과 같습니다. 수신음이 들리면 벨소리 볼륨을 0 (음소거)으로 설정하고 진동기도 사용 중지해야합니다 (이미 사용 중지되지 않은 경우). 그런 다음 다른 코드 (startComputing();)를 수행해야 할 때가 지연됩니다. 그 후에 벨소리 볼륨을 특정 값 (f.e.7)으로 변경하고 바이브레이터를 활성화해야합니다. 여기 내 코드 :들어오는 호출 중 setRingerMode - RINGING

public class IncomingCallReceiver extends BroadcastReceiver { 
     private AudioManager amanager; 
     public void onReceive(Context context, Intent intent) { 
      if(intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
       amanager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 
       amanager.setRingerMode(0x00000000); // no sound and no vibration    
       startComputing(); 
       amanager.setRingerMode(0x00000002); // normal 
       amanager.setStreamVolume(AudioManager.STREAM_RING, 7, 
         AudioManager.FLAG_SHOW_UI 
           + AudioManager.FLAG_PLAY_SOUND); 
      } 

     } 
     private void startComputing() { 
      try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
     } 

} 

1)의 주요 문제가 있음이 후 : amanager.setStreamVolume (AudioManager.STREAM_RING, 7 AudioManager.FLAG_SHOW_UI AudioManager.FLAG_PLAY_SOUND +); 벨소리 울림이 전혀 발생하지 않고 사운드 레벨이 변경되었지만 전화에서 소리가 나지 않는 토스트 메시지 만 나타납니다. 어떻게 바꿀 수 있습니까? 2) 또한 문제가 있습니다. amanager.setRingerMode (0x00000000); 볼륨과 진동은 즉시 변하지 않지만 약 0.5 초 만에 변합니다. 사전 감사합니다. Jacob

+0

그 해결책은 무엇입니까? – Rizon

답변

1

나는 링거를 음소거하기 전에 1/2 초 지연을 극복하기 위해 할 수있는 일은 없을 것이라고 생각합니다. 때로는 작동 (즉, 매우 짧거나 지연 없음), 때로는 짧은 시간 동안 신호음이 들립니다.

당신이 가지고있는 문제는 setStreamVolume에 전달 된 플래그와 같다고 생각합니다. 당신은 포함 비트 또는 (|)를 사용한다

amanager.setStreamVolume(AudioManager.STREAM_RING, 7, 
    AudioManager.FLAG_SHOW_UI|AudioManager.FLAG_PLAY_SOUND); 

또한 (+) 간단하지 :

이보십시오.