如何优化定义位置之间的检查过程



我是一个有点缺乏经验的程序员。我正在开发一个安卓项目,该项目在某些情况下会播放特定的视频。我的客户在地图上定义了一些方形区域,我的应用程序将这些区域保存在数据库中。每个区域有四个组成部分:拉特和液化天然气的最小值和最大值。我通过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 标签捕获意图,并在获得时运行检查代码。确保在活动暂停时停止服务。

最新更新