36 lines
1.4 KiB
Java
36 lines
1.4 KiB
Java
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin;
|
|
|
|
import android.location.Location;
|
|
import android.os.Build;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.proto.vivomovehr.GdiCore;
|
|
|
|
public final class GarminUtils {
|
|
private GarminUtils() {
|
|
// utility class
|
|
}
|
|
|
|
public static GdiCore.CoreService.LocationData toLocationData(final Location location, final GdiCore.CoreService.DataType dataType) {
|
|
final GdiCore.CoreService.LatLon positionForWatch = GdiCore.CoreService.LatLon.newBuilder()
|
|
.setLat((int) ((location.getLatitude() * 2.147483648E9d) / 180.0d))
|
|
.setLon((int) ((location.getLongitude() * 2.147483648E9d) / 180.0d))
|
|
.build();
|
|
|
|
float vAccuracy = 0;
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
vAccuracy = location.getVerticalAccuracyMeters();
|
|
}
|
|
|
|
return GdiCore.CoreService.LocationData.newBuilder()
|
|
.setPosition(positionForWatch)
|
|
.setAltitude((float) location.getAltitude())
|
|
.setTimestamp(GarminTimeUtils.javaMillisToGarminTimestamp(location.getTime()))
|
|
.setHAccuracy(location.getAccuracy())
|
|
.setVAccuracy(vAccuracy)
|
|
.setPositionType(dataType)
|
|
.setBearing(location.getBearing())
|
|
.setSpeed(location.getSpeed())
|
|
.build();
|
|
}
|
|
}
|