private boolean msgTypeUndockedPermanent(BluetoothDevice device, int startId) {
    // Grace period passed. Disconnect.
    handleUndocked(device);
    if (device != null) {
      final SharedPreferences prefs = getPrefs();

      if (DEBUG) {
        Log.d(
            TAG,
            "DISABLE_BT_WHEN_UNDOCKED = " + prefs.getBoolean(KEY_DISABLE_BT_WHEN_UNDOCKED, false));
      }

      if (prefs.getBoolean(KEY_DISABLE_BT_WHEN_UNDOCKED, false)) {
        if (hasOtherConnectedDevices(device)) {
          // Don't disable BT if something is connected
          prefs.edit().remove(KEY_DISABLE_BT_WHEN_UNDOCKED).apply();
        } else {
          // BT was disabled when we first docked
          if (DEBUG) {
            Log.d(TAG, "QUEUED BT DISABLE");
          }
          // Queue a delayed msg to disable BT
          Message newMsg = mServiceHandler.obtainMessage(MSG_TYPE_DISABLE_BT, 0, startId, null);
          mServiceHandler.sendMessageDelayed(newMsg, DISABLE_BT_GRACE_PERIOD);
          return true;
        }
      }
    }
    return false;
  }
 private void msgTypeUndockedTemporary(BluetoothDevice device, int state, int startId) {
   // Undocked event received. Queue a delayed msg to sever connection
   Message newMsg =
       mServiceHandler.obtainMessage(MSG_TYPE_UNDOCKED_PERMANENT, state, startId, device);
   mServiceHandler.sendMessageDelayed(newMsg, UNDOCKED_GRACE_PERIOD);
 }