本文整理匯總了Java中android.bluetooth.BluetoothGattCharacteristic.PROPERTY_NOTIFY屬性的典型用法代碼示例。如果您正苦於以下問題:Java BluetoothGattCharacteristic.PROPERTY_NOTIFY屬性的具體用法?Java BluetoothGattCharacteristic.PROPERTY_NOTIFY怎麽用?Java BluetoothGattCharacteristic.PROPERTY_NOTIFY使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類android.bluetooth.BluetoothGattCharacteristic
的用法示例。
在下文中一共展示了BluetoothGattCharacteristic.PROPERTY_NOTIFY屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: onChildClick
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
int childPosition, long id) {
if (mGattCharacteristics != null) {
final BluetoothGattCharacteristic characteristic =
mGattCharacteristics.get(groupPosition).get(childPosition);
final int charaProp = characteristic.getProperties();
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_READ) > 0) {
// If there is an active notification on a characteristic, clear
// it first so it doesn't update the data field on the user interface.
if (mNotifyCharacteristic != null) {
mBluetoothLeService.setCharacteristicNotification(
mNotifyCharacteristic, false);
mNotifyCharacteristic = null;
}
mBluetoothLeService.readCharacteristic(characteristic);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
mNotifyCharacteristic = characteristic;
mBluetoothLeService.setCharacteristicNotification(
characteristic, true);
}
return true;
}
return false;
}
示例2: createAwesomenessService
private BluetoothGattService createAwesomenessService() {
BluetoothGattService service = new BluetoothGattService(SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
// Counter characteristic (read-only, supports notifications)
BluetoothGattCharacteristic counter = new BluetoothGattCharacteristic(CHARACTERISTIC_COUNTER_UUID,
BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ);
BluetoothGattDescriptor counterConfig = new BluetoothGattDescriptor(DESCRIPTOR_CONFIG, BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE);
counter.addDescriptor(counterConfig);
BluetoothGattDescriptor counterDescription = new BluetoothGattDescriptor(DESCRIPTOR_USER_DESC, BluetoothGattDescriptor.PERMISSION_READ);
counter.addDescriptor(counterDescription);
// Interactor characteristic
BluetoothGattCharacteristic interactor = new BluetoothGattCharacteristic(CHARACTERISTIC_INTERACTOR_UUID,
BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE, BluetoothGattCharacteristic.PERMISSION_WRITE);
BluetoothGattDescriptor interactorDescription = new BluetoothGattDescriptor(DESCRIPTOR_USER_DESC, BluetoothGattDescriptor.PERMISSION_READ);
interactor.addDescriptor(interactorDescription);
service.addCharacteristic(counter);
service.addCharacteristic(interactor);
return service;
}
示例3: enableNotifications
@Override
public final boolean enableNotifications(final BluetoothGattCharacteristic characteristic) {
final BluetoothGatt gatt = mBluetoothGatt;
if (gatt == null || characteristic == null)
return false;
// Check characteristic property
final int properties = characteristic.getProperties();
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == 0)
return false;
gatt.setCharacteristicNotification(characteristic, true);
final BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID);
if (descriptor != null) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
return gatt.writeDescriptor(descriptor);
}
return false;
}
示例4: enableNotifications
/**
* Enables notifications on given characteristic
*
* @return true is the request has been sent, false if one of the arguments was <code>null</code> or the characteristic does not have the CCCD.
*/
protected final boolean enableNotifications(final BluetoothGattCharacteristic characteristic) {
final BluetoothGatt gatt = mBluetoothGatt;
if (gatt == null || characteristic == null)
return false;
// Check characteristic property
final int properties = characteristic.getProperties();
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == 0)
return false;
Logger.d(mLogSession, "gatt.setCharacteristicNotification(" + characteristic.getUuid() + ", true)");
gatt.setCharacteristicNotification(characteristic, true);
final BluetoothGattDescriptor descriptor = characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID);
if (descriptor != null) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
Logger.v(mLogSession, "Enabling notifications for " + characteristic.getUuid());
Logger.d(mLogSession, "gatt.writeDescriptor(" + CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID + ", value=0x01-00)");
return gatt.writeDescriptor(descriptor);
}
return false;
}
示例5: createTimeService
/**
* Return a configured {@link BluetoothGattService} instance for the
* Current Time Service.
*/
public static BluetoothGattService createTimeService() {
BluetoothGattService service = new BluetoothGattService(TIME_SERVICE,
BluetoothGattService.SERVICE_TYPE_PRIMARY);
// Current Time characteristic
BluetoothGattCharacteristic currentTime = new BluetoothGattCharacteristic(CURRENT_TIME,
//Read-only characteristic, supports notifications
BluetoothGattCharacteristic.PROPERTY_READ | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ);
BluetoothGattDescriptor configDescriptor = new BluetoothGattDescriptor(CLIENT_CONFIG,
//Read/write descriptor
BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE);
currentTime.addDescriptor(configDescriptor);
// Local Time Information characteristic
BluetoothGattCharacteristic localTime = new BluetoothGattCharacteristic(LOCAL_TIME_INFO,
//Read-only characteristic
BluetoothGattCharacteristic.PROPERTY_READ,
BluetoothGattCharacteristic.PERMISSION_READ);
service.addCharacteristic(currentTime);
service.addCharacteristic(localTime);
return service;
}
示例6: setUpBatteryService
/**
* Setup Battery Service
*
* @return the service
*/
private static BluetoothGattService setUpBatteryService() {
final BluetoothGattService service = new BluetoothGattService(SERVICE_BATTERY, BluetoothGattService.SERVICE_TYPE_PRIMARY);
// Battery Level
final BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(
CHARACTERISTIC_BATTERY_LEVEL,
BluetoothGattCharacteristic.PROPERTY_NOTIFY | BluetoothGattCharacteristic.PROPERTY_READ,
BluetoothGattCharacteristic.PERMISSION_READ_ENCRYPTED);
final BluetoothGattDescriptor clientCharacteristicConfigurationDescriptor = new BluetoothGattDescriptor(
DESCRIPTOR_CLIENT_CHARACTERISTIC_CONFIGURATION,
BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE);
clientCharacteristicConfigurationDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
characteristic.addDescriptor(clientCharacteristicConfigurationDescriptor);
while (!service.addCharacteristic(characteristic));
return service;
}
示例7: notifyCharacteristic
/**
* 操作2:通知
* 操作結果返回到 GattCallback 中 onCharacteristicChanged()回調方法當中
*
* @param characteristic 需要操作的特征
* @param enable 若為 true 表示要開啟notify,若為 false 表示要停止 notify
* @return 若為 true 表示設置 notify 狀態成功
*/
private boolean notifyCharacteristic(BluetoothGattCharacteristic characteristic,
boolean enable) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
LogUtils.w(TAG, "藍牙適配器為 null:notify");
return false;
}
if (mState != State.STATE_CONNECTED) {
LogUtils.w(TAG, "notify(): 當前狀態為非連接狀態");
return false;
}
if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == 0) {
LogUtils.w(TAG, "characteristic不能被notify");
return false;
}
boolean suc = mBluetoothGatt.setCharacteristicNotification(characteristic, enable);
if (!suc) {
//notify 操作失敗
LogUtils.w(TAG, "set notify 操作失敗");
return false;
}
//特殊操作,注意三元表達式
BluetoothGattDescriptor descriptor =
characteristic.getDescriptor(Attributes.UUID_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR);
if (null != descriptor) {
descriptor.setValue(enable ?
BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE :
BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE);
return mBluetoothGatt.writeDescriptor(descriptor);
}
return false;
}
示例8: setCharacteristicIndication
private void setCharacteristicIndication(BluetoothGattCharacteristic characteristic, boolean enabled)
{
if ( mBluetoothAdapter == null || mBluetoothGatt == null )
{
NLog.d("BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);
BluetoothGattDescriptor desc = characteristic.getDescriptor(CONFIG_DESCRIPTOR);
if ( (characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_INDICATE) == BluetoothGattCharacteristic.PROPERTY_INDICATE )
{
// Enabled remote indication
desc.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
}
else if ( (characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == BluetoothGattCharacteristic.PROPERTY_NOTIFY)
{
desc.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
}
else
{
NLog.d("Error : Characteristic is not notify or indicate");
return;
}
mBluetoothGatt.writeDescriptor(desc);
}
示例9: isCharacteristicNotify
public static boolean isCharacteristicNotify(int property){
if ((property & BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0
|| (property & BluetoothGattCharacteristic.PROPERTY_INDICATE) > 0) {
return true;
}
return false;
}
示例10: setBatteryNotifications
/**
* This method tries to enable notifications on the Battery Level characteristic.
*
* @param enable <code>true</code> to enable battery notifications, false to disable
* @return true if request has been sent
*/
public boolean setBatteryNotifications(final boolean enable) {
final BluetoothGatt gatt = mBluetoothGatt;
if (gatt == null) {
return false;
}
final BluetoothGattService batteryService = gatt.getService(BATTERY_SERVICE);
if (batteryService == null)
return false;
final BluetoothGattCharacteristic batteryLevelCharacteristic = batteryService.getCharacteristic(BATTERY_LEVEL_CHARACTERISTIC);
if (batteryLevelCharacteristic == null)
return false;
// Check characteristic property
final int properties = batteryLevelCharacteristic.getProperties();
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == 0)
return false;
gatt.setCharacteristicNotification(batteryLevelCharacteristic, enable);
final BluetoothGattDescriptor descriptor = batteryLevelCharacteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID);
if (descriptor != null) {
if (enable) {
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
Logger.a(mLogSession, "Enabling battery level notifications...");
Logger.v(mLogSession, "Enabling notifications for " + BATTERY_LEVEL_CHARACTERISTIC);
Logger.d(mLogSession, "gatt.writeDescriptor(" + CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID + ", value=0x01-00)");
} else {
descriptor.setValue(BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE);
Logger.a(mLogSession, "Disabling battery level notifications...");
Logger.v(mLogSession, "Disabling notifications for " + BATTERY_LEVEL_CHARACTERISTIC);
Logger.d(mLogSession, "gatt.writeDescriptor(" + CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR_UUID + ", value=0x00-00)");
}
return gatt.writeDescriptor(descriptor);
}
return false;
}
示例11: onChildClick
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
if (mGattCharacteristics != null) {
final BluetoothGattCharacteristic characteristic = mGattCharacteristics
.get(groupPosition).get(childPosition);
final int charaProp = characteristic.getProperties();
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_READ) > 0) {
// If there is an active notification on a characteristic,
// clear
// it first so it doesn't update the data field on the user
// interface.
if (mNotifyCharacteristic != null) {
mBluetoothLeService.setCharacteristicNotification(
mNotifyCharacteristic, false);
mNotifyCharacteristic = null;
}
mBluetoothLeService.readCharacteristic(characteristic);
}
if ((charaProp | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
mNotifyCharacteristic = characteristic;
mBluetoothLeService.setCharacteristicNotification(
characteristic, true);
}
return true;
}
return false;
}
示例12: enableCharacteristicNotification
/**
* enable characteristic notification
*/
public boolean enableCharacteristicNotification(BluetoothGattCharacteristic charact,
BleCharactCallback bleCallback) {
if ((charact.getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) {
handleCharacteristicNotificationCallback(bleCallback);
// 設置允許獲取特征碼刷新回來的數據
return setCharacteristicNotification(getBluetoothGatt(), charact, true);
} else {
if (bleCallback != null) {
bleCallback.onFailure(new OtherException("Characteristic [not supports] readable!"));
}
return false;
}
}
示例13: isCharacteristicNotifiable
public static boolean isCharacteristicNotifiable(BluetoothGattCharacteristic c) {
return (c.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0;
}
示例14: decodeProperties
public static WritableMap decodeProperties(BluetoothGattCharacteristic characteristic) {
// NOTE: props strings need to be consistent across iOS and Android
WritableMap props = Arguments.createMap();
int properties = characteristic.getProperties();
if ((properties & BluetoothGattCharacteristic.PROPERTY_BROADCAST) != 0x0 ) {
props.putString("Broadcast", "Broadcast");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_READ) != 0x0 ) {
props.putString("Read", "Read");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE) != 0x0 ) {
props.putString("WriteWithoutResponse", "WriteWithoutResponse");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_WRITE) != 0x0 ) {
props.putString("Write", "Write");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0x0 ) {
props.putString("Notify", "Notify");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_INDICATE) != 0x0 ) {
props.putString("Indicate", "Indicate");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_SIGNED_WRITE) != 0x0 ) {
// Android calls this "write with signature", using iOS name for now
props.putString("AuthenticateSignedWrites", "AuthenticateSignedWrites");
}
if ((properties & BluetoothGattCharacteristic.PROPERTY_EXTENDED_PROPS) != 0x0 ) {
props.putString("ExtendedProperties", "ExtendedProperties");
}
// iOS only?
//
// if ((p & CBCharacteristicPropertyNotifyEncryptionRequired) != 0x0) { // 0x100
// [props addObject:@"NotifyEncryptionRequired"];
// }
//
// if ((p & CBCharacteristicPropertyIndicateEncryptionRequired) != 0x0) { // 0x200
// [props addObject:@"IndicateEncryptionRequired"];
// }
return props;
}
示例15: setNotify
private void setNotify(UUID serviceUUID, UUID characteristicUUID, Boolean notify, Callback callback){
Log.d(LOG_TAG, "setNotify");
if (gatt == null) {
callback.invoke("BluetoothGatt is null");
return;
}
if(this.reactContext==null) {
dataCallback = callback;
}
BluetoothGattService service = gatt.getService(serviceUUID);
BluetoothGattCharacteristic characteristic = findNotifyCharacteristic(service, characteristicUUID);
if (characteristic != null) {
if (gatt.setCharacteristicNotification(characteristic, notify)) {
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUIDHelper.uuidFromString(CHARACTERISTIC_NOTIFICATION_CONFIG));
if (descriptor != null) {
// Prefer notify over indicate
if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0) {
Log.d(LOG_TAG, "Characteristic " + characteristicUUID + " set NOTIFY");
descriptor.setValue(notify ? BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE : BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE);
} else if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_INDICATE) != 0) {
Log.d(LOG_TAG, "Characteristic " + characteristicUUID + " set INDICATE");
descriptor.setValue(notify ? BluetoothGattDescriptor.ENABLE_INDICATION_VALUE : BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE);
} else {
Log.d(LOG_TAG, "Characteristic " + characteristicUUID + " does not have NOTIFY or INDICATE property set");
}
try {
if (gatt.writeDescriptor(descriptor)) {
Log.d(LOG_TAG, "setNotify complete");
callback.invoke();
} else {
callback.invoke("Failed to set client characteristic notification for " + characteristicUUID);
}
} catch (Exception e) {
Log.d(LOG_TAG, "Error on setNotify", e);
callback.invoke("Failed to set client characteristic notification for " + characteristicUUID + ", error: " + e.getMessage());
}
} else {
callback.invoke("Set notification failed for " + characteristicUUID);
}
} else {
callback.invoke("Failed to register notification for " + characteristicUUID);
}
} else {
callback.invoke("Characteristic " + characteristicUUID + " not found");
}
}