wangzhibo
4 天以前 ae6f40460dcd56af6c5f60ba52c883854c3bac55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package nodomain.freeyourgadget.gadgetbridge.service.devices.garmin;
 
import android.location.Location;
import android.os.Build;
 
import nodomain.freeyourgadget.gadgetbridge.proto.garmin.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();
    }
}