-
Notifications
You must be signed in to change notification settings - Fork 0
/
ServicioTimer.java
111 lines (89 loc) · 3.35 KB
/
ServicioTimer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package es.kya.test;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
/**
* Created by kingcreek on 26/8/17.
*/
import android.annotation.SuppressLint;
import android.os.CountDownTimer;
import java.util.concurrent.TimeUnit;
public class ServicioTimer extends Service {
private final IBinder servicioBinder = new RunServiceBinder();
public class RunServiceBinder extends Binder {
ServicioTimer getService() {
return ServicioTimer.this;
}
}
boolean estaEjecutandose = false;
String FORMAT = "%02d:%02d:%02d";
private static String TAG = "Servicio";
public static final String PAQETE = "com.example.ash.carritosbeta1"; //ejemplo com.proyecto.MainActivity
Intent bi = new Intent(PAQETE);
CountDownTimer cdt = null;
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "Comienza el timer...");
estaEjecutandose = true;
cdt = new CountDownTimer(9000, 1000) {
public void onTick(long millisUntilFinished) {
@SuppressLint("DefaultLocale") String tiempo = ""+String.format(FORMAT,
TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)));
//con esto se envia el tiempo
bi.putExtra("Tiempo", tiempo);
sendBroadcast(bi);
}
public void onFinish() {
//se envia el tiempo finalizado
estaEjecutandose = false;
bi.putExtra("Fin", "Tiempo terminado!");
sendBroadcast(bi);
stopSelf();
}
}.start();
}
@Override
public IBinder onBind(Intent intent) {
return servicioBinder;
}
public boolean estaEjecutandose() {
return estaEjecutandose;
}
@Override
public void onDestroy() {
Log.e(TAG, "Timer cancelado");
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
public void background() {
stopForeground(true);
}
public void foreground() {
startForeground(1, createNotification());
}
private Notification createNotification() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setContentTitle("Cuenta atras")
.setContentText("Pulsa para regresar a la cuenta")
.setSmallIcon(R.mipmap.ic_launcher);
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(this, 0, resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(resultPendingIntent);
return builder.build();
}
}