public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action == null) return;
if (action.equals(TelephonyManager.ACTION_PHONE_STATE _CHANGED)) {
Bundle extras = intent.getExtras();
if (extras == null) return;

String state = extras.getString(TelephonyManager.EXTRA_STATE);
if (state == null) return;

if (state.equals(TelephonyManager.EXTRA_STATE_RINGING )) {
handleRinging(context, extras);

Problem is, onReceive is called after more than 2 seconds after beginning of ringing. This happens only on this device.

Second problem is with AudioManager...on other devices when setRingerMode(AudioManager.RINGER_MODE_VIBRATE); is used repeatedly, the device vibrate only at first time. GN 2 vibrate always.