Initial device support for MyKronoz ZeTime, following the wiki page add new device support.

This commit is contained in:
Kranz 2018-02-08 07:21:12 +01:00
parent d34f8237df
commit bd673fb4af
7 changed files with 321 additions and 0 deletions

View File

@ -0,0 +1,129 @@
package nodomain.freeyourgadget.gadgetbridge.devices.zetime;
import android.app.Activity;
import android.bluetooth.le.ScanFilter;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.Collection;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
/**
* Created by lightwars on 06.02.18.
*/
public class ZeTimeCoordinator extends AbstractDeviceCoordinator {
@Override
public DeviceType getDeviceType() {
return DeviceType.ZETIME;
}
@NonNull
@Override
public Collection<? extends ScanFilter> createBLEScanFilters() {
return super.createBLEScanFilters();
}
@NonNull
@Override
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
String name = candidate.getDevice().getName();
if (name != null && name.startsWith("ZeTime")) {
return DeviceType.ZETIME;
}
return DeviceType.UNKNOWN;
}
@Nullable
@Override
public Class<? extends Activity> getPairingActivity() {
return null;
}
@Override
public boolean supportsScreenshots() {
return false;
}
@Override
public boolean supportsAlarmConfiguration() {
return true;
}
@Override
public boolean supportsWeather() {
return true;
}
@Override
public InstallHandler findInstallHandler(Uri uri, Context context) {
return null;
}
@Override
public String getManufacturer() {
return "MyKronoz";
}
@Override
public boolean supportsActivityTracking() {
return false;
}
@Override
public Class<? extends Activity> getAppsManagementActivity() {
return null;
}
@Override
public boolean supportsHeartRateMeasurement(GBDevice device) {
return true;
}
@Override
public boolean supportsActivityDataFetching() {
return false;
}
@Override
public boolean supportsAppsManagement() {
return false;
}
@Override
public boolean supportsCalendarEvents() {
return true;
}
@Override
public SampleProvider<? extends ActivitySample> getSampleProvider(GBDevice device, DaoSession session) {
return null;
}
@Override
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
}
@Override
public boolean supportsSmartWakeup(GBDevice device) {
return false;
}
@Override
public boolean supportsRealtimeData() {
return false;
}
}

View File

@ -42,6 +42,7 @@ public enum DeviceType {
EXRIZUK8(42, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_exrizu_k8),
NO1F1(50, R.drawable.ic_device_hplus, R.drawable.ic_device_hplus_disabled, R.string.devicetype_no1_f1),
TECLASTH30(60, R.drawable.ic_device_h30_h10, R.drawable.ic_device_h30_h10_disabled, R.string.devicetype_teclast_h30),
ZETIME(70, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_mykronoz_zetime),
TEST(1000, R.drawable.ic_device_default, R.drawable.ic_device_default_disabled, R.string.devicetype_test);
private final int key;

View File

@ -39,6 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleSupport
import nodomain.freeyourgadget.gadgetbridge.service.devices.vibratissimo.VibratissimoSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.jyou.TeclastH30Support;
import nodomain.freeyourgadget.gadgetbridge.service.devices.zetime.ZeTimeDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
public class DeviceSupportFactory {
@ -141,6 +142,9 @@ public class DeviceSupportFactory {
case TECLASTH30:
deviceSupport = new ServiceDeviceSupport(new TeclastH30Support(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;
case ZETIME:
deviceSupport = new ServiceDeviceSupport(new ZeTimeDeviceSupport(), EnumSet.of(ServiceDeviceSupport.Flags.BUSY_CHECKING));
break;
}
if (deviceSupport != null) {
deviceSupport.setContext(gbDevice, mBtAdapter, mContext);

View File

@ -0,0 +1,184 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.zetime;
import android.net.Uri;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec;
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport;
/**
* Created by Kranz on 08.02.2018.
*/
public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport {
private static final Logger LOG = LoggerFactory.getLogger(ZeTimeDeviceSupport.class);
private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo();
public ZeTimeDeviceSupport(){
super(LOG);
//addSupportedService();
}
@Override
public void onSendConfiguration(String config) {
}
@Override
public void onDeleteCalendarEvent(byte type, long id) {
}
@Override
public void onHeartRateTest() {
}
@Override
public void onEnableRealtimeSteps(boolean enable) {
}
@Override
public void onFindDevice(boolean start) {
}
@Override
public boolean useAutoConnect() {
return false;
}
@Override
public void onSetHeartRateMeasurementInterval(int seconds) {
}
@Override
public void onSetAlarms(ArrayList<? extends Alarm> alarms) {
}
@Override
public void onAppConfiguration(UUID appUuid, String config, Integer id) {
}
@Override
public void onEnableHeartRateSleepSupport(boolean enable) {
}
@Override
public void onSetMusicInfo(MusicSpec musicSpec) {
}
@Override
public void onSetCallState(CallSpec callSpec) {
}
@Override
public void onAppStart(UUID uuid, boolean start) {
}
@Override
public void onEnableRealtimeHeartRateMeasurement(boolean enable) {
}
@Override
public void onSetConstantVibration(int integer) {
}
@Override
public void onFetchActivityData() {
}
@Override
public void onTestNewFunction() {
}
@Override
public void onSetMusicState(MusicStateSpec stateSpec) {
}
@Override
public void onAddCalendarEvent(CalendarEventSpec calendarEventSpec) {
}
@Override
public void onSetTime() {
}
@Override
public void onAppDelete(UUID uuid) {
}
@Override
public void onAppInfoReq() {
}
@Override
public void onSetCannedMessages(CannedMessagesSpec cannedMessagesSpec) {
}
@Override
public void onReboot() {
}
@Override
public void onScreenshotReq() {
}
@Override
public void onSendWeather(WeatherSpec weatherSpec) {
}
@Override
public void onAppReorder(UUID[] uuids) {
}
@Override
public void onInstallApp(Uri uri) {
}
@Override
public void onDeleteNotification(int id) {
}
@Override
public void onNotification(NotificationSpec notificationSpec) {
}
}

View File

@ -53,6 +53,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.no1f1.No1F1Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.vibratissimo.VibratissimoCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.zetime.ZeTimeCoordinator;
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.DeviceAttributes;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@ -203,6 +204,7 @@ public class DeviceHelper {
result.add(new MakibesF68Coordinator());
result.add(new EXRIZUK8Coordinator());
result.add(new TeclastH30Coordinator());
result.add(new ZeTimeCoordinator());
return result;
}

View File

@ -530,6 +530,7 @@
<string name="devicetype_exrizu_k8">Exrizu K8</string>
<string name="devicetype_no1_f1">No.1 F1</string>
<string name="devicetype_teclast_h30">Teclast H30</string>
<string name="devicetype_mykronoz_zetime">MyKronoz ZeTime</string>
<string name="choose_auto_export_location">Choose export location</string>
</resources>

0
gradlew vendored Executable file → Normal file
View File