android:如何通过代码本地化仅使用wifi或移动网络而不使用弹出安全菜单

时间:2016-10-14 14:22:27

标签: android localization gps wifi

j知道从4.0开始就不可能以编程方式触发gps 但除此之外,本地化有三种可能性

1)gps,wifi和移动网络(全部在一起)

2)只有wifi和移动网络

3)只有gps

是否有一些可能的代码来完成第二个

所以让我们清楚j不想触发wifi。我知道

j想要通过任何wifi(和)或移动网络触发本地化而不使用gps

j试图实现像skyhook'WPSPeriodicLocationCallback或WPSLocationCallback这样的对象但是 没有触发官方安全菜单

就行不通

所以j想要的只是通过wifi或互联网连接和代码

来通过定位系统 avast antiitheft确实以一种或多或少的准确度回馈了一些信息。

我想重现相同的

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用LocationManager.NETWORK_PROVIDER而不是LocationManager.GPS_PROVIDER来定位位置。 NETWORK_PROVIDER将在GSM或wifi上解析,这是可用的。显然,关闭wifi,将使用GSM。请记住,使用蜂窝网络准确到500米。

http://developer.android.com/guide/topics/location/obtaining-user-location.html有一些非常好的信息和示例代码。

完成OnCreate()中的大部分代码后,添加:

// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);

// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
  // Called when a new location is found by the network location provider.
  makeUseOfNewLocation(location);
}

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {}

public void onProviderDisabled(String provider) {}
 };

  // Register the listener with the Location Manager to receive location updates
  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

您也可以让您的活动实现LocationListener类,从而在您的活动中实现onLocationChanged(),或者您可以使用this教程来获取lat和lang。

this answer进行了复制。