mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-03 17:02:13 +01:00
InfiniTime: support navigation app
This commit is contained in:
parent
93b9ee735c
commit
4cad3b3837
@ -36,6 +36,11 @@ public class PineTimeJFConstants {
|
|||||||
|
|
||||||
public static final UUID UUID_SERVICE_NAVIGATION = UUID.fromString("00010000-78fc-48fe-8e23-433b3a1942d0");
|
public static final UUID UUID_SERVICE_NAVIGATION = UUID.fromString("00010000-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
|
||||||
|
public static final UUID UUID_CHARACTERISTICS_NAVIGATION_FLAGS = UUID.fromString("00010001-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
public static final UUID UUID_CHARACTERISTICS_NAVIGATION_NARRATIVE = UUID.fromString("00010002-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
public static final UUID UUID_CHARACTERISTICS_NAVIGATION_MAN_DISTANCE = UUID.fromString("00010003-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
public static final UUID UUID_CHARACTERISTICS_NAVIGATION_PROGRESS = UUID.fromString("00010004-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
|
||||||
public static final UUID UUID_CHARACTERISTIC_ALERT_NOTIFICATION_EVENT = UUID.fromString("00020001-78fc-48fe-8e23-433b3a1942d0");
|
public static final UUID UUID_CHARACTERISTIC_ALERT_NOTIFICATION_EVENT = UUID.fromString("00020001-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
|
||||||
public static final UUID UUID_SERVICE_WEATHER = UUID.fromString("00040000-78fc-48fe-8e23-433b3a1942d0");
|
public static final UUID UUID_SERVICE_WEATHER = UUID.fromString("00040000-78fc-48fe-8e23-433b3a1942d0");
|
||||||
|
@ -1238,6 +1238,10 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
|
|||||||
registerReceiver(mAlarmClockReceiver, filter);
|
registerReceiver(mAlarmClockReceiver, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mOsmandAidlHelper == null) {
|
||||||
|
mOsmandAidlHelper = new OsmandEventReceiver(this.getApplication());
|
||||||
|
}
|
||||||
|
|
||||||
// Weather receivers
|
// Weather receivers
|
||||||
if (features.supportsWeather()) {
|
if (features.supportsWeather()) {
|
||||||
if (GBApplication.isRunningOreoOrLater()) {
|
if (GBApplication.isRunningOreoOrLater()) {
|
||||||
@ -1245,8 +1249,7 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
|
|||||||
mLineageOsWeatherReceiver = new LineageOsWeatherReceiver();
|
mLineageOsWeatherReceiver = new LineageOsWeatherReceiver();
|
||||||
registerReceiver(mLineageOsWeatherReceiver, new IntentFilter("GB_UPDATE_WEATHER"));
|
registerReceiver(mLineageOsWeatherReceiver, new IntentFilter("GB_UPDATE_WEATHER"));
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (mCMWeatherReceiver == null) {
|
if (mCMWeatherReceiver == null) {
|
||||||
mCMWeatherReceiver = new CMWeatherReceiver();
|
mCMWeatherReceiver = new CMWeatherReceiver();
|
||||||
registerReceiver(mCMWeatherReceiver, new IntentFilter("GB_UPDATE_WEATHER"));
|
registerReceiver(mCMWeatherReceiver, new IntentFilter("GB_UPDATE_WEATHER"));
|
||||||
@ -1268,9 +1271,6 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
|
|||||||
//Nothing wrong, it just means we're not running on omnirom.
|
//Nothing wrong, it just means we're not running on omnirom.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mOsmandAidlHelper == null) {
|
|
||||||
mOsmandAidlHelper = new OsmandEventReceiver(this.getApplication());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GBApplication.getPrefs().getBoolean("auto_fetch_enabled", false) &&
|
if (GBApplication.getPrefs().getBoolean("auto_fetch_enabled", false) &&
|
||||||
|
@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
@ -87,6 +88,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.model.NavigationInfoSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.WorldClock;
|
import nodomain.freeyourgadget.gadgetbridge.model.WorldClock;
|
||||||
@ -257,6 +259,7 @@ public class PineTimeJFSupport extends AbstractBTLEDeviceSupport implements DfuL
|
|||||||
addSupportedService(GattService.UUID_SERVICE_BATTERY_SERVICE);
|
addSupportedService(GattService.UUID_SERVICE_BATTERY_SERVICE);
|
||||||
addSupportedService(PineTimeJFConstants.UUID_SERVICE_MUSIC_CONTROL);
|
addSupportedService(PineTimeJFConstants.UUID_SERVICE_MUSIC_CONTROL);
|
||||||
addSupportedService(PineTimeJFConstants.UUID_SERVICE_WEATHER);
|
addSupportedService(PineTimeJFConstants.UUID_SERVICE_WEATHER);
|
||||||
|
addSupportedService(PineTimeJFConstants.UUID_SERVICE_NAVIGATION);
|
||||||
addSupportedService(PineTimeJFConstants.UUID_CHARACTERISTIC_ALERT_NOTIFICATION_EVENT);
|
addSupportedService(PineTimeJFConstants.UUID_CHARACTERISTIC_ALERT_NOTIFICATION_EVENT);
|
||||||
addSupportedService(PineTimeJFConstants.UUID_SERVICE_MOTION);
|
addSupportedService(PineTimeJFConstants.UUID_SERVICE_MOTION);
|
||||||
|
|
||||||
@ -317,6 +320,68 @@ public class PineTimeJFSupport extends AbstractBTLEDeviceSupport implements DfuL
|
|||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSetNavigationInfo(NavigationInfoSpec navigationInfoSpec) {
|
||||||
|
TransactionBuilder builder = new TransactionBuilder("navigation info");
|
||||||
|
if (navigationInfoSpec.instruction == null) {
|
||||||
|
navigationInfoSpec.instruction = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
safeWriteToCharacteristic(builder, PineTimeJFConstants.UUID_CHARACTERISTICS_NAVIGATION_NARRATIVE, navigationInfoSpec.instruction.getBytes(StandardCharsets.UTF_8));
|
||||||
|
safeWriteToCharacteristic(builder, PineTimeJFConstants.UUID_CHARACTERISTICS_NAVIGATION_MAN_DISTANCE, (navigationInfoSpec.distanceToTurn + "m").getBytes(StandardCharsets.UTF_8));
|
||||||
|
String iconname;
|
||||||
|
switch (navigationInfoSpec.nextAction) {
|
||||||
|
case NavigationInfoSpec.ACTION_CONTINUE:
|
||||||
|
iconname = "contine";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_LEFT:
|
||||||
|
iconname = "turn-left";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_LEFT_SLIGHTLY:
|
||||||
|
iconname = "turn-slight-left";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_LEFT_SHARPLY:
|
||||||
|
iconname = "turn-sharp-left";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_RIGHT:
|
||||||
|
iconname = "turn-right";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_RIGHT_SLIGHTLY:
|
||||||
|
iconname = "turn-slight-right";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_TURN_RIGHT_SHARPLY:
|
||||||
|
iconname = "turn-sharp-right";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_KEEP_LEFT:
|
||||||
|
iconname = "continue-left";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_KEEP_RIGHT:
|
||||||
|
iconname = "continue-right";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_UTURN_LEFT:
|
||||||
|
case NavigationInfoSpec.ACTION_UTURN_RIGHT:
|
||||||
|
iconname = "iturn";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_ROUNDABOUT_RIGHT:
|
||||||
|
iconname = "roundabout-right";
|
||||||
|
break;
|
||||||
|
case NavigationInfoSpec.ACTION_ROUNDABOUT_LEFT:
|
||||||
|
iconname = "roundabout-left";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
iconname = "invalid";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
safeWriteToCharacteristic(builder, PineTimeJFConstants.UUID_CHARACTERISTICS_NAVIGATION_FLAGS, iconname.getBytes(StandardCharsets.UTF_8));
|
||||||
|
builder.queue(getQueue());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeleteNotification(int id) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSetTime() {
|
public void onSetTime() {
|
||||||
// Since this is a standard we should generalize this in Gadgetbridge (properly)
|
// Since this is a standard we should generalize this in Gadgetbridge (properly)
|
||||||
|
Loading…
Reference in New Issue
Block a user