Я использую GoogleFit HistoryAPI для получения данных о шагах от пользователя. Работает хорошо.
Однако в моем случае я хочу различать данные между разными устройствами (используя одну и ту же учетную запись), потому что я не хочу, чтобы пользователь использовал одну и ту же учетную запись для 2 или более устройств (это основа игры на шаге, поэтому я не хочу, чтобы пользователь играть на 1 устройстве и иметь достижения на многих устройствах).
Я обнаружил, что Устройство из DataSource # getDevice , Устройство # getLocalDevice может помочь мне отличить данные между различными устройствами. Ниже приведена информация из официальных документов:
Чтобы получить информацию об устройстве для источника данных, используйте метод DataSource.getDevice. Информация об устройстве полезна для того, чтобы отличать одинаковые датчики на разных устройствах, показывать информацию об устройстве от датчика пользователю или обрабатывать данные по-разному в зависимости от устройства. Например, вас может заинтересовать чтение данных, в частности, с сенсора на носимом устройстве, но не с сенсора того же типа на телефоне.
Чтобы получить экземпляр устройства для устройства, на котором выполняется ваша деятельность, используйте статический метод Device.getLocalDevice. Это полезно, если вы хотите проверить, находится ли источник данных на том же устройстве, на котором работает ваше приложение.
Итак,
// My idea is comparing the uid of local device and uid of device in datasource
// if it is same => step come from THIS device
// if not => step come from OTHER device
private void dumpDataSet(DataSet dataSet) {
for (DataPoint dp : dataSet.getDataPoints()) {
Log.i(Constant.TAG, "Origin type uid: " + dp.getOriginalDataSource().getDevice().getUid());
Log.i(Constant.TAG, "Local device uid: " + Device.getLocalDevice(getApplicationContext()).getUid());
...
}
}
Однако, результат logcat для источника данных только из 1 DEVICE равен
Origin type uid: 9ff67c48
Local device uid: f2b01c49ecd9c389
// Only the model, manufacturer is same (but I can not use 2 fields because user can use 2 devices with same model, manufacturer)
Вы можете видеть, что uid
из datasource
отличается от local device uid
, поэтому я не могу различить данные.
Есть ли способ отличить данные между разными устройствами? Буду признателен за любую помощь или предложение.
ДЕМО-проект