package com.jqmobile.core.android.time.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimerTask;
import android.content.Context;
import android.util.Log;
import com.jqmobile.core.android.time.IGetTime;
class GetTime implements IGetTime {
/**
* @param args
*/
public GetTime(Context context) {
// TODO Auto-generated constructor stub
f = new Function(context);
t1 = new Timer1(f);
t30 = new Timer30(f);
}
private Function f;
private Timer1 t1;
private Timer30 t30;
private final List<TimerTask> list = new ArrayList<TimerTask>();
public void addListner(TimerTask task) {
list.add(task);
}
@Override
public long getTime() throws Exception {
int i = 0;
long time;
while (f.lockFalg) {
if (3 == i++)
throw new Exception("���糬ʱ������ȡ����ʱ��");
Thread.sleep(1000);
}
try {
f.lockFalg = true;
if (f.getTime() == 0 || f.getLocalityTime() == 0) {
time = f.syncTime();
} else {
long timeDifference;
timeDifference = new Date().getTime() - f.getLocalityTime();
if (timeDifference < 3600000 && timeDifference > -3600000) {
time = timeDifference + f.getTime();
Log.d("debug", "�ñ���ʱ��");
} else {
time = f.syncTime();
}
}
} catch (Exception e) {
throw new Exception("���糬ʱ������ȡ����ʱ��");
} finally {
f.lockFalg = false;
}
return time;
}
}