Advertisement
CRP_Seven

[Android] LC Time Alarm AlarmService

Nov 1st, 2014
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.33 KB | None | 0 0
  1. package com.seven.lctimer;
  2.  
  3. import java.util.Calendar;
  4.  
  5. import android.app.AlarmManager;
  6. import android.app.PendingIntent;
  7. import android.app.Service;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.content.SharedPreferences;
  11. import android.os.IBinder;
  12. import android.os.SystemClock;
  13. import android.util.Log;
  14. import com.seven.lctimer.PackageReceiver;
  15.  
  16. public class AlarmService extends Service {
  17. boolean mQuit; // 서비스 작동 여부
  18. boolean mSwc; // 알림 스위치 체크
  19. boolean mSwc2; // 소리 스위치 체크
  20. private PackageReceiver pReceiver;
  21.  
  22. @Override
  23. public IBinder onBind(Intent intent) {
  24. return null;
  25. }
  26.  
  27. @Override
  28. public int onStartCommand(Intent intent, int flags, int startId) {
  29. releaseAlarm();
  30. Log.d("service","onStartCommand 실행");
  31. getValue(); // 스위치 온 체크
  32. AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); // 알람 서비스 등록
  33. Calendar calendar = Calendar.getInstance(); // 날짜
  34. PendingIntent sender; // Sender (??)
  35.  
  36.  
  37. if(mSwc == true)
  38. {
  39. registerRestartAlarm(true);
  40. Log.d("service","알람 등록");
  41.  
  42. // 빛나시 등록 (오전)
  43. Intent ashley = new Intent(this, AshleyAlarm.class);
  44. sender = PendingIntent.getBroadcast(this, 1, ashley, 0);
  45. calendar.add(Calendar.HOUR_OF_DAY, 11);
  46. calendar.add(Calendar.MINUTE, 9);
  47. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  48.  
  49.  
  50. // 빛나시 등록 (오후)
  51. Intent ashleyPM = new Intent(this, AshleyAlarm.class);
  52. sender = PendingIntent.getBroadcast(this, 2, ashleyPM, 0);
  53. calendar.add(Calendar.HOUR_OF_DAY, 23);
  54. calendar.add(Calendar.MINUTE, 9);
  55. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  56.  
  57. // 리세시 등록 (오전)
  58. Intent rise = new Intent(this, RiseAlarm.class);
  59. sender = PendingIntent.getBroadcast(this, 3, rise, 0);
  60. calendar.add(Calendar.HOUR_OF_DAY, 8);
  61. calendar.add(Calendar.MINUTE, 16);
  62. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  63.  
  64.  
  65. // 리세시 등록 (오후)
  66. Intent risePM = new Intent(this, RiseAlarm.class);
  67. sender = PendingIntent.getBroadcast(this, 4, risePM, 0);
  68. calendar.add(Calendar.HOUR_OF_DAY, 20);
  69. calendar.add(Calendar.MINUTE, 16);
  70. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  71.  
  72. // 은비시 등록 (오전)
  73. Intent eunb = new Intent(this, EunBAlarm.class);
  74. sender = PendingIntent.getBroadcast(this, 5, eunb, 0);
  75. calendar.add(Calendar.HOUR_OF_DAY, 11);
  76. calendar.add(Calendar.MINUTE, 23);
  77. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  78.  
  79. // 은비시 등록 (오후)
  80. Intent eunbPM = new Intent(this, EunBAlarm.class);
  81. sender = PendingIntent.getBroadcast(this, 6, eunbPM, 0);
  82. calendar.add(Calendar.HOUR_OF_DAY, 23);
  83. calendar.add(Calendar.MINUTE, 23);
  84. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  85.  
  86. // 소정시 등록 (오전)
  87. Intent sojung = new Intent(this, SojungAlarm.class);
  88. sender = PendingIntent.getBroadcast(this, 7, sojung, 0);
  89. calendar.add(Calendar.HOUR_OF_DAY, 9);
  90. calendar.add(Calendar.MINUTE, 3);
  91. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  92.  
  93. // 소정시 등록 (오후)
  94. Intent sojungPM = new Intent(this, SojungAlarm.class);
  95. sender = PendingIntent.getBroadcast(this, 8, sojungPM, 0);
  96. calendar.add(Calendar.HOUR_OF_DAY, 21);
  97. calendar.add(Calendar.MINUTE, 3);
  98. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  99.  
  100. //주미시 등록 (오전)
  101. Intent zuny = new Intent(this, ZunyAlarm.class);
  102. sender = PendingIntent.getBroadcast(this, 9, zuny, 0);
  103. calendar.add(Calendar.HOUR_OF_DAY, 12);
  104. calendar.add(Calendar.MINUTE, 8);
  105. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  106.  
  107. //주미시 등록 (오후)
  108. Intent zunyPM = new Intent(this, ZunyAlarm.class);
  109. sender = PendingIntent.getBroadcast(this, 10, zunyPM, 0);
  110. calendar.add(Calendar.HOUR_OF_DAY, 0);
  111. calendar.add(Calendar.MINUTE, 8);
  112. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  113.  
  114. //데뷔시 등록 (오전)
  115. Intent debut = new Intent(this, DebutAlarm.class);
  116. sender = PendingIntent.getBroadcast(this, 11, debut, 0);
  117. calendar.add(Calendar.HOUR_OF_DAY, 3);
  118. calendar.add(Calendar.MINUTE, 7);
  119. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  120.  
  121. //데뷔시 등록 (오후)
  122. Intent debutPM = new Intent(this, DebutAlarm.class);
  123. sender = PendingIntent.getBroadcast(this, 12, debutPM, 0);
  124. calendar.add(Calendar.HOUR_OF_DAY, 15);
  125. calendar.add(Calendar.MINUTE, 7);
  126. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  127.  
  128. //test
  129. Intent test = new Intent(this, DebutAlarm.class);
  130. sender = PendingIntent.getBroadcast(this, 13, test, 0);
  131. calendar.set(Calendar.HOUR_OF_DAY, 12);
  132. calendar.set(Calendar.MINUTE, 46);
  133. alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);
  134. }
  135.  
  136. return START_REDELIVER_INTENT;
  137. }
  138.  
  139. @Override
  140. public void onCreate() {
  141. Log.d("service","onCreate 실행");
  142. //releaseAlarm();
  143.  
  144. pReceiver = new PackageReceiver();
  145. IntentFilter pFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
  146. pFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
  147. pFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
  148. pFilter.addDataScheme("package");
  149. registerReceiver(pReceiver, pFilter);
  150. }
  151.  
  152. @Override
  153. public void onDestroy() {
  154. Log.d("service","onDestroy 실행");
  155. registerRestartAlarm(false);
  156. releaseAlarm();
  157.  
  158. if(pReceiver != null)
  159. unregisterReceiver(pReceiver);
  160. }
  161.  
  162. public void getValue() {
  163. SharedPreferences switchs = getSharedPreferences("switchs", MODE_PRIVATE);
  164. switchs.getBoolean("switchs", mSwc);
  165. }
  166.  
  167. private void releaseAlarm(){
  168.  
  169. Log.d("service","알람 제거");
  170. AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE); // 알람 서비스 등록
  171.  
  172. PendingIntent sender; // Sender (??)
  173.  
  174. Intent ashley = new Intent(this, AshleyAlarm.class);
  175. sender = PendingIntent.getBroadcast(this, 1, ashley, 0);
  176. alarm.cancel(sender);
  177.  
  178. Intent ashleyPM = new Intent(this, AshleyAlarm.class);
  179. sender = PendingIntent.getBroadcast(this, 2, ashleyPM, 0);
  180. alarm.cancel(sender);
  181.  
  182. Intent rise = new Intent(this, RiseAlarm.class);
  183. sender = PendingIntent.getBroadcast(this, 3, rise, 0);
  184. alarm.cancel(sender);
  185.  
  186. Intent risePM = new Intent(this, RiseAlarm.class);
  187. sender = PendingIntent.getBroadcast(this, 4, risePM, 0);
  188. alarm.cancel(sender);
  189.  
  190. Intent eunb = new Intent(this, EunBAlarm.class);
  191. sender = PendingIntent.getBroadcast(this, 5, eunb, 0);
  192. alarm.cancel(sender);
  193.  
  194. Intent eunbPM = new Intent(this, EunBAlarm.class);
  195. sender = PendingIntent.getBroadcast(this, 6, eunbPM, 0);
  196. alarm.cancel(sender);
  197.  
  198. Intent sojung = new Intent(this, SojungAlarm.class);
  199. sender = PendingIntent.getBroadcast(this, 7, sojung, 0);
  200. alarm.cancel(sender);
  201.  
  202. Intent sojungPM = new Intent(this, SojungAlarm.class);
  203. sender = PendingIntent.getBroadcast(this, 8, sojungPM, 0);
  204. alarm.cancel(sender);
  205.  
  206. Intent zuny = new Intent(this, ZunyAlarm.class);
  207. sender = PendingIntent.getBroadcast(this, 9, zuny, 0);
  208. alarm.cancel(sender);
  209.  
  210. Intent zunyPM = new Intent(this, ZunyAlarm.class);
  211. sender = PendingIntent.getBroadcast(this, 10, zunyPM, 0);
  212. alarm.cancel(sender);
  213.  
  214. Intent debut = new Intent(this, DebutAlarm.class);
  215. sender = PendingIntent.getBroadcast(this, 11, debut, 0);
  216. alarm.cancel(sender);
  217.  
  218. Intent debutPM = new Intent(this, DebutAlarm.class);
  219. sender = PendingIntent.getBroadcast(this, 12, debutPM, 0);
  220. alarm.cancel(sender);
  221. }
  222.  
  223. // 자동 서비스 재시작
  224. public void registerRestartAlarm(boolean isOn){
  225. Intent intent = new Intent(this, RestartReceiver.class);
  226. intent.setAction(RestartReceiver.ACTION_RESTART_SERVICE);
  227. PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
  228.  
  229. AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  230. if(isOn){
  231. am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000, 10000, sender);
  232. }else{
  233. am.cancel(sender);
  234. }
  235. }
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement