您的位置:首页 > 移动开发 > Android开发

[Google IO 2010] Android入门指导

2013-04-23 10:26 260 查看

使用Alarm

Alarm可以用来在未来某个时刻发出一个广播,从而唤醒应用程序。用这种机制来替代一个长期运行的Service。

String alarm = Context.ALARM_SERVICE;
AlarmManager am;
am = (AlarmManager) getSystemService(alarm);

Intent intent = new Intent("REFRESH_THIS");
PendingIntent op = PendingIntent.getBroadcast(this, 0, intent, 0);

int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
long interval = AlarmManager.INTERVAL_FIFTEEN_MINUTES;
long triggerTime = SystemClock.elapsedRealtime() + interval;

am.setRepeating(type, triggerTime, interval, op);


也可是使用非精确型Alarm,即拥有Alarm的全部好处,同时消耗更少的电量

am.setIntexactRepeating(type, tirggerTime, interval, op);


LBS服务

String serviceName = Context.LOCATION_SERVICE;
LocationManager lm = (LocationManager) getSystemService(serviceName);

LocationListener listener = new LocationListener() {
public void onLocationChanged(Location location) {
// TODO
}

...
};

lm.requestLocationUpdate("gps", 0, 0, 1); // 第二,三参数用来指定最小更新频率和距离


需要考虑的问题:

更新频率

处理GPS或者Wifi LBS关闭的情况

定位精度

对电池的消耗

处理地址跳跃

使用Criteria来选择定位器

Criteria可以指明对定位器的需求和偏好设置,可以只寻找活跃的定位器。

Criteria criteria = new Criteria();
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(false);

String provider = lm.getBestProvider(criteria, true);

lm.requestLocationUpdate(provider, freq, dist, l);


可以使用多个监听器,每个对应于不同的精度、频率或者距离。根据变化相应地增加和删除监听器。

private LocationListener lbounce = new LocationListener() {

public void onLocationChanged(Location location) {
runLocationUpdate();
if (location.getAccuracy() < 10) {
lm.removeUpdates(lbounce);
lm.removeUpdates(lcoarse);
}
}
...

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: