0

根据Location Strategies,GPS是最准确的,但很快消耗电池电量。该文件建议电池电量应考虑在内,但从该文件来看,没有使用不良的例子。
有人可以提供这样一个例子。
我在问,因为我在考虑一个用例,如 例如如果一天捕获16次用户位置(间隔30分钟)。那会是一个糟糕的用例模型吗?GPS消耗多少电量?

+0

问题是SO的主题。无论如何,最近3 - 4年由各大品牌生产的中​​等水平的智能手机能够跟踪持续2小时的跑步时间,距离5/10米远,如果显示器关闭,它们的耗电量不会超过电池的10%。因此,您的使用案例似乎接近于0影响 – perissf

+0

@perissf:我更新了OP。这是一个更具体的问题吗? – Jim

回答

1

编辑

这是建立一个超时功能位置请求的一个非常基本的例子。

public class MyLocationManager implements LocationListener { 

    private static final int LOCATION_UPDATE = 1; 

    private LocationManager mLocationManager; 
    private Handler mHandler; 

    public MyLocationManager(Context context) { 
     mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     mHandler = new Handler(new Handler.Callback() { 
      @Override 
      public boolean handleMessage(Message msg) { 
       switch (msg.what) { 
        case LOCATION_UPDATE: 
         stopLocationUpdates(); 
         return true; 
        default: 
         return false; 
       } 
      } 
     }); 
    } 

    public void stopLocationUpdates() { 
     mLocationManager.removeUpdates(this); 
     mHandler.removeMessages(LOCATION_UPDATE); 
    } 

    public void requestLocationUpdates(long timeOut) { 
     mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
     mHandler.sendEmptyMessageDelayed(LOCATION_UPDATE, timeOut); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     stopLocationUpdates(); 
     //YOUR CODE HERE 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 

    } 
} 

要回答你的文章的标题:它变化的基础设备。

要了解更多细节,这取决于您如何设置您的请求。在你的情况下,你说你需要30分钟的时间间隔得到16分,如果你在一秒钟的时间内收到这些信息,这些信息不会对电力产生太大的影响。但是,您从未指定过要等待地点到达的时间或您要求的地点的准确性。所以从理论上讲,如果您在地下室寻找10米精度点,您可以保持GPS模块无限期运行。

我的建议

找出一个位置点的最大精度,你需要之前,它是完全无法使用,并且已经制定了坚实的超时功能。 GPS本身并不会消耗电池,它是接收位置和正在接通GPS模块的设备处于唤醒状态的组合,可以延长电池的使用寿命。保持设备总共约2分钟以获得16分(约8秒超时)应该对电池的影响可以忽略不计。

+0

我对3米以内的精度感兴趣(没有地下室或任何类似的问题)。暂停是什么意思?我在LocationManager API中看到了最短的时间间隔,这是我感兴趣的每30分钟的时间,但不是超时。你能否给出或指出你所描述的方法的一些例子? – Jim

+0

这种准确性是可能的,但我只能期望在最好的情况下(外面,没有建筑物)。关于超时,如果调用'requestLocationUpdates()',除非明确调用'removeUpdates()',否则LocationManager将持续轮询位置直到它接收到一个位置,如果您位于GPS剥夺区域,则位置可能不确定。即使您将minTime设置为30分钟,除非您立即得到一个分数,否则GPS模块将保持打开状态直到您收到分数。 –

+0

有没有在线的好例子,我可以用这个方法做参考? – Jim