package com.qmusic.notification;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import com.qmusic.MyApplication;
import com.qmusic.activities.DialogActivity;
import com.qmusic.common.BConstants;
import com.qmusic.uitls.BLog;
import com.qmusic.uitls.BUtilities;
public class ScheduledReceiver extends BroadcastReceiver {
public static final String TAG = "ScheduledReceiver";
static final int INTERVAL = 60 * 60 * 1000;
static final int DELAY = 30 * 1000;
public static final String SCHEDULE_TYPE = "schedule_type";
public static final int SCHEDULE_ALARM = 1;
public static final int SCHEDULE_DISCOVER = 2;
public static final int SCHEDULE_RATING = 3;
public static final int SCHEDULE_ACCOUNT = 4;
public static final void init(Context ctx) {
final long triggerAtMillis = System.currentTimeMillis() + INTERVAL;
final AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
// Alarm
if (enableAlarm()) {
BAlarmHelper.init(ctx);
}
// Discover
if (enableDiscover()) {
Intent intentDiscover = new Intent(ctx, ScheduledReceiver.class);
intentDiscover.putExtra(ScheduledReceiver.SCHEDULE_TYPE, ScheduledReceiver.SCHEDULE_DISCOVER);
PendingIntent piDiscover = PendingIntent.getBroadcast(ctx, ScheduledReceiver.SCHEDULE_DISCOVER,
intentDiscover, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, INTERVAL, piDiscover);
}
if (showAppRating()) {
Intent intentRating = new Intent(ctx, ScheduledReceiver.class);
intentRating = intentRating.putExtra(ScheduledReceiver.SCHEDULE_TYPE, ScheduledReceiver.SCHEDULE_RATING);
PendingIntent piRating = PendingIntent.getBroadcast(ctx, SCHEDULE_RATING, intentRating,
PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + DELAY, piRating);
} else if (showAccount()) {
Intent intentExpired = new Intent(ctx, ScheduledReceiver.class);
intentExpired = intentExpired.putExtra(ScheduledReceiver.SCHEDULE_TYPE, ScheduledReceiver.SCHEDULE_ACCOUNT);
PendingIntent piExpired = PendingIntent.getBroadcast(ctx, SCHEDULE_ACCOUNT, intentExpired,
PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + DELAY, piExpired);
}
}
public static final void shutdown(Context ctx) {
if (enableAlarm()) {
BAlarmHelper.shutdown(ctx);
}
// Discover
final AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
Intent intentDiscover = new Intent(ctx, ScheduledReceiver.class);
intentDiscover.putExtra(ScheduledReceiver.SCHEDULE_TYPE, ScheduledReceiver.SCHEDULE_DISCOVER);
PendingIntent piDiscover = PendingIntent.getBroadcast(ctx, ScheduledReceiver.SCHEDULE_DISCOVER, intentDiscover,
PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(piDiscover);
}
@Override
public void onReceive(Context context, Intent intent) {
int type = intent.getIntExtra(SCHEDULE_TYPE, 0);
switch (type) {
case SCHEDULE_ALARM: {
BLog.i(TAG, "SCHEDULE_ALARM");
long id = intent.getLongExtra("id", 0);
BAlarmHelper.doAlarm(context, id);
break;
}
case SCHEDULE_DISCOVER: {
BLog.i(TAG, "SCHEDULE_DISCOVER");
// BAlarm alarm = new BAlarm();
// Calendar cal = Calendar.getInstance();
// alarm.title = cal.getTime().toString();
// alarm.subTitle = cal.getTime().toString();
// alarm.time = cal.getTimeInMillis() + DELAY;
// BAlarmHelper.schedule(context, alarm);
break;
}
case SCHEDULE_RATING: {
BLog.i(TAG, "SCHEDULE_RATING");
if (MyApplication.foreground() != null) {
Bundle extras = new Bundle();
extras.putInt(SCHEDULE_TYPE, SCHEDULE_RATING);
extras.putString("title", "Feedback");
extras.putString("message", "Do you like our app?");
extras.putString("ok", "I like it");
extras.putString("cancel", "Need to improve");
DialogActivity.show(context, extras);
}
break;
}
case SCHEDULE_ACCOUNT: {
BLog.i(TAG, "SCHEDULE_ACCOUNT");
if (MyApplication.foreground() != null) {
Bundle extras = new Bundle();
extras.putInt(SCHEDULE_TYPE, SCHEDULE_ACCOUNT);
DialogActivity.show(context, extras);
}
break;
}
default: {
break;
}
}
}
private static final boolean enableAlarm() {
return false;
}
private static final boolean enableDiscover() {
return true;
}
private static final boolean showAppRating() {
boolean result = false;
String ratingTime = BUtilities.getPref(BConstants.PRE_KEY_SHOW_RATING + BUtilities.getAppVersion());
if (TextUtils.isEmpty(ratingTime)) {
String countStr = BUtilities.getPref(BConstants.PRE_KEY_RUN_COUNT);
if (TextUtils.isDigitsOnly(countStr)) {
int count = Integer.parseInt(countStr);
if (count > 10) {
result = true;
}
}
} else {
long lastRatingTime = Long.parseLong(ratingTime);
if (System.currentTimeMillis() - lastRatingTime > 30L * 24 * 60 * 60 * 1000) {
result = true;
}
}
if (result) {
BUtilities.setPref(BConstants.PRE_KEY_SHOW_RATING + BUtilities.getAppVersion(),
String.valueOf(System.currentTimeMillis()));
}
return result;
}
private static final boolean showAccount() {
return false;
}
}