0
침묵/진동 및 일반적인 벨소리 모드에서 나를 데려다 줄 수있는 앱이 있는데, 내가 다시 데려가려고 할 때 언제든지 내가 끝내야합니다. 자동 모드. 왜 누군가는 볼 수 있습니까?통화 종료 후 RINGER_MODE (으)로 돌아 가기
우선 현재 callstate를 checkCurrentSoundState()로 정수로 저장 한 다음 통화가 끝났을 때 저장 한 상태로 되돌려 놓으려고 시도했지만 끝났을 때 저장된 값 0으로 재설정되었습니다. 누구든지이 문제를 극복하는 방법에 대한 유용한 정보를 얻었습니까?
@Override
public void onReceive(Context context, Intent intent) {
AudioManager maudio = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
this.context = context;
bundle = intent.getExtras();
if (bundle == null)
return;
state = bundle.getString(TelephonyManager.EXTRA_STATE);
Log.i("IncomingCall", "State: " + state);
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING) || TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals("EXTRA_STATE_RINGING")) {
checkCurrentSoundState();
setupDatabase();
Bundle bundle = intent.getExtras();
String phoneNr = bundle.getString("incoming_number");
for (int i = 0; i < allowedThrough.size(); i++) {
if (PhoneNumberUtils.compare(allowedThrough.get(i), phoneNr)){
goToNormal();
}
}
}
System.out.println("current ringstate is now " + ringcheck);
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK))
returnToPreviousState();
}
private void checkCurrentSoundState() {
AudioManager maudio = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
ringcheck = maudio.getRingerMode();
}
private void returnToPreviousState() {
AudioManager maudio = (AudioManager) context.getSystemService(context.AUDIO_SERVICE);
if (ringcheck == AudioManager.RINGER_MODE_SILENT)
maudio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
else if (ringcheck == AudioManager.RINGER_MODE_NORMAL)
maudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
else if (ringcheck == AudioManager.RINGER_MODE_VIBRATE)
maudio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}