2011-04-19 70 views
1

我正在在机器人位置跟踪器应用程序,以便我调用一个函数 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, 听者);禁用GPS信号

所以在这个例子中我设置了5分钟的时间间隔。 现在我的问题是为什么GPS信号不断激活,虽然我的间隔时间为5分钟。

不能停用,直到5分钟,5分钟后它不能自动激活? 我的设备需要更多的电池电量,虽然它不断活跃... 我必须做什么来停用GPS功能定义的特定时间间隔内的GPS。

回答

1

不,你不能,但你总是可以运行一个服务,每五分钟要求一次修复。

对于E/G使用requestSingleUpdate (String provider, PendingIntent intent)

为了当获得单次修复广播的意图。

+0

谢谢你给我答复,但我不能得到你的答案..请你给我一些源代码 – kinju 2011-04-19 05:51:30

0

基本上这个功能需要时间间隔如下,

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,30000,0,听者);

的意思在这里是给我的GPS更新,如果你没有

其他优先任务,在规定时间内找到。

,所以这是你的方法

公共无效requestLocationUpdates(长minTime,浮minDistance才会,标准标准,的PendingIntent意图)

&这些参数,请仔细阅读它,你可以把它理解

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

minDistance才会=对于通知的最小距离间隔,以米为单位的标准包含用于位置管理器参数,以选择适当的提供者和参数来计算位置

意图= A {#LINK的PendingIntent}被用于每个发送位置更新

这是所有关于

最好的问候, 〜阿努普

+0

Thnak的给我答复,但我不知道如何给PendingIntent参数..请问你会给我举一些例子链接 – kinju 2011-04-19 06:02:00

+0

这是不同风格的requestLocationUpdates()请通过以下链接http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28long,%20float,%20android。 location.Criteria,%20android.app.PendingIntent%29 – 2011-04-19 07:25:12

+0

你一定会得到这个问题修复不要忘记标记为答案 – 2011-04-19 07:26:24

1

我有完全一样的问题,我的应用程序。我使用了一个在启动时初始化的计时器:

serviceHandler = new Handler(); serviceHandler.postDelayed(new RunTask(),1000L);

这将运行locupdate并每秒添加一个计数器。

class RunTask implements Runnable { 
     public void run() { 
     ++counter; 
     locupdate(0,0); 
     serviceHandler.postDelayed(this, 1000L); 
     } 
    } 

这是上面使用的locupdate函数。请注意,mlocManager是全局定义为LocationManager的。

public void locupdate(int minTime, float minDistance) { 
    mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    mlocListener = new MyLocationListener(); 
    if (mlocListener != null && mlocManager != null) { 
     mlocManager.removeUpdates(mlocListener); 
    } 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
       minTime, minDistance, mlocListener); 
} 

最后一件事。在LocationListener的onLocationChanged方法的结尾,我删除了5个位置修复后的更新:

mlocManager.removeUpdates(mlocListener);

这与requestSingleUpdate()类似,但我觉得它更灵活。希望这可以帮助!

+0

哦,还有最后一件事。为了防止运行LocationListener的两个实例,我定义了一个全局变量,它在locupdate()之前设置为true,并在onLocationChanged末尾设置为false。在运行locupdate之前,您应该确保该变量为false。您还可能需要检查计时器的实例是否已在启动时运行。如果用户点击后退按钮,然后重新打开您的应用程序,则onCreate会再次被调用... – GPSmaster 2011-04-20 05:44:31