Advertisement
vergepuppeter

Event Noti

Oct 9th, 2017
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.42 KB | None | 0 0
  1. package com.seesharp.app.sample;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Calendar;
  7.  
  8. import java.util.Date;
  9. import java.util.Locale;
  10.  
  11. import android.app.DatePickerDialog;
  12. import android.app.NotificationManager;
  13. import android.app.PendingIntent;
  14. import android.app.TimePickerDialog;
  15. import android.content.Context;
  16. import android.content.Intent;
  17. import android.content.SharedPreferences;
  18. import android.content.SharedPreferences.Editor;
  19.  
  20. import android.os.Build;
  21. import android.os.Bundle;
  22. import android.preference.PreferenceManager;
  23. import android.support.annotation.RequiresApi;
  24. import android.support.v7.app.AppCompatActivity;
  25. import android.support.v7.app.NotificationCompat;
  26.  
  27. import android.text.TextUtils;
  28. import android.util.Log;
  29. import android.view.Menu;
  30. import android.view.View;
  31.  
  32. import android.widget.ArrayAdapter;
  33. import android.widget.Button;
  34. import android.widget.DatePicker;
  35. import android.widget.EditText;
  36. import android.widget.ListView;
  37. import android.widget.TextClock;
  38. import android.widget.TimePicker;
  39. import android.widget.Toast;
  40.  
  41.  
  42.  
  43. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  44.  
  45.     private static final int MY_NOTIFICATION_ID = 12345;
  46.     private static final int MY_REQUEST_CODE = 100;
  47.  
  48.     TextClock TextClockId;
  49.     ArrayList<String> items = new ArrayList<>(), items1 = new ArrayList<>();
  50.     ArrayAdapter<String> adapter, adapter1;
  51.  
  52.     ListView l, l1;
  53.     EditText et, editText2;
  54.     Button mAdd, mDelete, btn_date, btn_time;
  55.  
  56.     SharedPreferences prfs, prf1s;
  57.     public static final String MY_PREFS_NAME = "MyPrefsFile";
  58.     Editor edit, edit1;
  59.     Calendar dateTime = Calendar.getInstance();
  60.     private Calendar cCarlendar = Calendar.getInstance();
  61.     private SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy h:mm aa", Locale.ENGLISH);
  62.  
  63.     @RequiresApi(api = Build.VERSION_CODES.KITKAT)
  64.     @Override
  65.     protected void onCreate(Bundle savedInstanceState) {
  66.         super.onCreate(savedInstanceState);
  67.  
  68.         //''this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  69.  
  70.         setContentView(R.layout.activity_main);
  71.         initialize();
  72.  
  73.         prfs = PreferenceManager.getDefaultSharedPreferences(this);
  74.         prf1s = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
  75.  
  76.         edit = prfs.edit();
  77.         edit1 = prf1s.edit();
  78.  
  79.         adapter = new ArrayAdapter<String>(this,
  80.                 android.R.layout.simple_list_item_1, items);
  81.  
  82.         adapter1 = new ArrayAdapter<String>(this,
  83.                 android.R.layout.simple_list_item_1, items1);
  84.  
  85.         l.setAdapter(adapter);
  86.         l1.setAdapter(adapter1);
  87.  
  88.         mDelete.setOnClickListener(this);
  89.         mAdd.setOnClickListener(this);
  90.  
  91.         for (int i = 0; i < prfs.getInt("counter", 0); i++) {
  92.             items.add(0, prfs.getString(String.valueOf(i), "null"));
  93.         }
  94.         adapter.notifyDataSetChanged();
  95.  
  96.         for (int j = 0; j < prf1s.getInt("counter1", 0); j++) {
  97.             items1.add(0, prf1s.getString(String.valueOf(j), "null"));
  98.         }
  99.         adapter1.notifyDataSetChanged();
  100.  
  101.  
  102.         editText2.setEnabled(false);
  103.         btn_date.setOnClickListener(new View.OnClickListener() {
  104.             @Override
  105.             public void onClick(View v) {
  106.                 updateDate();
  107.             }
  108.         });
  109.  
  110.         btn_time.setOnClickListener(new View.OnClickListener() {
  111.             @Override
  112.             public void onClick(View v) {
  113.                 updateTime();
  114.             }
  115.         });
  116.  
  117.         Thread t = new Thread(){
  118.             @Override
  119.             public void run(){
  120.                 try{
  121.                     while(!isInterrupted()){
  122.                         Thread.sleep(1000);
  123.                         runOnUiThread(new Runnable(){
  124.                             @Override
  125.                             public void run(){
  126.                                 //Ambil waktu event, then tolak 15 minit. Lepas tu dapat balik date baru (date yg dah ditolak 15 minit),
  127.                                 //then compare je balik dgn waktu skrg
  128.  
  129.                                 Date curDate = new Date();
  130.                                 for(String dateString: items1){
  131.                                     try {
  132.                                         cCarlendar.setTime(format.parse(dateString));
  133.                                         cCarlendar.add(Calendar.MINUTE, -15);
  134.  
  135.                                         if(format.format(cCarlendar.getTime()).equals(format.format(curDate))){
  136.                                             //same date and time found
  137.                                             sendNotification(items.get(items1.indexOf(dateString)));
  138.                                         }
  139.  
  140.                                         Log.i("Check Date", "Event Date - 15:"+format.format(cCarlendar.getTime())+", Current Date: "+format.format(curDate));
  141.                                     } catch (ParseException e) {
  142.                                         e.printStackTrace();
  143.                                     }
  144.                                 }
  145.                             }
  146.                         });
  147.                     }
  148.                 } catch (InterruptedException e){
  149.                     e.printStackTrace();
  150.                 }
  151.             }
  152.         }; t.start();
  153.     }
  154.  
  155.     private void initialize() {
  156.         btn_date = (Button) findViewById(R.id.datepicker);
  157.         btn_time = (Button) findViewById(R.id.timepicker);
  158.         editText2 = (EditText) findViewById(R.id.editText2);
  159.         et = (EditText) findViewById(R.id.editText1);
  160.         mAdd = (Button) findViewById(R.id.button1);
  161.         mDelete = (Button) findViewById(R.id.button2);
  162.         TextClockId = (TextClock) findViewById(R.id.TextClockId);
  163.  
  164.         l = (ListView) findViewById(R.id.listView1);
  165.         l1 = (ListView) findViewById(R.id.listView2);
  166.     }
  167.  
  168.  
  169.     @Override
  170.     public void onClick(View arg0) {
  171.         // TODO Auto-generated method stub
  172.  
  173.         switch (arg0.getId()) {
  174.  
  175.             case R.id.button1:
  176.                 addItem();
  177.                 break;
  178.  
  179.             case R.id.button2:
  180.                 adapter.clear();
  181.                 edit.clear();
  182.                 edit.commit();
  183.                 // finish();
  184.                 adapter1.clear();
  185.                 edit1.clear();
  186.                 edit1.commit();
  187.                 break;
  188.  
  189.         }
  190.  
  191.     }
  192.  
  193.     private void addItem() {
  194.  
  195.         if (!TextUtils.isEmpty(et.getText().toString())) {
  196.             edit.putString(String.valueOf(items.size()), et.getText().toString());
  197.             edit.putInt("counter", adapter.getCount() + 1);
  198.             edit.commit();
  199.  
  200.             items.add(0, et.getText().toString());
  201.             adapter.notifyDataSetChanged();
  202.  
  203.             et.setText("");
  204.         } else {
  205.             Toast.makeText(getBaseContext(), "Field should not be empty!",
  206.                     Toast.LENGTH_LONG).show();
  207.         }
  208.  
  209.         if (!TextUtils.isEmpty(editText2.getText().toString())) {
  210.  
  211.             edit1.putString(String.valueOf(items1.size()), editText2.getText().toString());
  212.             edit1.putInt("counter1", adapter1.getCount() + 1);
  213.             edit1.commit();
  214.  
  215.             items1.add(0, editText2.getText().toString());
  216.             adapter1.notifyDataSetChanged();
  217.  
  218.             editText2.setText("");
  219.         } else {
  220.             Toast.makeText(getBaseContext(), "Field should not be empty!",
  221.                     Toast.LENGTH_LONG).show();
  222.         }
  223.  
  224.     }
  225.  
  226.     private void DeleteItem() {
  227.  
  228.         if (!("".equals(et.getText().toString()))) {
  229.  
  230.             //ob = et.getText().toString();
  231.             adapter.notifyDataSetChanged();
  232.  
  233.             edit.remove(String.valueOf(adapter.getCount()));
  234.             edit.putInt("counter", adapter.getCount() + 1);
  235.             edit.commit();
  236.  
  237.             et.setText("");
  238.  
  239.  
  240.         } else {
  241.  
  242.             Toast.makeText(getBaseContext(), "Field should not be empty!",
  243.                     Toast.LENGTH_LONG).show();
  244.         }
  245.  
  246.     }
  247.  
  248.     private void updateDate() {
  249.         new DatePickerDialog(this, d, dateTime.get(Calendar.YEAR), dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH)).show();
  250.     }
  251.  
  252.     private void updateTime() {
  253.         new TimePickerDialog(this, t, dateTime.get(Calendar.HOUR_OF_DAY), dateTime.get(Calendar.MINUTE), true).show();
  254.     }
  255.  
  256.     DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
  257.         @Override
  258.         public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  259.  
  260.  
  261.             dateTime.set(Calendar.YEAR, year);
  262.             dateTime.set(Calendar.MONTH, monthOfYear);
  263.             dateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
  264.             updateTextLabel();
  265.         }
  266.     };
  267.  
  268.  
  269.     TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
  270.         @Override
  271.         public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  272.             dateTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
  273.             dateTime.set(Calendar.MINUTE, minute);
  274.             dateTime.set(Calendar.SECOND, 0);
  275.             updateTextLabel();
  276.         }
  277.     };
  278.  
  279.     private void updateTextLabel() {
  280.         String mq = format.format(dateTime.getTime());
  281.         //String mq1 = format.format(mq);
  282.         editText2.setText(mq);
  283.     }
  284.  
  285.     @Override
  286.     public boolean onCreateOptionsMenu(Menu menu) {
  287.         // Inflate the menu; this adds items to the action bar if it is present.
  288.         //getMenuInflater().inflate(R.menu.main, menu);
  289.         return true;
  290.     }
  291.  
  292.  
  293.     public void sendNotification(String msg) {
  294.         Intent intent = new Intent(getApplicationContext(), MainActivity.class);
  295.         PendingIntent pIntent = PendingIntent.getActivity(this,
  296.                 MY_REQUEST_CODE, intent, 0);
  297.  
  298.         NotificationCompat.Builder mBuilder =
  299.                 (NotificationCompat.Builder) new NotificationCompat.Builder(getApplicationContext())
  300.                         .setSmallIcon(R.mipmap.ic_launcher)
  301.                         .setContentTitle("REMINDER!!")
  302.                         .setContentText(msg)
  303.                         .setAutoCancel(true)
  304.                         .setContentIntent(pIntent);
  305.  
  306.         NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
  307.         notificationManager.notify(MY_NOTIFICATION_ID, mBuilder.build());
  308.     }
  309. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement