package com.hannesdorfmann.mosby3.sample.mail.model.mail.service; import android.app.IntentService; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.graphics.BitmapFactory; import android.support.v4.app.NotificationCompat; import com.hannesdorfmann.mosby3.sample.mail.IntentStarter; import com.hannesdorfmann.mosby3.sample.mail.MailApplication; import com.hannesdorfmann.mosby3.sample.mail.R; import com.hannesdorfmann.mosby3.sample.mail.dagger.NavigationModule; import com.hannesdorfmann.mosby3.sample.mail.model.event.MailReceivedEvent; import com.hannesdorfmann.mosby3.sample.mail.model.mail.Label; import com.hannesdorfmann.mosby3.sample.mail.model.mail.Mail; import com.hannesdorfmann.mosby3.sample.mail.model.mail.MailProvider; import de.greenrobot.event.EventBus; import javax.inject.Inject; /** * Simulates that a gcm push notification * * @author Hannes Dorfmann */ public class GcmFakeIntentService extends IntentService { public static final String KEY_MAIL = " com.hannesdorfmann.mosby.sample.mail.model.mail.service.FakeGcm.MAIL"; @Inject MailProvider mailProvider; @Inject EventBus eventBus; @Inject IntentStarter intentStarter; public GcmFakeIntentService() { super("GcmFakeIntentService"); DaggerServiceComponent.builder() .mailAppComponent(MailApplication.getMailComponents()) .navigationModule(new NavigationModule()) .build() .inject(this); } @Override protected void onHandleIntent(Intent intent) { Mail mail = intent.getParcelableExtra(KEY_MAIL); // simulate network / receiving delay try { Thread.sleep(3000); } catch (Exception e) { } mail.label(Label.INBOX); mailProvider.addMail(mail).subscribe(); eventBus.post(new MailReceivedEvent(mail)); NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()); Intent startIntent = intentStarter.getShowMailInNewActivityIntent(getApplicationContext(), mail); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, startIntent, 0); builder.setContentIntent(pendingIntent); builder.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(), mail.getSender().getImageRes())); builder.setSmallIcon(R.mipmap.ic_launcher) .setLights(getResources().getColor(R.color.primary), 1800, 3500) .setAutoCancel(true) .setContentTitle(mail.getSubject()) .setContentText(mail.getText()) .setWhen(mail.getDate().getTime()) .setVibrate(new long[] { 1000, 1000 }); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(mail.getId(), builder.build()); } }