查找位置:Google Play 位置服务或 Android 平台位置 API [英] Finding Location : Google Play Location Service or Android platform location APIs

查看:23
本文介绍了查找位置:Google Play 位置服务或 Android 平台位置 API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的新导航应用获取用户位置.我想经常检查用户的位置,它必须是准确的.我使用示例中的以下代码来获取位置.

i am trying to get the users location for my new navigation app. i want to check the users location frequently and it has to be accurate . I use the following code from sample to get the location .

public class MainActivity extends Activity implements LocationListener {
private LocationManager locationManager;
private String provider;
private TextView a;
private TextView b;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    a = (TextView) findViewById(R.id.a);
    b = (TextView) findViewById(R.id.b);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);

    if (location != null) {
        System.out.println("Provider " + provider + " has been selected.");
        onLocationChanged(location);
    } else {
        a.setText("Location not available");
        b.setText("Location not available");
    }
}

@Override
protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(provider,0, 1, this);
}

@Override
protected void onPause() {
    super.onPause();
    locationManager.removeUpdates(this);
}

@Override
public void onLocationChanged(Location location) {
    Double lat =  location.getLatitude();
    Double lng =  location.getLongitude();
    a.setText(String.valueOf(lat));
    b.setText(String.valueOf(lng));
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    Toast.makeText(this, "Enabled new provider " + provider,
            Toast.LENGTH_SHORT).show();

}

@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(this, "Disabled provider " + provider,
            Toast.LENGTH_SHORT).show();
}
}

但是当我移动时,位置坐标并没有更新,我总是得到一个恒定的值......有没有更好的方法来获取位置?根据 android 文档,我可以为此使用 Google Play 位置服务或 Android 平台位置 API.我检查了两者的示例代码,它实现了 LocationListener 接口来获取用户位置.那么它们之间的实际区别是什么?

But location cordinates are not updating as i move,i get a constant value always ... is there any better way to get location ? According to to android docs i can use Google Play Location Service or Android platform location APIs for this . I checked the sample code for both and it implements the LocationListener interface to get the user location .So whats the actual difference between them?

推荐答案

绝对使用新的 google play 定位服务.他们在室内的工作比旧的位置经理好得多.我创建了一个使用新的 google play 位置服务并定期在后台运行的示例.看看吧:

Absolutely use the new google play location services. They work much better indoors than the old location manager. I have created a sample that uses the new google play location services and works in the background periodically. Check it out:

https://github.com/nickfox/GpsTracker/tree/master/phoneClients/android

这篇关于查找位置:Google Play 位置服务或 Android 平台位置 API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆