Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.63 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.troy.timepickerdialog">
  4.  
  5. <application
  6. android:allowBackup="true"
  7. android:icon="@mipmap/ic_launcher"
  8. android:label="@string/app_name"
  9. android:roundIcon="@mipmap/ic_launcher_round"
  10. android:supportsRtl="true"
  11. android:theme="@style/AppTheme">
  12. <activity android:name=".MainActivity">
  13. <intent-filter>
  14. <action android:name="android.intent.action.MAIN" />
  15.  
  16. <category android:name="android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. </activity>
  19. <receiver android:name=".MyBroadcastReceiver"></receiver>
  20. <service
  21. android:name=".RingtonePlayingService"
  22. android:enabled="true">
  23. </service>
  24. </application>
  25.  
  26. package com.troy.timepickerdialog;
  27.  
  28. import android.app.AlarmManager;
  29. import android.app.DatePickerDialog;
  30. import android.app.Dialog;
  31. import android.app.PendingIntent;
  32. import android.content.Intent;
  33. import android.support.v7.app.AppCompatActivity;
  34. import android.os.Bundle;
  35. import android.util.Log;
  36. import android.view.View;
  37. import android.widget.Button;
  38. import android.widget.DatePicker;
  39. import android.widget.TextView;
  40. import android.widget.TimePicker;
  41. import android.widget.Toast;
  42. import java.util.Calendar;
  43. import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
  44.  
  45.  
  46. public class MainActivity extends AppCompatActivity {
  47.  
  48. public static final int REQUEST_CODE = 0;
  49. private TimePicker theTimePicker;
  50. private AlarmManager alarmManager;
  51. private PendingIntent pendingIntent;
  52. private Button buttonOn, btnDate, buttonOff;
  53. private int yearX, monthX, dayX, hourX, minX;
  54. private static final int DIALOG_ID = 0;
  55. @Override
  56. protected void onCreate(Bundle savedInstanceState) {
  57.  
  58. super.onCreate(savedInstanceState);
  59. setContentView(R.layout.activity_main);
  60.  
  61. Calendar cal = Calendar.getInstance();
  62. yearX = cal.get(Calendar.YEAR);
  63. monthX = cal.get(Calendar.MONTH);
  64. dayX = cal.get(Calendar.DAY_OF_MONTH);
  65.  
  66. theTimePicker = findViewById(R.id.timePicker);
  67. theTimePicker.setIs24HourView(false);
  68.  
  69. buttonOn = findViewById(R.id.on);
  70. buttonOff = findViewById(R.id.off);
  71.  
  72. showDatePickerDialog();
  73.  
  74. alarmManager = (AlarmManager) getSystemService(this.ALARM_SERVICE);
  75. final Intent intent = new Intent(this, MyBroadcastReceiver.class);
  76.  
  77. buttonOn.setOnClickListener(new View.OnClickListener() {
  78. @Override
  79. public void onClick(View v) {
  80. hourX = theTimePicker.getCurrentHour();
  81. minX = theTimePicker.getCurrentMinute();
  82.  
  83.  
  84. Calendar dateAndTime = Calendar.getInstance();
  85. dateAndTime.setTimeInMillis(System.currentTimeMillis());
  86. dateAndTime.clear();
  87. dateAndTime.set(yearX, monthX, dayX, hourX, minX, 0);
  88.  
  89. if(dateAndTime.before(Calendar.getInstance())) {
  90. dateAndTime.add(Calendar.DATE, 1);
  91. }
  92.  
  93. int hour = hourX;
  94. String ampm = "";
  95. if(hour < 12) ampm = "AM";
  96. else ampm = "PM";
  97.  
  98. if(hour >= 13 && hour <= 23) {
  99. hour -= 12;
  100. }
  101. else if(hour == 0) {
  102. hour = 12;
  103. }
  104. String toastDate = dayX + "/" + (monthX + 1) + "/" + yearX;
  105. Toast.makeText(getApplicationContext(), "Alarm Set To Date: " + toastDate + " & Time: " + hour + " : " + minX + ampm, Toast.LENGTH_SHORT).show();
  106.  
  107. intent.putExtra("extra", "alarmOn");
  108. pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), REQUEST_CODE, intent, FLAG_UPDATE_CURRENT);
  109.  
  110. alarmManager.set(AlarmManager.RTC_WAKEUP, dateAndTime.getTimeInMillis(), pendingIntent);
  111. }
  112. });
  113.  
  114. buttonOff.setOnClickListener(new View.OnClickListener() {
  115. @Override
  116. public void onClick(View v) {
  117. if(RingtonePlayingService.isRunning == true) {
  118. RingtonePlayingService.mediaPlayer.stop();
  119. Toast.makeText(getApplicationContext(), "Alarm is off", Toast.LENGTH_SHORT).show();
  120. }
  121. else {
  122. Toast.makeText(getApplicationContext(), "Alarm if already off", Toast.LENGTH_SHORT).show();
  123. //intent.putExtra("extra", "alarmOff");
  124. //alarmManager.cancel(pendingIntent);
  125. //sendBroadcast(intent);
  126. }
  127.  
  128. }
  129. });
  130.  
  131. }
  132.  
  133.  
  134.  
  135.  
  136. public void showDatePickerDialog() {
  137. btnDate = findViewById(R.id.date);
  138. btnDate.setOnClickListener(new View.OnClickListener() {
  139. @Override
  140. public void onClick(View v) {
  141. showDialog(DIALOG_ID);
  142. }
  143. });
  144. }
  145.  
  146. private DatePickerDialog.OnDateSetListener dPickerListener = new DatePickerDialog.OnDateSetListener() {
  147. @Override
  148. public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
  149.  
  150. yearX = year;
  151. monthX = month;
  152. dayX = dayOfMonth;
  153.  
  154. }
  155. };
  156.  
  157. @Override
  158. protected Dialog onCreateDialog(int id) {
  159. if(id == DIALOG_ID) {
  160. DatePickerDialog datePickerDialog = new DatePickerDialog(this, dPickerListener, yearX, monthX, dayX);
  161. datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
  162. return datePickerDialog;
  163. //return new DatePickerDialog(this, dPickerListener, yearX, monthX, dayX);
  164. }
  165. return null;
  166. }
  167. }
  168.  
  169. package com.troy.timepickerdialog;
  170.  
  171. import android.app.Notification;
  172. import android.app.NotificationManager;
  173. import android.content.BroadcastReceiver;
  174. import android.content.Context;
  175. import android.content.Intent;
  176. import android.media.MediaPlayer;
  177. import android.support.v4.app.NotificationCompat;
  178. import android.widget.Toast;
  179.  
  180. /**
  181. * Created by royta on 04-Dec-18.
  182. */
  183.  
  184. public class MyBroadcastReceiver extends BroadcastReceiver {
  185.  
  186. @Override
  187. public void onReceive(Context context, Intent intent) {
  188.  
  189. Intent service_intent = new Intent(context, RingtonePlayingService.class);
  190. String fetchExtra = intent.getExtras().getString("extra");
  191.  
  192.  
  193. if(fetchExtra.equals("alarmOn")) {
  194. Toast.makeText(context, "Alarming...", Toast.LENGTH_SHORT).show();
  195. }
  196. else {
  197. Toast.makeText(context, "Alarm is off", Toast.LENGTH_SHORT).show();
  198. }
  199.  
  200. service_intent.putExtra("extra", fetchExtra);
  201. context.startService(service_intent);
  202.  
  203. /*
  204. mediaPlayer = MediaPlayer.create(context, R.raw.alarm);
  205. mediaPlayer.setLooping(true);
  206. mediaPlayer.start();
  207. */
  208.  
  209. }
  210. }
  211.  
  212. package com.troy.timepickerdialog;
  213.  
  214. import android.annotation.TargetApi;
  215. import android.app.Notification;
  216. import android.app.NotificationChannel;
  217. import android.app.NotificationManager;
  218. import android.app.PendingIntent;
  219. import android.app.Service;
  220. import android.content.Context;
  221. import android.content.Intent;
  222. import android.media.MediaPlayer;
  223. import android.os.Build;
  224. import android.os.IBinder;
  225. import android.support.annotation.Nullable;
  226. import android.support.v4.app.NotificationCompat;
  227. import android.util.Log;
  228. import android.widget.Toast;
  229.  
  230. /**
  231. * Created by royta on 09-Dec-18.
  232. */
  233.  
  234. public class RingtonePlayingService extends Service {
  235.  
  236. static MediaPlayer mediaPlayer;
  237. static boolean isRunning;
  238. @Nullable
  239. @Override
  240. public IBinder onBind(Intent intent) {
  241. return null;
  242. }
  243.  
  244. @Override
  245. public int onStartCommand(Intent intent, int flags, int startId) {
  246.  
  247. String state = intent.getExtras().getString("extra");
  248.  
  249. if(state.equals("alarmOn")) {
  250. Log.d("ROYs", "alarmOn state");
  251. mediaPlayer = MediaPlayer.create(this, R.raw.alarm);
  252. mediaPlayer.setLooping(true);
  253. mediaPlayer.start();
  254. this.isRunning = true;
  255.  
  256. //Notification
  257.  
  258. NotificationManager mNotificationManager;
  259.  
  260. NotificationCompat.Builder mBuilder =
  261. new NotificationCompat.Builder(this.getApplicationContext(), "notify_001");
  262. Intent goMainActivity = new Intent(this.getApplicationContext(), MainActivity.class);
  263. PendingIntent pendingIntent_for_Main = PendingIntent.getActivity(this, 0, goMainActivity, 0);
  264.  
  265. mBuilder.setContentIntent(pendingIntent_for_Main);
  266. mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
  267. mBuilder.setContentTitle("Voice Reminder");
  268. mBuilder.setContentText("Organize your BackPack.");
  269. mBuilder.setPriority(Notification.PRIORITY_MAX);
  270.  
  271. mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
  272.  
  273. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  274. String channelId = "VOICE_REMINDER_ID";
  275. NotificationChannel channel = new NotificationChannel(channelId,
  276. "Voice Reminder",
  277. NotificationManager.IMPORTANCE_DEFAULT);
  278. mNotificationManager.createNotificationChannel(channel);
  279. mBuilder.setChannelId(channelId);
  280. }
  281. mNotificationManager.notify(0, mBuilder.build());
  282.  
  283. //End Notification
  284. }
  285. else if(this.isRunning && state.equals("alarmOff")) {
  286. Log.d("ROYs", "alarmOff state");
  287. mediaPlayer.stop();
  288. this.isRunning = false;
  289. }
  290. return START_NOT_STICKY;
  291. }
  292.  
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement