I don't know much about Google Fit, so maybe it is easier to interact with the watch using that application. However, I will explain how I dealt with the Bluetooth communication in the past in a similar scenario
The device uses the protocol Bluetooth Low Energy
for data transmission. First of all, you should read a general description of how the protocol works. A good start would be the Bluetooth SIG website.
The most important thing you need to know is what's the software model presented in the protocol: each device exposes a Generic Attribute Profile (GATT)
. The way I see it, the GATT is just an API: it says what data the device "offers" and how you can consume it from a client. You should get familiar with the following terminology:
- Characteristic: it's a data value transferred between client and server. For example, the device's current battery voltage.
- Service: A collection of related characteristics, which operates together to perform a particular function. For instance, the Health Thermometer Service includes characteristics for temperature measurement value and time interval between measurements.
- Descriptor: A descriptor provides additional information about a characteristic. For instance, a temperature value characteristic may have an indication of its units (e.g. Celsius), and the maximum and minimum values which the sensor can measure. Descriptors are optional, and each characteristic can have any number of descriptors.
The Bluetooth SIG specifies a complete list of common services and characteristics, and how to interact with them. Again, all that information is in their website.
So, what you need to do before you can start writing code to interact with the watch is to find out which services and characteristics the device exposes. The ideal thing would be that the manual, that came with the watch when you bought it, said something about it... but that's unfortunately probably not the case.
Therefore, you have to figure it out by yourself. First thing you can do is to download an app that let you connect to a BLE Device and explore its GATT profile. I recommend LightBlue Explorer. Using it, you can connect to the watch and find out the characteristics and services that are exposed by the device. Then, you go and read the specification in the Bluetooth SIG website and you have everything you need to start writing code.
However, manufactures of BLE devices are not limited to the services and characteristics defined by the Bluetooth SIG. They can create and implement their own. In the image below I am connected to a digital scale. As you can see, it has many "standard" services (User Index, Body Composition, Battery service, etc.) but surrounded by a red square you can see a service with five characteristics that have no name.
Since that service wasn't defined by the Bluetooth SIG, you need to do some reverse engineering (which can be very difficult and frustrating) to figure out what those characteristics mean and how to consume them.
What I did, was to download the device's official app, I enabled the Bluetooth Snoop HCI and started to interact with the device in as many different ways as possible. After that, I opened the Bluetooth Log with Wireshark and analysed the Bluetooth packets transmissions to try to deduct how to work with those device specific characteristics.
Finally, once you know how the Bluetooth GATT server works in the device, you are ready to write your own application to interact with it. I highly suggest that you use a library for the communication implementation, otherwise you will struggle a lot. The best one I have seen and used is RxAndroidBle (they have other versions of the library for different platforms).
It is a long process, and what I have a written here is only some general information so you have a point to start from.