@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
		@Override
		public void onMtuChanged(@NonNull final BluetoothGatt gatt,
								 @IntRange(from = 23, to = 517) final int mtu,
								 final int status) {
			if (status == BluetoothGatt.GATT_SUCCESS) {
				log(Log.INFO, () -> "MTU changed to: " + mtu);
				BleManagerHandler.this.mtu = Math.min(515, mtu);
				BleManagerHandler.this.onMtuChanged(gatt, BleManagerHandler.this.mtu);
				if (request instanceof final MtuRequest mr) {
					mr.notifyMtuChanged(gatt.getDevice(), BleManagerHandler.this.mtu);
					mr.notifySuccess(gatt.getDevice());
				}
			} else {
				Log.e(TAG, "onMtuChanged error: " + status + ", mtu: " + mtu);
				if (request instanceof final MtuRequest mr) {
					mr.notifyFail(gatt.getDevice(), status);
					awaitingRequest = null;
				}
				onError(gatt.getDevice(), ERROR_MTU_REQUEST, status);
			}
			checkCondition();
			// If the device was already connected using another client (BluetoothGatt object),
			// which had requested MTU change, just after connection this new MTU may be reported
			// to this client. This happens even before service discovery, effectively reporting
			// the device ready (as init queue is still null at this time).
			// This check should help.
			if (servicesDiscovered) {
				nextRequest(true);
			}
		}
Callback indicating service changed event is received.
<p>
Receiving this event means that the GATT database is out of sync with the remote device.
<p>
Requires API 31+.
ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java