Skip to content

Instantly share code, notes, and snippets.

@Domacoski
Created January 16, 2017 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Domacoski/5f78cbbf27b461254fbd7a9031e0a7e1 to your computer and use it in GitHub Desktop.
Save Domacoski/5f78cbbf27b461254fbd7a9031e0a7e1 to your computer and use it in GitHub Desktop.
AlarmManager
package ubi.app.services;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import ubi.app.Configuracao;
/**
* Created by thiago.domacoski on 16/01/17.
*/
public class BootService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Configuracao.configurar(context);
}
}
package ubi.app;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import ubi.app.services.ReceptorAlarme;
import ubi.app.sharedpreferences.Horario;
import ubi.app.sharedpreferences.SharedPreferencesModel;
/**
* Created by thiago.domacoski on 16/01/17.
*/
public class Configuracao {
public static void configurar(final Context mContext){
if(null == mContext){
return;
}
final AlarmManager alarmManager = AlarmManager.class.cast(mContext.getSystemService(Context.ALARM_SERVICE));
final Horario horario = new SharedPreferencesModel<Horario>().load(Horario.class, mContext);
if(!horario.getAtivo()){
alarmManager.cancel(getPendingIntent(mContext));
}else {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, horario.getHora());
calendar.set(Calendar.MINUTE, horario.getMinuto());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
if(calendar.getTimeInMillis() < System.currentTimeMillis()){
calendar.set(Calendar.DAY_OF_YEAR, (calendar.get(Calendar.DAY_OF_YEAR)));
}
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss dd/MM/yy");
Toast.makeText(mContext, simpleDateFormat.format(calendar.getTimeInMillis()), Toast.LENGTH_SHORT).show();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, getPendingIntent(mContext));
}
}
private static PendingIntent getPendingIntent(final Context mContext){
final Intent intent = new Intent(mContext, ReceptorAlarme.class);
return PendingIntent.getBroadcast(mContext, 0, intent, 0);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ubi.app">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".services.BootService"
android:exported="false"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:name=".services.ReceptorAlarme" />
<activity
android:name=".LoginActivity"
android:label="@string/title_activity_login"></activity>
</application>
</manifest>
package ubi.app.services;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.support.v4.app.NotificationCompat;
import ubi.app.MainActivity;
import ubi.app.R;
/**
* Created by thiago.domacoski on 16/01/17.
*/
public class ReceptorAlarme extends BroadcastReceiver{
public static final int FLAG_NOTIFICATION = 92346;
@Override
public void onReceive(Context context, Intent intent) {
final Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(context, 99, i, PendingIntent.FLAG_UPDATE_CURRENT);
final NotificationManager mNotification = NotificationManager.class.cast(context.getSystemService(Context.NOTIFICATION_SERVICE));
final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
builder.setSmallIcon(R.drawable.ic_stat_name);
builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
builder.setContentTitle("Título da notificação");
builder.setContentText("Descrição da Notificação que aberta! ");
builder.setContentIntent(pendingIntent);
builder.setVibrate(new long[]{500, 500, 500, 500});
// NotificationCompat.WearableExtender wearableExtender = new NotificationCompat.WearableExtender()
// .setBackground(BitmapFactory.decodeResource(getResources(), R.drawable.ic_notif_trip_processed))
// .setHintHideIcon(true);
// builder.extend(wearableExtender);
mNotification.notify(FLAG_NOTIFICATION, builder.build());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment