private void test11GetImei() {
    Log.i(TAG, "test11GetImei call getDeviceIdGemini()");
    String imei1 = null;
    String imei2 = null;
    long[] subIds = null;

    try {
      IPhoneSubInfo subInfo =
          IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo"));
      // Sim 1
      subIds = SubscriptionManager.getSubIdUsingSlotId(0);
      if (subIds != null && subIds.length > 0 && subIds[0] > 0) {
        Log.i(TAG, "Find slot 0 with subId: " + subIds[0]);
        imei1 = subInfo.getDeviceIdForSubscriber(subIds[0]);
      }
      // Sim 2
      subIds = SubscriptionManager.getSubIdUsingSlotId(1);
      if (subIds != null && subIds.length > 0 && subIds[0] > 0) {
        imei2 = subInfo.getDeviceIdForSubscriber(subIds[0]);
        Log.i(TAG, "Find slot 1 with subId: " + subIds[0]);
      }
    } catch (RemoteException e) {
      Log.e(TAG, e.toString());
    }

    Log.i(TAG, "test11GetImei call getDeviceIdGemini() " + imei1 + " " + imei2);
    Bundle bundle = new Bundle();
    bundle.putString(KEY_IMEI1, imei1);
    bundle.putString(KEY_IMEI2, imei2);

    removeDialog(DIALOG_IMEI);
    showDialog(DIALOG_IMEI, bundle);
  }
 private IPhoneSubInfo getSubscriberInfo() {
   // get it each time because that process crashes a lot
   return IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo"));
 }