我有一個任務 - 當電話振鈴時立即更改鈴聲音量。例如: 檢測到有來電後,我需要將鈴聲音量設置爲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);不會立即改變體積和振動,而只會在大約半秒內改變。 預先感謝您。 Jacob
任何解決方案? – Rizon