Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 网络侦听器得不到分数_Android - Fatal编程技术网

Android 网络侦听器得不到分数

Android 网络侦听器得不到分数,android,Android,我的位置Listener有问题 这是我的MyLocationListenerNetWork: public class MyLocationListenerNetwork implements LocationListener { public MyLocationListenerNetwork(){ super(); } @Override public void onLocationChanged(Location loc) {

我的位置Listener有问题

这是我的MyLocationListenerNetWork:

public class MyLocationListenerNetwork implements LocationListener {

    public MyLocationListenerNetwork(){
        super();
    }

    @Override
    public void onLocationChanged(Location loc) {
        if(loc!=null){

        }
    }

    @Override
    public void onProviderDisabled(String pDisabled) {
            }

    @Override
    public void onProviderEnabled(String pEnabled) {
        }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}
关键是,我有一个服务,我想请求侦听器获取网络点。在我的onCreate中我确实喜欢这个

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationListenerNetwork = new MyLocationListenerNetwork();
            if(locationListenerNetwork!=null)
                lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                        0, 0, locationListenerNetwork);
它可以毫无问题地得分。问题是它消耗了很多电池,如果我一直开着它,它会消耗30-40%的电池。我只想打开一段时间。 这就是为什么在服务中我有一个线程,在这个线程中,我只打开监听器一段时间5分钟,但当我这样做时,监听器没有检索到任何点

有人知道为什么吗?

我想在您的reQuestLocationUpdates方法中检查参数,minTime

是您所需要的,所以刚才在minTime参数中提到了位置请求时间,所以您不需要线程

自:API级别1

注册指定提供程序定期通知的当前活动。将使用当前位置或状态更新定期调用提供的LocationListener

接收最近的位置可能需要一段时间。如果需要即时位置,应用程序可以使用getLastKnownLocationString方法

如果用户禁用了提供程序,更新将停止,并将调用onProviderDisabledString方法。一旦再次启用提供程序,将调用onProviderEnabledString方法,并再次启动位置更新

通知频率可使用minTime和minDistance参数进行控制。如果minTime大于0,LocationManager可能会在位置更新之间休息minTime毫秒以节省电源。如果minDistance大于0,则仅当设备通过minDistance仪表移动时,才会广播位置。要尽可能频繁地获取通知,请将这两个参数都设置为0

后台服务人员应小心设置足够高的minTime,这样设备就不会因为一直打开GPS或无线收音机而消耗太多的电能。特别是,不建议低于60000ms的值

调用线程必须是循环器线程,例如调用活动的主线程

参数

提供程序要注册的提供程序的名称

minTime通知的最小时间间隔,以毫秒为单位。此字段仅用作节能提示,位置更新之间的实际时间可能大于或小于此值

minDistance通知的最小距离间隔,以米为单位

侦听器{link LocationListener},其onLocationChangedLocation方法将为每个位置更新调用

编辑:

GPS服务通常需要大量内存。您需要GPS服务还是只是寻找位置更新?Android为基于位置的服务提供了一个很好的启动doco。 尝试按照本文档中的步骤查找最佳用户位置

确保在适当的时间停止侦听更新。即使某个应用程序在不运行时试图耗尽电池电量,用户也不会感到高兴


尝试将应用程序作为后台任务。。i、 e服务或广播接收器

谢谢,但无论如何,它不工作。我正试着照你说的做,但结果是一样的。应用程序消耗的能量是相同的……顺便说一句,我在onLocationChanged方法上设置了一个停止点,当我将侦听器的requestUpdates设置为60000ms时,它仍然需要每秒七个点。。。。。。。。我不知道这是安卓API的问题,还是我没有正确使用它。无论如何,谢谢你的帮助!不工作意味着什么?你看过我答案编辑部分的网址了吗?再次感谢。在onCreate中使用locationListener之后,它就可以工作了。而且,嗯……我不知道为什么,但无论我对RequestLocationUpdatesMinTime做了什么更改,它都不会改变任何东西……它每次都在更新位置……我试着把MindDistance=200000和MintTime=100000放在一起,它每秒钟都保持一个位置。。。。
public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)