· 9 years ago · Jan 10, 2017, 03:56 PM
1private void setAlarm(Uri passuri) throws ParseException {
2
3 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault());
4 java.util.Calendar cal = java.util.Calendar.getInstance();
5 cal.setTime(sdf.parse(editTextFecha.getText().toString()));
6 Intent intent = new Intent(getBaseContext(), pruebaintento.dos.notif.AlarmReceiver.class);
7 //los extras
8 intent.putExtra("titulo", editTextNombre.getText().toString());
9 PendingIntent pendingIntent = PendingIntent.getBroadcast(
10 getBaseContext(),
11 RQS_1,
12 intent,
13 PendingIntent.FLAG_CANCEL_CURRENT);
14
15 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
16 alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
17
18}
19
20public class DatabaseHandler extends SQLiteOpenHelper{
21 // Ruta por defecto de las bases de datos en el sistema Android.
22 private static String RUTA_BASE_DATOS = "/data/data/pruebaintento.dos/databases/";
23
24 // Nombre de la Base de Datos.
25 private static String NOMBRE_BASE_DATOS = "BDPRUEBA_INFO";
26
27 // Version de la Base de Datos.
28 private static final int VERSION_BASE_DATOS = 1;
29
30 // Objeto Base de Datos.
31 private SQLiteDatabase base_datos;
32
33 // Objeto Contexto.
34 private Context contexto;
35
36 // Constante privada
37 private String SENTENCIA_SQL_CREAR_BASE_DATOS_PERSONAS = "CREATE TABLE if not exists personas (_id INTEGER PRIMARY KEY autoincrement, " +
38 "nombre TEXT, fecha TEXT, zodiaco TEXT, ruta_imagen TEXT)";
39
40 /**
41 * Constructor
42 * Toma referencia hacia el contexto de la aplicación que lo invoca para poder acceder a los 'assets' y
43 * 'resources' de la aplicación.
44 * Crea un objeto DBOpenHelper que nos permitirá controlar la apertura de la base de datos.
45 * @param context
46 */
47 public DatabaseHandler(Context context) {
48 super(context, NOMBRE_BASE_DATOS, null, VERSION_BASE_DATOS);
49 this.contexto = context;
50 }
51
52 @Override
53 public void onCreate(SQLiteDatabase db) {
54 // Se ejecuta la sentencia SQL de creación de la tabla personas.
55 db.execSQL(SENTENCIA_SQL_CREAR_BASE_DATOS_PERSONAS);
56 }
57
58 @Override
59 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
60 // Se elimina la versión anterior de la tabla Personas.
61 db.execSQL("DROP TABLE IF EXISTS Personas");
62
63 // Se crea la nueva versión de la tabla personas.
64 db.execSQL(SENTENCIA_SQL_CREAR_BASE_DATOS_PERSONAS);
65 }
66
67 /**
68 * Metodo publico para insertar una nueva persona.
69 */
70 public void insertarPersona(Persona persona){
71 ContentValues valores = new ContentValues();
72 valores.put("nombre", persona.getNombre());
73 valores.put("fecha", persona.getFecha());
74 valores.put("zodiaco", persona.getZodiaco());
75 valores.put("ruta_imagen", persona.getRutaImagen());
76 this.getWritableDatabase().insert("Personas", null, valores);
77 }
78
79 /**
80 * Metodo publico para actualizar una persona.
81 */
82 public void actualizarRegistros(int id, String nombre, String fecha, String zodiaco, String ruta_imagen){
83 ContentValues actualizarDatos = new ContentValues();
84 actualizarDatos.put("nombre", nombre);
85 actualizarDatos.put("fecha", fecha);
86 actualizarDatos.put("zodiaco", zodiaco);
87 actualizarDatos.put("ruta_imagen", ruta_imagen);
88 String where = "_id=?";
89 String[] whereArgs = new String[] {String.valueOf(id)};
90
91 try{
92 this.getReadableDatabase().update("Personas", actualizarDatos, where, whereArgs);
93 }
94 catch (Exception e){
95 String error = e.getMessage().toString();
96 }
97 }
98
99 /**
100 * Metodo publico que retorna una persona especifica.
101 * @param id
102 * @return
103 */
104 public Persona getPersona(int p_id) {
105 String[] columnas = new String[]{"_id", "nombre", "fecha", "zodiaco", "ruta_imagen"};
106 Cursor cursor = this.getReadableDatabase().query("Personas", columnas, "_id" + "= " + p_id, null, null, null, null);
107
108 if (cursor != null){
109 cursor.moveToFirst();
110 }
111
112 Persona persona = new Persona(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3),
113 cursor.getString(4));
114
115 // Retorna la persona especifica.
116 return persona;
117 }
118
119 /**
120 * Metodo publico que cierra la base de datos.
121 */
122 public void cerrar(){
123 this.close();
124 }
125
126 /**
127 * Metodo publico que devuelve todas las personas.
128 * @return
129 */
130 public Cursor obtenerTodasPersonas(){
131 String[] columnas = new String[]{"_id", "nombre", "fecha", "zodiaco", "ruta_imagen"};
132 Cursor cursor = this.getReadableDatabase().query("Personas", columnas, null, null, null, null, null);
133
134 if(cursor != null) {
135 cursor.moveToFirst();
136 }
137 return cursor;
138 }
139
140
141 /**
142 * Metodo publico que elimina una persona especifica.
143 * @param rowId
144 * @return
145 */
146 public boolean eliminaPersona(long id){
147 return this.getWritableDatabase().delete("Personas", "_id" + "=" + id, null) > 0;
148 }
149}
150
151public class AlarmReceiver extends BroadcastReceiver {
152
153 @Override
154 public void onReceive(Context context, Intent intent) {
155
156
157 // Notificación
158
159 NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
160
161 Intent repeating_intent = new Intent(context,MainActivity.class);
162 repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
163
164
165 PendingIntent pendingIntent = PendingIntent.getActivity(context,id,repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT);
166
167
168 NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
169 .setContentIntent(pendingIntent)
170 .setSmallIcon(R.drawable.ic_launcher)
171 .setContentTitle(intent.getStringExtra("titulo"))
172 .setContentText("¡Hoy es su cumpleaños!")
173 .setAutoCancel(true);
174 builder.setVibrate(new long[] { 300, 300 });
175 builder.setLights(Color.BLUE, 3000, 3000);
176 builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
177 notificationManager.notify(id,builder.build());
178
179 // Fin Notificación
180
181 }
182}