2015-08-03 23:09:49 +02:00
|
|
|
package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
|
|
|
import android.app.Activity;
|
2015-08-06 02:17:38 +02:00
|
|
|
import android.content.Context;
|
|
|
|
import android.net.Uri;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2016-10-24 20:02:44 +02:00
|
|
|
import de.greenrobot.dao.query.QueryBuilder;
|
2015-08-11 11:21:10 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
2016-10-24 20:02:44 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.GBException;
|
2016-05-04 12:31:29 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
2016-06-14 15:56:38 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.appmanager.AppManagerActivity;
|
2015-10-24 23:28:02 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
|
2015-08-06 02:17:38 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
|
2015-08-11 11:21:10 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
2016-06-16 21:54:53 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample;
|
2016-05-08 23:14:58 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
2016-10-24 20:02:44 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivityOverlayDao;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleHealthActivitySampleDao;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleMisfitSampleDao;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.entities.PebbleMorpheuzSampleDao;
|
2015-08-11 11:21:10 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
2015-08-03 23:09:49 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
2016-11-15 23:41:35 +01:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils;
|
2016-04-25 23:18:55 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2015-10-24 23:28:02 +02:00
|
|
|
public class PebbleCoordinator extends AbstractDeviceCoordinator {
|
2015-07-27 23:49:53 +02:00
|
|
|
public PebbleCoordinator() {
|
|
|
|
}
|
|
|
|
|
2015-05-05 00:48:02 +02:00
|
|
|
@Override
|
2015-08-03 23:09:49 +02:00
|
|
|
public boolean supports(GBDeviceCandidate candidate) {
|
2016-07-12 00:24:23 +02:00
|
|
|
String name = candidate.getDevice().getName();
|
|
|
|
return name != null && name.startsWith("Pebble");
|
2015-05-05 00:48:02 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public DeviceType getDeviceType() {
|
|
|
|
return DeviceType.PEBBLE;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Class<? extends Activity> getPairingActivity() {
|
2015-05-10 16:27:31 +02:00
|
|
|
return null;
|
2015-05-05 00:48:02 +02:00
|
|
|
}
|
2015-07-20 23:20:24 +02:00
|
|
|
|
|
|
|
public Class<? extends Activity> getPrimaryActivity() {
|
|
|
|
return AppManagerActivity.class;
|
|
|
|
}
|
2015-07-27 23:49:53 +02:00
|
|
|
|
2016-10-24 20:02:44 +02:00
|
|
|
@Override
|
|
|
|
protected void deleteDevice(GBDevice gbDevice, Device device, DaoSession session) throws GBException {
|
|
|
|
Long deviceId = device.getId();
|
|
|
|
QueryBuilder<?> qb = session.getPebbleHealthActivitySampleDao().queryBuilder();
|
|
|
|
qb.where(PebbleHealthActivitySampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
|
|
|
|
qb = session.getPebbleHealthActivityOverlayDao().queryBuilder();
|
|
|
|
qb.where(PebbleHealthActivityOverlayDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
|
|
|
|
qb = session.getPebbleMisfitSampleDao().queryBuilder();
|
|
|
|
qb.where(PebbleMisfitSampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
|
|
|
|
qb = session.getPebbleMorpheuzSampleDao().queryBuilder();
|
|
|
|
qb.where(PebbleMorpheuzSampleDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
|
|
|
|
}
|
|
|
|
|
2015-07-27 23:49:53 +02:00
|
|
|
@Override
|
2016-06-27 20:41:20 +02:00
|
|
|
public SampleProvider<? extends AbstractActivitySample> getSampleProvider(GBDevice device, DaoSession session) {
|
2016-04-25 23:18:55 +02:00
|
|
|
Prefs prefs = GBApplication.getPrefs();
|
2016-04-25 23:39:03 +02:00
|
|
|
int activityTracker = prefs.getInt("pebble_activitytracker", SampleProvider.PROVIDER_PEBBLE_HEALTH);
|
2016-02-18 20:41:22 +01:00
|
|
|
switch (activityTracker) {
|
|
|
|
case SampleProvider.PROVIDER_PEBBLE_HEALTH:
|
2016-07-30 23:22:27 +02:00
|
|
|
return new PebbleHealthSampleProvider(device, session);
|
2016-02-18 20:41:22 +01:00
|
|
|
case SampleProvider.PROVIDER_PEBBLE_MISFIT:
|
2016-07-30 23:22:27 +02:00
|
|
|
return new PebbleMisfitSampleProvider(device, session);
|
2016-02-18 20:41:22 +01:00
|
|
|
case SampleProvider.PROVIDER_PEBBLE_MORPHEUZ:
|
2016-07-30 23:22:27 +02:00
|
|
|
return new PebbleMorpheuzSampleProvider(device, session);
|
2016-02-18 20:41:22 +01:00
|
|
|
default:
|
2016-07-30 23:22:27 +02:00
|
|
|
return new PebbleHealthSampleProvider(device, session);
|
2015-08-16 23:30:16 +02:00
|
|
|
}
|
2015-07-27 23:49:53 +02:00
|
|
|
}
|
2015-08-06 02:17:38 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public InstallHandler findInstallHandler(Uri uri, Context context) {
|
|
|
|
PBWInstallHandler installHandler = new PBWInstallHandler(uri, context);
|
|
|
|
return installHandler.isValid() ? installHandler : null;
|
|
|
|
}
|
2015-10-24 23:28:02 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean supportsActivityDataFetching() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2016-09-20 22:02:40 +02:00
|
|
|
@Override
|
|
|
|
public boolean supportsActivityTracking() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2015-10-24 23:28:02 +02:00
|
|
|
@Override
|
|
|
|
public boolean supportsScreenshots() {
|
|
|
|
return true;
|
|
|
|
}
|
2016-03-20 17:53:55 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean supportsAlarmConfiguration() {
|
|
|
|
return false;
|
|
|
|
}
|
2016-05-04 12:31:29 +02:00
|
|
|
|
2016-06-19 23:22:28 +02:00
|
|
|
@Override
|
|
|
|
public boolean supportsHeartRateMeasurement(GBDevice device) {
|
2016-11-15 23:41:35 +01:00
|
|
|
return PebbleUtils.hasHRM(device.getModel());
|
2016-06-19 23:22:28 +02:00
|
|
|
}
|
|
|
|
|
2016-05-04 12:31:29 +02:00
|
|
|
@Override
|
|
|
|
public int getTapString() {
|
|
|
|
return R.string.tap_connected_device_for_app_mananger;
|
|
|
|
}
|
2016-05-13 23:47:47 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getManufacturer() {
|
|
|
|
return "Pebble";
|
|
|
|
}
|
2016-10-25 17:39:11 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean supportsAppsManagement() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Class<? extends Activity> getAppsManagementActivity() {
|
|
|
|
return AppManagerActivity.class;
|
|
|
|
}
|
2015-05-05 00:48:02 +02:00
|
|
|
}
|