Alarme android com data de exibição lida por JSON de DB

0 respostas
jsonandroidjava
zicky23

Boa noite.

Estou tentando fazer meu APP android mostrar apenas uma notificação na data pré cadastrada em um banco de dados que é lida via JSON.

segue como está agora:

Splash.java
boolean alarmeAtivo = (PendingIntent.getBroadcast(this, 0, new Intent(“alarme”),
PendingIntent.FLAG_NO_CREATE) == null);

if(alarmeAtivo){
            Log.i("Script", "Novo alarme");

            Intent intent = new Intent("alarme");
            PendingIntent p = PendingIntent.getBroadcast(this, 0, intent, 0);

            Calendar c = Calendar.getInstance();
            c.setTimeInMillis(System.currentTimeMillis());
            c.add(Calendar.SECOND, 5);

            AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);

            alarme.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 24 * 60 * 60 * 1000, p); //24 * 60 * 60 * 1000 - 1 dia

        } else{
            Log.i("Script", "Alarme já ativo");
        }

e aqui como resgato a data e a descrição do DB.
BroadCastReceiver.java

public class BroadCastReceiver extends BroadcastReceiver {

private SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);

private String data = 2000-01-01;

private String descricao = “”;

private URL url;

private Context c;
@Override
public void onReceive(Context context, Intent intent) {

    this.c = context;
    BackgroundTask t = new BackgroundTask();
    t.execute();

}


public void gerarNotificacao(Context context, Intent intent, CharSequence ticker, CharSequence titulo, CharSequence descricao){
    NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    PendingIntent p = PendingIntent.getActivity(context, 0, intent, 0);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setTicker(ticker);
    builder.setContentTitle(titulo);
    builder.setContentText(descricao);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
    builder.setContentIntent(p);

    Notification n = builder.build();
    n.vibrate = new long[]{150, 300, 150, 600};
    n.flags = Notification.FLAG_AUTO_CANCEL;
    nm.notify(R.drawable.ic_launcher, n);

    try{
        Uri som = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone toque = RingtoneManager.getRingtone(context, som);
        toque.play();
    }
    catch(Exception e){}
}

public class BackgroundTask extends AsyncTask<Void, Void, Mensagens> {


    @Override
    protected Mensagens doInBackground(Void... voids) {
        Mensagens m = new Mensagens();
        try {
            url = new URL("http://localhost:8080/sicom/json_alarme");
            String JSON_STRING;
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));



            StringBuilder stringBuilder = new StringBuilder();
            while ((JSON_STRING = bufferedReader.readLine()) != null){
                stringBuilder.append(JSON_STRING + "\n");
            }

            JSONArray jsonArray = new JSONArray(stringBuilder.toString());
            for (int i = 0; i < jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);

                m.setId_mensagem(jsonObject.getInt("id_alarme"));
                m.setData(jsonObject.getString("dt_alarme"));
                m.setDescricao(jsonObject.getString("descricao"));

            }

            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();

        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return m;

    }

    @Override
    protected void onPostExecute(Mensagens m) {
        if(!m.equals(null)){

            System.out.println(sdf.format(new Date()));
            System.out.println(m.getData());

            if (sdf.format(new Date()).equalsIgnoreCase(m.getData())) {
            //if (sdf.format(new Date()).equalsIgnoreCase(sdf.format(new Date()))) {
                    Log.i("Script", "-> Alarme");
                    gerarNotificacao(c, new Intent(c, Splash.class), "SICOM",
                            "Contracheque PM Santiago!", m.getDescricao());
                } else {
                    Log.i("Script", "-> Nada a mostrar.");
                }
            }

        }
    }

}

Criado 24 de julho de 2017
Respostas 0
Participantes 1