2013-07-25 1 views
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); 
    } 

답변

1

당신은

@Override 

public void onReceive(Context context, Intent intent) { 

     AudioManager maudio = (AudioManager) context.getSystemService(context.AUDIO_SERVICE); 
     SharedPreferences pref = context.getSharedPreferences("app", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = pref.edit(); 
     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")) { 
      editor.putInt("ringer_mode", maudio.getRingerMode()); 
      editor.commit(); 
      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)) 
      maudio.setRingerMode(pref.getInt("ringer_mode", 0)); 
    } 
SharedPreference

에서 벨소리 모드를 저장해야
관련 문제