我试图在使用4G/LTE时获得设备的纬度/长度。下面的代码在使用WiFi时效果很好,但使用4G/LTE时根本不会调用onLocationChanged
方法。任何想法为什么?使用LTE而不是WiFi获取位置数据的问题
我只有一个有限的窗口来获取位置坐标,因为它们需要在开始时附加到审计日志。
LTE/4G通常需要比WiFi更长的时间来查明经纬度吗?
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if (networkType.equals("WiFi")) {
lp = LocationManager.NETWORK_PROVIDER;
}
else {
lp = LocationManager.GPS_PROVIDER;
}
locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
gpsTestLocation = locationStringFromLocation(location);
System.out.println("mcsoutput location: " + gpsTestLocation);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
// Register the listener with the Location Manager to receive location updates
lm.requestLocationUpdates(lp, 0, 0, locationListener);
网络类型是想通了:
private String checkNetworkState() {
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
// NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
TelephonyManager telephonyService = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if (mWifi!=null) isOnWifi = mWifi.isConnected();
if (m3G!=null) is3G = m3G.isConnected();
if(isOnWifi == true) {
return "WiFi";
}
else {
int cellType = telephonyService.getNetworkType();
return isConnectionFast(cellType);
}
}
我不确定,但不是networkType.equals(“WiFi”)导致的问题? 什么是networkType?你如何得到它? – 2015-02-10 22:54:35
我已经添加了用于确定网络类型的方法。我调试了代码以确保它按预期工作,而且是。只是由于某种原因,没有收到位置 – 2015-02-10 23:05:22