2017-08-21 80 views
0

我有一个名为GPStracker的类,它实现LocationListener接口。Android LocationListener没有打onLocationChanged

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(); 
    } 
} 

在manifest文件中我设置一下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); 
} 

我在活动中创建了一个新的GPSTracker对象。

g = new GPSTracker(this); 

我希望这个工作。它会要求使用GPS的权限,我会在顶部看到GPS图标,因此它可以与GPS协同工作。但onLocationChanged方法从未被调用。

我甚至试着在我所在的建筑物上下行走(也许它确实需要改变),但那也行不通。

我已经尝试过在虚拟设备上更改GPS位置,并且像魅力一样工作。它会立即更新我的活动。

我已经尝试过API 19,23和26(在模拟设备上)所有的工作。我已经在API 23上尝试过,它似乎并不工作。

有没有人知道我在做什么错在这里?

回答

1

同时使用有时网络提供的坐标,如果不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); 
+0

可能不能伤害,但它并没有解决我的问题。 – Ravenix

+0

我在我的代码中错误的地方改变了它,当我把它放在正确的地方时,它完全修复了它。谢谢!! – Ravenix

相关问题