我是一个有点缺乏经验的程序员。我正在开发一个安卓项目,该项目在某些情况下会播放特定的视频。我的客户在地图上定义了一些方形区域,我的应用程序将这些区域保存在数据库中。每个区域有四个组成部分:拉特和液化天然气的最小值和最大值。我通过GPS(和离线(跟踪用户的当前位置。我的目标是检查用户是否在定义的区域内,如果是,将播放视频,否则什么都没有。此检查过程应每秒完成一次,因此必须对其进行优化。我的问题是:什么是最好的算法?如何实现此算法以尽快在区域之间进行检查?任何帮助将不胜感激。
您可以使用这样的服务
public class YourService extends Service {
private final static String TAG = "yourtag";
public static final String YOURTIMEOUT = "com.example.timeout";
public static final String TIMER = "com.example.timer";
private Intent bi = new Intent(YOURTIMEOUT );
private CountDownTimer cdt = null;
@Override
public void onCreate() {
super.onCreate();
IntentFilter filter = new IntentFilter();
filter.addAction(YOURTIMEOUT );
registerReceiver(receiver, filter);
}
private void newCountdown() {
cdt = new CountDownTimer(1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
sendBroadcast(bi);
}
};
cdt.start();
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case YOURTIMEOUT :
newCountdown();
break;
}
}
};
@Override
public void onDestroy() {
cdt.cancel();
unregisterReceiver(receiver);
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
newCountdown();
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
显然这是每一秒,所以倒计时没有意义,但如果你决定改变每一秒的部分,那么它会派上用场。
获取您感兴趣的活动以使用 YOURTIMEOUT 标签捕获意图,并在获得时运行检查代码。确保在活动暂停时停止服务。