package com.gnod.geekr.service;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.SystemClock;
import com.gnod.geekr.app.AppConfig;
public class PollingManager {
public static boolean isPolling(AppConfig config) {
SharedPreferences pref = config.getSharedPreferences();
return pref.getBoolean("Polling_Checked", false);
}
public static void setPolling(AppConfig config, boolean checked) {
SharedPreferences pref = config.getSharedPreferences();
Editor edit = pref.edit();
edit.putBoolean("Polling_Checked", checked);
edit.commit();
Intent intent = new Intent(config, PollingService.class);
PendingIntent operation = PendingIntent.getService(config, 0, intent, 0);
AlarmManager manager = (AlarmManager) config.getSystemService(Context.ALARM_SERVICE);
manager.cancel(operation);
if(checked) {
long interval = getPollingInterval(config);
long triggerAtTime = SystemClock.elapsedRealtime() + interval;
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
triggerAtTime, interval, operation);
}
}
public static long getPollingInterval(AppConfig config) {
SharedPreferences pref = config.getSharedPreferences();
return pref.getLong("Polling_Interval", 3 * 60 * 1000);
}
public static String formateInterval(AppConfig config) {
long interval = getPollingInterval(config);
String format = "";
if(interval < 60000) {
format = (interval / 1000) + "秒";
} else if(interval < 3600000) {
format = (interval / 60000) + "分钟";
} else {
format = (interval / 3600000) + "小时";
}
return format;
}
public static void setPollingInterval(AppConfig config, long interval) {
SharedPreferences pref = config.getSharedPreferences();
Editor edit = pref.edit();
edit.putLong("Polling_Interval", interval);
edit.commit();
}
public static void checkPolling(AppConfig config) {
if(isPolling(config)) {
Intent intent = new Intent(config, PollingService.class);
PendingIntent operation = PendingIntent.getService(config, 0, intent, 0);
AlarmManager manager = (AlarmManager) config.getSystemService(Context.ALARM_SERVICE);
long interval = getPollingInterval(config);
long triggerAtTime = SystemClock.elapsedRealtime() + interval;
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
triggerAtTime, interval, operation);
}
}
/**
* 使用低4位标志提醒类型, 从最低位开始分别表示:
* 1 评论
* 2@我的微博
* 3@我的评论
* 4新粉丝
*/
public static int getPollingType(AppConfig config) {
SharedPreferences pref = config.getSharedPreferences();
return pref.getInt("Polling_Type", 15);
}
public static boolean isPollingNewComment(AppConfig config) {
return getPrefBoolean(config, "Polling_Comment", true);
}
public static void setPollingNewComment(AppConfig config, boolean checked) {
setPrefBoolean(config, "Polling_Comment", checked);
}
public static boolean isPollingAtMe(AppConfig config) {
return getPrefBoolean(config, "Polling_AtMe", true);
}
public static void setPollingAtMe(AppConfig config, boolean checked) {
setPrefBoolean(config, "Polling_AtMe", checked);
}
public static boolean isPollingCommentAtMe(AppConfig config) {
return getPrefBoolean(config, "Polling_CommentAtMe", true);
}
public static void setPollingCommentAtMe(AppConfig config, boolean checked) {
setPrefBoolean(config, "Polling_CommentAtMe", checked);
}
public static boolean isPollingNewFans(AppConfig config) {
return getPrefBoolean(config, "Polling_NewFollow", true);
}
public static void setPollingNewFans(AppConfig config, boolean checked) {
setPrefBoolean(config, "Polling_NewFollow", checked);
}
public static boolean isPollingAvoidNightDistrubed(AppConfig config) {
return getPrefBoolean(config, "Polling_AvoidNight", true);
}
public static void setPollingAvoidNightDistrubed(AppConfig config, boolean checked) {
setPrefBoolean(config, "Polling_AvoidNight", checked);
}
public static String getPollingSpecialPersonName(AppConfig config) {
SharedPreferences pref = config.getSharedPreferences();
return pref.getString("Polling_SpecialPersonName", "");
}
public static void setPollingSpecialPerson(AppConfig config, String userName) {
SharedPreferences pref = config.getSharedPreferences();
Editor editor = pref.edit();
editor.putString("Polling_SpecialPersonName", userName);
editor.commit();
}
private static boolean getPrefBoolean(AppConfig config, String key, boolean defValue) {
SharedPreferences pref = config.getSharedPreferences();
return pref.getBoolean(key, defValue);
}
private static void setPrefBoolean(AppConfig config, String key, boolean checked) {
SharedPreferences pref = config.getSharedPreferences();
Editor editor = pref.edit();
editor.putBoolean(key, checked);
editor.commit();
}
private static void clearNotification(AppConfig config, int id) {
NotificationManager manager = (NotificationManager)config.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(id);
}
}