Уведомление вибрирует, когда экран включен, даже когда я разговариваю по телефону

У меня есть приложение, которое запускает уведомление в определенное время, пользователь может выбрать мелодию звонка для уведомления, когда я перевел телефон в режим отключения звука и экран был выключен, уведомление не вибрировало, но когда экран был включен, он вибрировал даже когда у меня был телефонный звонок, когда я изменил режим телефона на звук и позвонил, уведомление не издавало звук, а вибрировало, хотя у меня есть телефонный звонок, как это исправить? Я имею в виду: это нормально, потому что это нормально, я думаю, что я должен проверить состояние телефона, и если он звонил, я должен отключить вибрацию уведомления ... потому что это мое первое приложение, и мне нужно знать что мне нужно сделать, чтобы уведомление не вызывало проблем... спасибо.


person Learning Android    schedule 02.12.2013    source источник


Ответы (1)


Что я сделал:

                listener = new PhoneStateListener() {
                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    switch (state) {
                    case TelephonyManager.CALL_STATE_IDLE:
                        stateString = "Idle";
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        stateString = "Off Hook";                   
                        break;
                    case TelephonyManager.CALL_STATE_RINGING:
                        stateString = "Ringing";                    
                        break;
                    }
                    create_notification(notif_title,notif_body);

                }
            };
            telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

            AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            switch( audio.getRingerMode() ){
            case AudioManager.RINGER_MODE_NORMAL:
            modeString="normal";
               break;
            case AudioManager.RINGER_MODE_SILENT:
                modeString="silent";
               break;
            case AudioManager.RINGER_MODE_VIBRATE:
                modeString="vibrate";
               break;
            }



if(bool_activate_vibrate==true && stateString=="Idle" && modeString!="silent"){
            Vibrator v = (Vibrator) c.getSystemService       (Context.VIBRATOR_SERVICE);                
            v.vibrate(2000);
        }
person Learning Android    schedule 29.12.2013