2012-03-12 5 views
0

私はwifiネットワークで費やされた時間を節約するためにいくつかのコードを書いていました。私は時間が正しく保存されていないことを除いて、ほとんどそこにいる。カレンダーの問題、日付を保存しません

このオブジェクトはブロードキャストを受信した後、Wi-Fi APに接続されているかどうかを確認します。これは、接続の瞬間を持つDateオブジェクトを取得します。切断後、接続が中断された日付を取得します。

しかし、それはスタートを記録し、日付を停止するときは、常にも開始オブジェクトのために、現在の日付を取得しているようだ:

private Date startDate; 
private Date stopDate; 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (isOnline(context)) { 
     WifiManager wifiManager = (WifiManager) context 
       .getSystemService(Context.WIFI_SERVICE); 
     android.net.wifi.WifiInfo wifiInfo = wifiManager 
       .getConnectionInfo(); 
     Log.d("WIFI:", "IN FIRST IF, SO CONNECTED"); 
     if (wifiInfo.getSupplicantState() == (SupplicantState.COMPLETED)) { 
      Calendar c = Calendar.getInstance(); 
      this.startDate = c.getTime(); 
      this.initialConnection = true; 
     } 
    } else if (this.initialConnection) { 
     Calendar d = Calendar.getInstance(); 
     this.stopDate = d.getTime(); 
     //problem persists here 
     String s = "TIME:" + d.getTime().toString() + " started at:" 
       + startDate.toString() + "stopped at" 
       + this.stopDate.toString(); 
     Log.d("WIFI:", s); 
     this.initialConnection = false; 
    } 
} 

出力

D/WIFI: ( 684): TIME:Mon Mar 12 13:18:16 GMT+02:00 2012 started at:Mon Mar 12 13:18:16 GMT+02:00 2012stopped atMon Mar 12 13:18:16 GMT+02:00 2012 

は、現在の時刻を取得し、私のstartTimeです再びそれが参照されるとき? startTimeを保存するにはどうしたらいいですか?

答えて

0

カレンダーの使用に問題はありません。次のSSCCEは正しい動作をしています。 onReceive()のロジックに問題があるはずです。おそらく、前半が再び呼び出されてstartDateが現在の時刻に更新される可能性があります。

public class CalendarTest { 
    private Date stopDate; 
    private Date startDate; 

    public void online() { 
     Calendar c = Calendar.getInstance(); 
     this.startDate = c.getTime(); 
    } 

    public void offline() { 
     Calendar d = Calendar.getInstance(); 
     this.stopDate = d.getTime(); 
     String s = "TIME:" + d.getTime().toString() + "\nstarted at:" 
       + startDate.toString() + "\nstopped at" 
       + this.stopDate.toString(); 
     System.out.println(s); 
    } 

    public static void main(String[] args) { 
     CalendarTest test = new CalendarTest(); 
     test.online(); 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     test.offline(); 
    } 
} 

出力

TIME:Mon Mar 12 12:29:04 GMT 2012 
started at:Mon Mar 12 12:29:01 GMT 2012 
stopped atMon Mar 12 12:29:04 GMT 2012 
関連する問題