Bluetooth Low Energy
HTC Fetch is a Bluetooth Low Energy accessory device. A "find me" tag that functions like a key fob that can be attached to any object within proximity of your Bluetooth Smart Ready phone. You can also find your phone by pressing a button on the tag itself. A long press on the button turns the tag on (single beep) or off (two beeps).
This section covers information for BLE developers. For additional information about HTC Fetch please visit: http://www.htc.com/www/accessories/htc-fetch
HTC is promoting development for the HTC Fetch device on all BLE supported platforms. Below is the BLE specific profiles and service details to assist developers.
If your app supports the HTC Fetch BLE tag, let us know about it at: https://www.htcdev.com/myapp
HTC Fetch supports the Find Me and Proximity profiles as well as the Battery Service.
The specifications for each of these can be found here:
Find Me Profile:
https://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.find_me.xml
Proximity Profile:
https://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.proximity.xml
Battery Service:
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml
The only addition HTC has added to the standard BLE profiles and service listed above is the following additional service:
Service uuid:
0daa5375-02d3-4b47-b6b7-53408ff159e5
Characteristic (Notify) uuid:
1daa5375-02d3-4b47-b6b7-53408ff159e5
This is the service used to enable the "find my phone" feature of HTC Fetch, the characteristic notification sent when the tag's button is pressed. Used not only to find one's phone as demonstrated in HTC Sense 5's native implementation where it rings the phone's default alarm, but also as a remote control for taking photos, also demonstrated in the native implementation when within the context of the camera application.
// code to enable/disable find phone feature for HTC Fetch (omitting error/null checking) BluetoothGatt bluetoothGatt; //obtain from device connection boolean enable = true; // false to disable BluetoothGattService service = bluetoothGatt.getService(BleServices.SVC_FIND_CENTRAL); BluetoothGattCharacteristic characteristic = service.getCharacteristic(BleCharacteristics.CHAR_FIND_CENTRAL_CONFIG); bluetoothGatt.setCharacteristicNotification(characteristic, enable); BluetoothGattDescriptor descriptor = characteristic.getDescriptor(BleCharacteristics.CHAR_CLIENT_CHARACTERISTIC_CONFIG); if (enabled) { descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); } else { descriptor.setValue(BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE); } bluetoothGatt.writeDescriptor(descriptor);
For information on targeting both the Android 4.3 BLE API and the HTC BLE API (for supported devices prior to Android 4.3) see the section titled HTC BLE API and 4.3