Ban*_*der 5 gps android location locationmanager
我有一个问题,我的服务实现了LocationListener,它似乎每500毫秒接收一次GPSupdate.无论我在requestLocationUpdates函数中放入什么minTime.
我的代码片段:
public class LocationService extends Service implements LocationListener {
LocationManager locMan;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER;
locMan.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 1, this);
}
public void onLocationChanged(Location location) {
Log.d( "Loc", "Location has been changed" );
}
}
Run Code Online (Sandbox Code Playgroud)
从我的主要活动中的一个按钮,我将调用startService(),之后它应该在后台运行,但它会提供持续的更新.
我发现您的情况存在一些问题:
GPS 的精度最多约为 3 米,这是在最佳条件下的情况。因此,如果位置改变 1 米,则请求更新是没有意义的。GPS 噪音很容易表明设备正在移动,而实际上设备是静止的。我建议将 minDistance 至少设置为 10。
我不明白您为什么要调用 isProviderEnabled() 因为您没有对返回值执行任何操作。
您说在 startService() 之后,事情应该在后台运行,但事实并非如此。除非您为其创建某种后台线程,否则服务不会在后台运行。这个答案要涵盖的内容太多,无法解释服务的工作原理。上网阅读一些书籍,或者获取一本有关 Android 开发的好书。
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |