我有一个任务 - 电话响铃时立即更改铃声音量。例如:检测到有来电后,我需要将铃声音量设置为 0(静音),并且还应禁用振动器(如果尚未禁用)。然后当我需要执行另一个代码(startComputing();)时会有延迟。之后振铃音量应更改为特定值(fe7)并应激活振动器。这是我的代码:
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); 不会立即改变音量和振动,而是在大约半秒内改变。先感谢您。雅各布