Android LocationListener 没有命中 onLocationChanged
Android LocationListener no hitting onLocationChanged
我有一个名为 GPStracker 的 class,它实现了 LocationListener 接口。
public class GPSTracker implements LocationListener {
Context context;
LocationManager lm;
在构造函数中我设置了 LocationManager 和一些设置(我省略了权限部分):
public GPSTracker(Context c) {
context = c;
... (Permission checking)
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGPSEnabled){
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 5, this);
} else {
Toast.makeText(context, "Please enable GPS", Toast.LENGTH_SHORT).show();
}
}
在清单文件中,我设置了这些关于 GPS 的权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
我有一些重写的方法,其中只有一个具有某些功能,即 onLocationChanged 方法:
@Override
public void onLocationChanged(Location location) {
InspectieOverzicht activity = (InspectieOverzicht) context;
activity.getFirstFragment().updateDistance(location);
}
我在 activity.
中创建了一个新的 GPSTracker 对象
g = new GPSTracker(this);
我希望这能奏效。它会请求使用 GPS 的权限,我在顶部看到 GPS 图标,所以它正在使用 GPS。但是永远不会调用 onLocationChanged
方法。
我什至尝试在我所在的建筑物上走来走去(也许它真的需要改变),但这也没有用。
我已经在虚拟设备上尝试过更改 GPS 位置,效果非常好。它正在立即更新我的 activity。
我已经在 API 19、23 和 26(在模拟设备上)上试过了,都有效。我已经在 API 23 的实际设备上试过了,但似乎不起作用。
有谁知道我在这里做错了什么?
如果GPS_PROVIDER不起作用,有时网络会提供坐标
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, mylistener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, mylistener);
我有一个名为 GPStracker 的 class,它实现了 LocationListener 接口。
public class GPSTracker implements LocationListener {
Context context;
LocationManager lm;
在构造函数中我设置了 LocationManager 和一些设置(我省略了权限部分):
public GPSTracker(Context c) {
context = c;
... (Permission checking)
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGPSEnabled){
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 5, this);
} else {
Toast.makeText(context, "Please enable GPS", Toast.LENGTH_SHORT).show();
}
}
在清单文件中,我设置了这些关于 GPS 的权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
我有一些重写的方法,其中只有一个具有某些功能,即 onLocationChanged 方法:
@Override
public void onLocationChanged(Location location) {
InspectieOverzicht activity = (InspectieOverzicht) context;
activity.getFirstFragment().updateDistance(location);
}
我在 activity.
中创建了一个新的 GPSTracker 对象g = new GPSTracker(this);
我希望这能奏效。它会请求使用 GPS 的权限,我在顶部看到 GPS 图标,所以它正在使用 GPS。但是永远不会调用 onLocationChanged
方法。
我什至尝试在我所在的建筑物上走来走去(也许它真的需要改变),但这也没有用。
我已经在虚拟设备上尝试过更改 GPS 位置,效果非常好。它正在立即更新我的 activity。
我已经在 API 19、23 和 26(在模拟设备上)上试过了,都有效。我已经在 API 23 的实际设备上试过了,但似乎不起作用。
有谁知道我在这里做错了什么?
如果GPS_PROVIDER不起作用,有时网络会提供坐标
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, mylistener);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, mylistener);