从Android OS获取位置触发器

时间:2018-04-12 10:34:12

标签: android geolocation gps location-updates

如果用户进入预定义区域(提供给操作系统的Lat长列表),是否有办法从Android操作系统获取触发器?例如如果我将特定餐厅的长度给予操作系统,当用户进入餐厅时,操作系统是否可以向我发送触发器?

由于

2 个答案:

答案 0 :(得分:0)

我已经开发了一款带有大量地理编码功能的应用。

我的方法是测量当前位置(纬度,纬度)和目标位置之间的距离。

如果你将它放入(背景) - 任务中它可以解决你的问题。

我认为命名空间android.location中的LocationManager和LocationListener类足以让它跟踪。

如果没有方法来计算这些坐标之间的距离,您可以使用以下代码:

public static class Distance
{
    // cos(d) = sin(φА)·sin(φB) + cos(φА)·cos(φB)·cos(λА − λB),
    //  where φА, φB are latitudes and λА, λB are longitudes
    // Distance = d * R
    public static double DistanceBetweenPlaces(double lon1, double lat1, double lon2, double lat2)
    {
        double R = 6371; // km

        double sLat1 = Math.Sin(Radians(lat1));
        double sLat2 = Math.Sin(Radians(lat2));
        double cLat1 = Math.Cos(Radians(lat1));
        double cLat2 = Math.Cos(Radians(lat2));
        double cLon = Math.Cos(Radians(lon1) - Radians(lon2));

        double cosD = sLat1 * sLat2 + cLat1 * cLat2 * cLon;

        double d = Math.Acos(cosD);

        double dist = R * d;

        return dist;
    }

    public static double Radians(double x)
    {
        return x * PIx / 180;
    }

    const double PIx = Math.PI;
    const double RADIO = 6378.16;


}
祝你好运! 马可

答案 1 :(得分:0)

您的描述类似于您需要地理围栏。它允许您在用户进入某个邻近区域时触发。

您可以参考提供教程的here来满足您的要求。