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);

Again, if you are a BLE developer who develops an application using some or all of these BLE profiles and especially the service specified above that is specific to the HTC Fetch tag accessory regardless of your app's platform, let us know at:
https://www.htcdev.com/myapp

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