Waht I've done:
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);
}