当前位置: 首页 > 面试题库 >

GPS Android-仅获得一次定位

广亮
2023-03-14
问题内容

有没有一种方法可以使GPS一次访问,而不必使用不断检查位置更新的弯针?

在我的场景中,我感兴趣的只是查找当前坐标,而不是与GPS卫星的连续连接。有谁知道如何做到这一点?提前致谢。


问题答案:

首先检查最近知道的位置是否是最近的。如果没有,我相信您必须设置onLocationChanged侦听器,但是一旦获得第一个有效位置,就可以随时停止更新流。

加成

public class Example extends Activity implements LocationListener {
    LocationManager mLocationManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if(location != null && location.getTime() > Calendar.getInstance().getTimeInMillis() - 2 * 60 * 1000) {
            // Do something with the recent location fix
            //  otherwise wait for the update below
        }
        else {
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
        }
    }

    public void onLocationChanged(Location location) {
        if (location != null) {
            Log.v("Location Changed", location.getLatitude() + " and " + location.getLongitude());
            mLocationManager.removeUpdates(this);
        }
    }

    // Required functions    
    public void onProviderDisabled(String arg0) {}
    public void onProviderEnabled(String arg0) {}
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
}


 类似资料:
  • 问题内容: 我如何转换为? 问题答案: 您是否要仅用一位数字表示它: 或实际上四舍五入其他小数位? 甚至严格舍弃?

  • 问题内容: 我有一个非常长且复杂的json对象,但我只想在第一级获得项目/键! 例: 我想得到 1,3,8 ! 我发现此代码: 但是它会打印所有键(以及 12和25 ) 问题答案: 做一个简单的 如果需要排序列表:

  • 我正在使用Keycloak与Google作为身份提供商。我需要谷歌的刷新令牌来管理用户的日历。以下是我的Keycloak Google IDP设置: 登录后,我根据https://www . key cloak . org/docs/latest/server _ development/index . html # retrieving-external-IDP-tokens获取刷新令牌。看起来

  • 问题内容: 我的理解是,在下面的代码中,两个绑定只会 延迟地绑定一次 : 但是,在以下情况下 每个摘要 都会更新吗? 而 如何一次性约束力嵌套的小号? 问题答案: 方案1: 这两个表达式都是一次性的。添加项目或更改现有项目的名称将不会反映出来。 演示: http : //plnkr.co/edit/53r8FCmcNKNK4MmM6Uzxp2?p=preview 方案2: 第一个表达式将是一次性的

  • 问题内容: 我正在尝试实现一个每秒循环的ScheduledExecutorService线程,但是截至目前,它仅循环一次。 我的问题是如何设置它,使其定期循环而不是一次迭代? 另外,如何将连接池传递到线程中,以便每次迭代都可以查询数据库?任何帮助深表感谢。 问题答案: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent

  • 我在我的活动中使用了一个倒计时计时器来实现一些倒计时功能。我决定离开CountDownTimer,使用ScheduledThreadPoolExecutor,因为CountDownTimer不能在onTick()中自动取消。 出于某种原因,以下代码中的my只执行一次。我不知道为什么它没有执行多次。函数未被击中。