android.bluetooth.BluetoothGatt#getServices ( )源码实例Demo

下面列出了android.bluetooth.BluetoothGatt#getServices ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: blessed-android   文件: BluetoothPeripheral.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    if (status != GATT_SUCCESS) {
        Timber.e("service discovery failed due to internal error '%s', disconnecting", statusToString(status));
        disconnect();
        return;
    }

    final List<BluetoothGattService> services = gatt.getServices();
    Timber.i("discovered %d services for '%s'", services.size(), getName());

    if (listener != null) {
        listener.connected(BluetoothPeripheral.this);
    }

    callbackHandler.post(new Runnable() {
        @Override
        public void run() {
            peripheralCallback.onServicesDiscovered(BluetoothPeripheral.this);
        }
    });
}
 
源代码2 项目: GizwitsBLE   文件: AndroidBle.java
@Override
public ArrayList<BleGattService> getServices(String address) {
	BluetoothGatt gatt = mBluetoothGatts.get(address);
	if (gatt == null) {
		return null;
	}

	ArrayList<BleGattService> list = new ArrayList<BleGattService>();
	List<BluetoothGattService> services = gatt.getServices();
	for (BluetoothGattService s : services) {
		BleGattService service = new BleGattService(s);
		// service.setInfo(btQuery.getGattServiceInfo(s.getUuid()));
		list.add(service);
	}
	return list;
}
 
源代码3 项目: sony-smartband-open-api   文件: BtBridge.java
@Override
// TODO: maybe here we should set status == CONNECTED
public void onServicesDiscovered( BluetoothGatt gatt, int status ) {
    if( status != BluetoothGatt.GATT_SUCCESS ) {
        Log.e( CLASS, "onServicesDiscovered: Status != SUCCESS: status=" + status );
        return;
    }
    mGatt = gatt;

    List<BluetoothGattService> services = gatt.getServices();
    Log.d( CLASS, "onServicesDiscovered: services=" + services.size() );

    for( BtBridgeListener listener : mListeners ) {
        listener.onServicesDiscovered( services );
    }
}
 
源代码4 项目: EFRConnect-android   文件: BLEUtils.java
/**
 * Set a Notification Setting for The Matching Characteristic of a Service
 *
 * @param gatt               The Bluetooth GATT
 * @param gattService        the service we must find and match
 * @param gattCharacteristic the characteristic we must find and match
 * @param gattDescriptor     the descriptor we must write to we must find and match
 * @param value              The exact setting we are setting
 * @return Whether the instruction to write passed or failed.
 */
public static boolean SetNotificationForCharacteristic(BluetoothGatt gatt, GattService gattService, GattCharacteristic gattCharacteristic, UUID gattDescriptor, Notifications value) {
    boolean written = false;
    List<BluetoothGattService> services = gatt.getServices();
    for (BluetoothGattService service : services) {
        BluetoothGattCharacteristic characteristic = BLEUtils.getCharacteristic(service, gattService, gattCharacteristic);
        if (characteristic != null) {
            gatt.setCharacteristicNotification(characteristic, value.isEnabled());
            BluetoothGattDescriptor descriptor = characteristic.getDescriptor(gattDescriptor);
            if (descriptor != null) {
                //writing this descriptor causes the device to send updates
                descriptor.setValue(value.getDescriptorValue());
                written = gatt.writeDescriptor(descriptor);
            }
            return written;
        }
    }

    return false;
}
 
源代码5 项目: android   文件: BLEService.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    super.onServicesDiscovered(gatt, status);

    print("发现服务...");

    if (BluetoothGatt.GATT_SUCCESS == status) {
        List<BluetoothGattService> gattServices = gatt.getServices();
        if (null == gattServices || gattServices.size() == 0) {
            return;
        }
        for (BluetoothGattService gattService : gattServices) {
            List<BluetoothGattCharacteristic> characteristics = gattService.getCharacteristics();
            for (BluetoothGattCharacteristic characteristic : characteristics) {
                String uuid = characteristic.getUuid().toString();
                print("UUID    Cha:" + uuid);
                if (UUID_BT5_DATA.equalsIgnoreCase(uuid)) {
                    mBluetoothGatt.setCharacteristicNotification(characteristic, true);
                    print("开始监听...");
                }
            }
        }
    }
}
 
源代码6 项目: science-journal   文件: MyBleService.java
/**
 * FOR DEBUGGING ONLY. This should never be called from production code; we don't want this data
 * in our logs.
 */
@SuppressWarnings("UnusedDeclaration")
public void printServices(String address) {
  if (!DEBUG) {
    return;
  }
  BluetoothGatt bluetoothGatt = addressToGattClient.get(address);
  if (bluetoothGatt == null) {
    Log.d(TAG, "No connection found for: " + address);
    return;
  }
  for (BluetoothGattService service : bluetoothGatt.getServices()) {
    Log.d(TAG, "Service ================================");
    Log.d(TAG, "Service UUID: " + service.getUuid());
    Log.d(TAG, "Service Type: " + service.getType());

    for (BluetoothGattCharacteristic charact : service.getCharacteristics()) {
      Log.d(TAG, "Charact UUID: " + charact.getUuid());
      Log.d(TAG, "Charact prop: " + charact.getProperties());

      if (charact.getValue() != null) {
        Log.d(TAG, "Charact Value: " + new String(charact.getValue()));
      }
    }
  }
}
 
源代码7 项目: bitgatt   文件: GattClientCallback.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    super.onServicesDiscovered(gatt, status);
    Timber.v("[%s] onServicesDiscovered: Gatt Response Status %s", getDeviceMacFromGatt(gatt), GattStatus.getStatusForCode(status));
    Timber.d("[%s][Threading] Originally called on thread : %s", getDeviceMacFromGatt(gatt), Thread.currentThread().getName());
    ArrayList<GattClientListener> copy = new ArrayList<>(listeners.size());
    copy.addAll(listeners);
    for (GattClientListener listener : copy) {
        if(listener.getDevice() != null && listener.getDevice().equals(gatt.getDevice())) {
            handler.post(() -> listener.onServicesDiscovered(gatt, status));
        }
    }
    GattConnection conn = FitbitGatt.getInstance().getConnection(gatt.getDevice());
    if(conn != null) {
        List<BluetoothGattService> discoveredServices = gatt.getServices();
        // since this is one of the events that could happen asynchronously, we will
        // need to iterate through our connection listeners
        handler.post(() -> {
            for (ConnectionEventListener asyncConnListener : conn.getConnectionEventListeners()) {
                TransactionResult.Builder builder = new TransactionResult.Builder();
                builder.transactionName(GattClientDiscoverServicesTransaction.NAME);
                if(status == BluetoothGatt.GATT_SUCCESS) {
                    builder.resultStatus(TransactionResult.TransactionResultStatus.SUCCESS);
                } else {
                    builder.resultStatus(TransactionResult.TransactionResultStatus.FAILURE);
                }
                asyncConnListener.onServicesDiscovered(builder
                    .transactionName(GattClientDiscoverServicesTransaction.NAME)
                    .serverServices(discoveredServices)
                    .gattState(conn.getGattState())
                    .responseStatus(GattDisconnectReason.getReasonForCode(status).ordinal()).build(), conn);
            }
        });
    }
}
 
源代码8 项目: flutter-plugins   文件: ESenseManager.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    for (BluetoothGattService s : gatt.getServices()) {
        for (BluetoothGattCharacteristic c : s.getCharacteristics()) {
            mCharacteristicMap.put(getKey(c), c);
        }
    }

    // Fire onConnected event after all the services have been discovered
    if(mConnectionListener != null) {
        mConnectionListener.onConnected(ESenseManager.this);
    }
}
 
源代码9 项目: BLEService   文件: BTDeviceProfile.java
public BTDeviceProfile(BluetoothDevice device, BluetoothGatt gatt, int connectionState) {
	mDeviceAddress = device.getAddress();
	mConnectionState = connectionState;
	mServiceProfileList = new ArrayList<BTServiceProfile>();
	for (BluetoothGattService service : gatt.getServices()) {
		BTServiceProfile serviceProfile = new BTServiceProfile(service);
		mServiceProfileList.add(serviceProfile);
	}
}
 
源代码10 项目: OpenFit   文件: BluetoothLeService.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    Log.d(LOG_TAG, "onServicesDiscovered: "+status);
    if(status == BluetoothGatt.GATT_SUCCESS) {    
        // loops through available GATT Services.
        for(BluetoothGattService gattService : gatt.getServices()) {
            String uuid = gattService.getUuid().toString();
            String type = gattServiceType[gattService.getType()];

            Log.d(LOG_TAG, "onServicesDiscovered type: "+type);
            Log.d(LOG_TAG, "onServicesDiscovered uuid: "+uuid);
            //Log.d(LOG_TAG, "onServicesDiscovered: getCharacteristic: "+mWriteCharacteristic);
            for(BluetoothGattCharacteristic gattCharacteristic : gattService.getCharacteristics()) {
                String cUuid = gattCharacteristic.getUuid().toString();
                int cInstanceId = gattCharacteristic.getInstanceId();
                int cPermissions = gattCharacteristic.getPermissions();
                int cProperties = gattCharacteristic.getProperties();
                byte[] cValue = gattCharacteristic.getValue();
                int cWriteType = gattCharacteristic.getWriteType();

                Log.d(LOG_TAG, "onServicesDiscovered cUuid: "+cUuid);
                Log.d(LOG_TAG, "onServicesDiscovered cInstanceId: "+cInstanceId);
                Log.d(LOG_TAG, "onServicesDiscovered cPermissions: "+cPermissions);
                Log.d(LOG_TAG, "onServicesDiscovered cProperties: "+cProperties);
                Log.d(LOG_TAG, "onServicesDiscovered cValue: "+cValue);
                Log.d(LOG_TAG, "onServicesDiscovered cWriteType: "+cWriteType);
            }
        }
        Log.d(LOG_TAG, "BluetoothLe Service discovered: "+status);
        broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
    }
    else {
        Log.d(LOG_TAG, "BluetoothLe onServicesDiscovered received: "+status);
    }
}
 
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    super.onServicesDiscovered(gatt, status);
    boolean startNotificationForCharacteristicFromHere = true;
    List<BluetoothGattService> services = gatt.getServices();
    if (services != null) {
        for (BluetoothGattService s : services) {
            if (s.getCharacteristics() != null) {
                for (BluetoothGattCharacteristic ch : s.getCharacteristics()) {
                    if (GattCharacteristic.TemperatureType.uuid.equals(ch.getUuid())) {
                        startNotificationForCharacteristicFromHere = false;
                        gatt.readCharacteristic(ch);
                        break;
                    }

                }
            }
        }
    }

    if (startNotificationForCharacteristicFromHere) {
        BLEUtils.SetNotificationForCharacteristic(gatt, GattService.HealthThermometer,
                GattCharacteristic.Temperature,
                BLEUtils.Notifications.INDICATE);
    }

}
 
源代码12 项目: BLERW   文件: DeviceActivity.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
	for (BluetoothGattService service : gatt.getServices()) {
		if ((service == null) || (service.getUuid() == null)) {
			continue;
		}
		if (BleUuid.SERVICE_DEVICE_INFORMATION.equalsIgnoreCase(service
				.getUuid().toString())) {
			mReadManufacturerNameButton
					.setTag(service.getCharacteristic(UUID
							.fromString(BleUuid.CHAR_MANUFACTURER_NAME_STRING)));
			mReadSerialNumberButton
					.setTag(service.getCharacteristic(UUID
							.fromString(BleUuid.CHAR_SERIAL_NUMBEAR_STRING)));
			runOnUiThread(new Runnable() {
				public void run() {
					mReadManufacturerNameButton.setEnabled(true);
					mReadSerialNumberButton.setEnabled(true);
				};
			});
		}
		if (BleUuid.SERVICE_IMMEDIATE_ALERT.equalsIgnoreCase(service
				.getUuid().toString())) {
			runOnUiThread(new Runnable() {
				public void run() {
					mWriteAlertLevelButton.setEnabled(true);
				};
			});
			mWriteAlertLevelButton.setTag(service
					.getCharacteristic(UUID
							.fromString(BleUuid.CHAR_ALERT_LEVEL)));
		}
	}

	runOnUiThread(new Runnable() {
		public void run() {
			setProgressBarIndeterminateVisibility(false);
		};
	});
}
 
源代码13 项目: FastBle   文件: BleManager.java
public List<BluetoothGattService> getBluetoothGattServices(BleDevice bleDevice) {
    BluetoothGatt gatt = getBluetoothGatt(bleDevice);
    if (gatt != null) {
        return gatt.getServices();
    }
    return null;
}
 
源代码14 项目: android   文件: BikeService.java
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
    super.onServicesDiscovered(gatt, status);

    print("发现服务:" + status);

    if (BluetoothGatt.GATT_SUCCESS == status) {
        List<BluetoothGattService> gattServices = gatt.getServices();
        if (null == gattServices || gattServices.size() == 0) {
            return;
        }
        for (BluetoothGattService gattService : gattServices) {
            String serviceUUID = gattService.getUuid().toString();
            print("UUID GATT:" + serviceUUID);
            List<BluetoothGattCharacteristic> characteristics = gattService.getCharacteristics();
            for (BluetoothGattCharacteristic characteristic : characteristics) {
                String uuid = characteristic.getUuid().toString();
                print("UUID     Charac:" + uuid);
                print("UUID     Status:" + getProperties(characteristic));
                print("UUID     Status:" + characteristic.getInstanceId());
                List<BluetoothGattDescriptor> descriptors = characteristic.getDescriptors();
                for (BluetoothGattDescriptor descriptor : descriptors) {
                    print("UUID          Desc:" + descriptor.getUuid().toString());
                    print("UUID          Perm:" + String.valueOf(descriptor.getPermissions()));
                }
                if (UUID_RECEIVE.toString().equalsIgnoreCase(uuid)) {
                    mBluetoothGatt.setCharacteristicNotification(characteristic, true);
                    print("开始监听:" + uuid);
                }
            }
        }
    }
}
 
源代码15 项目: xDrip-plus   文件: DexCollectionService.java
/**
 * Displays all services and characteristics for debugging purposes.
 *
 * @param bluetoothGatt BLE gatt profile.
 */
private void listAvailableServices(BluetoothGatt bluetoothGatt) {
    Log.d(TAG, "Listing available services:");
    for (BluetoothGattService service : bluetoothGatt.getServices()) {
        Log.d(TAG, "Service: " + service.getUuid().toString());
        for (BluetoothGattCharacteristic characteristic : service.getCharacteristics()) {
            Log.d(TAG, "|-- Characteristic: " + characteristic.getUuid().toString());
        }
    }
}
 
源代码16 项目: xDrip-Experimental   文件: DexCollectionService.java
/**
 * Displays all services and characteristics for debugging purposes.
 * @param bluetoothGatt BLE gatt profile.
 */
private void listAvailableServices(BluetoothGatt bluetoothGatt) {
    Log.d(TAG, "Listing available services:");
    for (BluetoothGattService service : bluetoothGatt.getServices()) {
        Log.d(TAG, "Service: " + service.getUuid().toString());
        for (BluetoothGattCharacteristic characteristic : service.getCharacteristics()) {
            Log.d(TAG, "|-- Characteristic: " + characteristic.getUuid().toString());
        }
    }
}
 
源代码17 项目: xDrip   文件: DexCollectionService.java
/**
 * Displays all services and characteristics for debugging purposes.
 *
 * @param bluetoothGatt BLE gatt profile.
 */
private void listAvailableServices(BluetoothGatt bluetoothGatt) {
    Log.d(TAG, "Listing available services:");
    for (BluetoothGattService service : bluetoothGatt.getServices()) {
        Log.d(TAG, "Service: " + service.getUuid().toString());
        for (BluetoothGattCharacteristic characteristic : service.getCharacteristics()) {
            Log.d(TAG, "|-- Characteristic: " + characteristic.getUuid().toString());
        }
    }
}
 
源代码18 项目: xDrip-plus   文件: DexCollectionService.java
/**
 * Displays all services and characteristics for debugging purposes.
 *
 * @param bluetoothGatt BLE gatt profile.
 */
private void listAvailableServices(BluetoothGatt bluetoothGatt) {
    Log.d(TAG, "Listing available services:");
    for (BluetoothGattService service : bluetoothGatt.getServices()) {
        Log.d(TAG, "Service: " + service.getUuid().toString());
        for (BluetoothGattCharacteristic characteristic : service.getCharacteristics()) {
            Log.d(TAG, "|-- Characteristic: " + characteristic.getUuid().toString());
        }
    }
}
 
源代码19 项目: PodEmu   文件: SerialInterface_BLE.java
@Override
@TargetApi(21)
// New services discovered
public void onServicesDiscovered(BluetoothGatt gatt, int status)
{
    PodEmuLog.debug("SIBLE: GATT onServiceDiscovered with status=" + status);
    super.onServicesDiscovered(gatt, status);
    boolean isSerialSupported = false;

    for (BluetoothGattService service : gatt.getServices())
    {
        PodEmuLog.debug("SIBLE: Service: " + service.getUuid());
        //if (Arrays.asList(BLE_UUIDS).contains(service.getUuid()))
        if(SERVICE_UUID.equals(service.getUuid()))
        {
            PodEmuLog.debug("SIBLE: BLE found serial device!");

            //gatt.readCharacteristic(service.getCharacteristic(CHARACTERISTIC_VERSION_UUID));
            //gatt.readCharacteristic(service.getCharacteristic(CHARACTERISTIC_DESC_UUID));
            //gatt.setCharacteristicNotification(service.getCharacteristic(CHARACTERISTIC_MESSAGE_UUID), true);
            //gatt.setCharacteristicNotification(service.getCharacteristic(CHARACTERISTIC_RFCOMM_TRANSFER_UUID), true);

            BluetoothGattCharacteristic bleGattCharacteristic = service.getCharacteristic(CHARACTERISTIC_SERIAL_UUID);

            if(bleGattCharacteristic != null)
            {
                isSerialSupported = true;
                gatt.readCharacteristic(service.getCharacteristic(CHARACTERISTIC_SERIAL_UUID));
                gatt.setCharacteristicNotification(bleGattCharacteristic, true);
            }
        }
    }

    if(isSerialSupported)
    {
        PodEmuLog.debug("SIBLE: BLE serial supported!");
    }
    else
    {
        PodEmuLog.debug("SIBLE: BLE serial NOT supported!");
    }
}
 
/**
 * READ ALL THE SERVICES, PRINT IT ON LOG AND RECOGNIZES HOMEKIT ACCESSORIES
 *****************/
public void getServicesInfo(BluetoothGatt gatt) {

    List<BluetoothGattService> gattServices = gatt.getServices();
    Log.i("onServicesDiscovered", "Services count: " + gattServices.size());

    for (BluetoothGattService gattService : gattServices) {
        String serviceUUID = gattService.getUuid().toString();
        Log.i("onServicesDiscovered", "Service UUID " + serviceUUID + " - Char count: " + gattService.getCharacteristics().size());
        List<BluetoothGattCharacteristic> gattCharacteristics = gattService.getCharacteristics();

        for (BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics) {

            String CharacteristicUUID = gattCharacteristic.getUuid().toString();
            Log.i("onServicesDiscovered", "Characteristic UUID " + CharacteristicUUID + " - Properties: " + gattCharacteristic.getProperties());

            if (gattCharacteristic.getUuid().toString().equals(ota_control.toString())) {
                if (gattCharacteristics.contains(bluetoothGatt.getService(ota_service).getCharacteristic(ota_data))) {
                    if (!gattServices.contains(bluetoothGatt.getService(homekit_service))) {
                        Log.i("onServicesDiscovered", "Device in DFU Mode");
                    } else {
                        Log.i("onServicesDiscovered", "OTA_Control found");
                        List<BluetoothGattDescriptor> gattDescriptors = gattCharacteristic.getDescriptors();

                        for (BluetoothGattDescriptor gattDescriptor : gattDescriptors) {
                            String descriptor = gattDescriptor.getUuid().toString();

                            if (gattDescriptor.getUuid().toString().equals(homekit_descriptor.toString())) {
                                kit_descriptor = gattDescriptor;
                                Log.i("descriptor", "UUID: " + descriptor);
                                //bluetoothGatt.readDescriptor(gattDescriptor);
                                byte[] stable = {(byte) 0x00, (byte) 0x00};
                                homeKitOTAControl(stable);
                                homekit = true;

                            }
                        }
                    }
                }
            }
        }
    }
}