我尝试开发一个应用程序,该应用程序在早晨从06:00:00
到10:00:00
以及从13:00:00
到19:00:00
的晚上通过短信发送近距离提醒。我使用以下代码片段来执行该任务,但它从1970年开始返回日期。因此它无法进入循环。
这个你能帮我吗。感谢。
String today = (String) android.text.format.DateFormat.format("kk:mm:ss", new java.util.Date());
SimpleDateFormat sdf = new SimpleDateFormat("kk:mm:ss");
String startMorningTime = "06:00:00";
String endMorningTime="10:00:00";
String eveningStart="15:00:00";
String eveningEnd="19:00:00";
try {
date1=sdf.parse(startMorningTime);
date2=sdf.parse(endMorningTime);
currentTime=sdf.parse(today);
date3=sdf.parse(eveningStart);
date4=sdf.parse(eveningEnd);
} catch (ParseException e) {
e.printStackTrace();
}
if ((date2.before(currentTime)&&date1.after(currentTime))||(date4.before(currentTime)&&date3.after(currentTime))) {
try {
databaseHelper = new DatabaseHelper(this);
db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select rowid _id,*from latLngTable", null);
go = cursor.moveToFirst();
while (cursor.isAfterLast() != true) {
String strLat = cursor.getString(cursor.getColumnIndex("latitude"));
String strLng = cursor.getString(cursor.getColumnIndex("longitude"));
String mobileNo = cursor.getString(cursor.getColumnIndex("Phone_NO"));
double dLat = Double.parseDouble(strLat);
double dLng = Double.parseDouble(strLng);
float radius = 150;
LocationManager locationManager2 = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager2.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
String proximitys = "com.realtech.latlngrecorder" + n;
Intent i = new Intent(proximitys);
i.putExtra("phone", mobileNo);
sendBroadcast(i);
PendingIntent pi = PendingIntent.getBroadcast(this, n, i, PendingIntent.FLAG_CANCEL_CURRENT);
locationManager2.addProximityAlert(dLat, dLng, radius, -1, pi);
IntentFilter filter = new IntentFilter(proximitys);
registerReceiver(new ProximityIntentReceiver(), filter);
Log.w("Alert Added", "Alert Added to All Locations");
Toast.makeText(MainPage.this, "Proximity Alert Added", Toast.LENGTH_SHORT).show();
n++;
cursor.moveToNext();
}
} catch (SQLiteException e) {
e.printStackTrace();
Toast.makeText(MainPage.this, "Failed to add Proximity Alert", Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(MainPage.this,"Not Right Time",Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:2)
以下代码应该有所帮助。
private void setTime(Calendar calendar, int hour) {
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
}
private void test() {
Calendar morningStart = Calendar.getInstance();
Calendar morningEnd = Calendar.getInstance();
setTime(morningStart, 8);
setTime(morningEnd, 10);
Calendar eveningStart = Calendar.getInstance();
Calendar eveningEnd = Calendar.getInstance();
setTime(eveningStart, 15);
setTime(eveningEnd, 19);
Calendar currentTime = Calendar.getInstance();
if (currentTime.after(morningStart) && currentTime.before(morningEnd)
|| (currentTime.after(eveningStart) && currentTime.before(eveningEnd))) {
//something
}
}