import android.bluetooth.BluetoothGatt; //导入方法依赖的package包/类
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (newState == BluetoothProfile.STATE_CONNECTED) {
//gatt.discoverServices();
gatt.requestMtu(69);
if (mProvServerDev != null) {
if (mProvServerDev.getGattClient() != null) {
if (mProvServerDev.getGattClient().equals(gatt)) {
//mProvServerDev.setConnectionState(PeerDevice.STATE_CONNECTED);
}
}
}
if (mProxyDev != null) {
if (mProxyDev.getGattClient() != null) {
if (mProxyDev.getGattClient().equals(gatt)) {
//mProxyDev.setConnectionState(PeerDevice.STATE_CONNECTED);
}
}
}
if (D) {
Log.i(TAG, "Connected to GATT server.");
}
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
boolean retry = false;
if (mProvServerDev != null) {
if (mProvServerDev.getGattClient() != null) {
if (mProvServerDev.getGattClient().equals(gatt)) {
if (mProvServerDev.getConnectionState() == PeerDevice.STATE_CONNECTING) {
Log.i(TAG, "connect failed, try again, status="+status);
gatt.connect();
retry = true;
} else {
mProvServerDev.setConnectionState(PeerDevice.STATE_DISCONNECTED);
gatt.close();
mProvServerDev = null;
}
}
}
}
if (mProxyDev != null) {
if (mProxyDev.getGattClient() != null) {
if (mProxyDev.getGattClient().equals(gatt)) {
if (mProxyDev.getConnectionState() == PeerDevice.STATE_CONNECTING) {
Log.i(TAG, "connect failed, try again, status="+status);
gatt.connect();
retry = true;
} else {
mProxyDev.setConnectionState(PeerDevice.STATE_DISCONNECTED);
gatt.close();
mProxyDev = null;
}
}
}
}
if (retry == false) {
if (D) {
Log.i(TAG, "Disconnected from GATT server.");
}
String strAddr=gatt.getDevice().getAddress();
byte[] addr = stringToAddress(strAddr);
connectionChangedNative(addr, false, status);
}
}
}