1

GPS 信号が失われたときに通知したいのですが、これを見つけました:
https://stackoverflow.com/a/8322160/1034806
しかし、onLocationChanged() が起動されていない場合、getTime() の 2 つの値を比較するにはどうすればよいですか?

4

1 に答える 1

1

最も簡単な方法は、遅延メッセージを送信することです。

private static final int MSG_SIGNAL_LOST = 1;
private static final int GPS_SIGNAL_LOST_TIME = 10000; // 10 seconds

private final Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case MSG_SIGNAL_LOST:
            handleGpsSignalLost();
            break;
        }
    };
};

private void handleGpsSignalLost() {
    // GPS signal lost, handle here
}

private void postDelayedGpsLostCheck() {
    mHandler.removeMessages(MSG_SIGNAL_LOST);
    mHandler.sendEmptyMessageDelayed(MSG_SIGNAL_LOST, GPS_SIGNAL_LOST_TIME);
}

そして、メソッドが呼び出されるpostDelayedGpsLostCheck()たびにメソッドを呼び出すだけonLocationChanged()です。時間を節約して比較する必要もありません。

また、電話することを忘れないでください

mHandler.removeMessages(MSG_SIGNAL_LOST);

あなたが活動から出かけるとき。

于 2012-05-16T13:25:42.317 に答える