@Override
    public synchronized void onResults(Bundle results) {
      ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
      Log.i(TAG, "result:");
      for (String i : matches) {
        Log.i(TAG, "onResults content: " + i);
      }
      if (MyService.this.isCalling
          && (matches.contains("no")
              || matches.contains("No")
              || matches.contains("nO")
              || matches.contains("NO"))) {
        try {
          Class clazz = Class.forName(tmgr.getClass().getName());
          Method method = clazz.getDeclaredMethod("getITelephony");
          method.setAccessible(true);
          ITelephony telephonyService = (ITelephony) method.invoke(tmgr);
          telephonyService.endCall();
          //                    MyService.this.isCalling = false;
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        } catch (NoSuchMethodException e) {
          e.printStackTrace();
        } catch (IllegalAccessException e) {
          e.printStackTrace();
        } catch (InvocationTargetException e) {
          e.printStackTrace();
        }

      } else if (!MyService.this.isMakePhoneCall
          && (matches.contains("yes")
              || matches.contains("Yes")
              || matches.contains("yes")
              || matches.contains("YES"))) {
        PhoneUtil.answerRingingCall(MyService.this);
      } else {
        initComponent();
        mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
      }

      if (!MyService.this.isCalling) {
        ContentContact contentContact = MyService.this.getContactFromName(matches.get(0));
        if (contentContact != null) {
          MyService.this.makePhoneCall(contentContact.getPhoneNumber());
        }
      }
    }
 private ContentContact getContactFromName(String name) {
   for (ContentContact i : contentContacts) {
     if (name.equals(i.getName())) return i;
   }
   return null;
 }