nsaito92 / Frock

0 stars 0 forks source link

DBのデータを元にアラームが鳴動する機能を追加する #16

Closed nsaito92 closed 4 years ago

nsaito92 commented 4 years ago

概要

期待値

対応内容

参考情報

備考

*

nsaito92 commented 4 years ago

DB情報を元にしたアラーム設定の実装について検討案

チケット内対応内容の全体像

要件整理

実現したいこと

基本設計

詳細設計

機能一覧

DBデータを元にアラームサービスを生成する機能

生成されたアラームサービスの機能

アラームサービスの終了する機能

  1. サービスの終了依頼がきた時に、以下の処理を行う。
    1. 音楽の終了

データ設計

新規データ

既存データ(DB)の使い方について

技術調査

PendingIntentのRequestCodeについて

実装

nsaito92 commented 4 years ago

次の作業

nsaito92 commented 4 years ago

以下のエラーが発生。

06-15 16:46:27.249 11253-11253/org.bitbucket.snaoto22.frock E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: org.bitbucket.snaoto22.frock, PID: 11253
                                                                              java.lang.RuntimeException: Unable to stop service com.example.naotosaito.clocktest.AlarmService@9842dc: java.lang.NumberFormatException: null
                                                                                  at android.app.ActivityThread.handleStopService(ActivityThread.java:3418)
                                                                                  at android.app.ActivityThread.-wrap27(ActivityThread.java)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1625)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:241)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6223)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                                               Caused by: java.lang.NumberFormatException: null
                                                                                  at java.lang.Integer.parseInt(Integer.java:483)
                                                                                  at java.lang.Integer.parseInt(Integer.java:556)
                                                                                  at com.example.naotosaito.clocktest.AlarmService.onDestroy(AlarmService.java:80)
                                                                                  at android.app.ActivityThread.handleStopService(ActivityThread.java:3401)
                                                                                  at android.app.ActivityThread.-wrap27(ActivityThread.java) 
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1625) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                  at android.os.Looper.loop(Looper.java:241) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6223) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
nsaito92 commented 4 years ago

現状メモ

nsaito92 commented 4 years ago

アラーム起動予定の重複について検討

ソニーの時計アプリのアラーム設定について確認。

ONになっているアラーム設定が二つある状態で、内部データを確認。


アラーム設定一覧を取得。

$ adb shell dumpsys alarm | grep com.sonyericsson.organizer

一番近いアラーム設定のみ、AlarmManagerにセットされている模様。

1592778600000 : Your time zone: 2020年6月22日 月曜日 07:30:00 GMT+09:00

上記のアラーム設定をOFFにして、サイドアラーム取得コマンドを実行。 次に近いアラーム設定が一つだけ設定される様になった。

1592782200000 : Your time zone: 2020年6月22日 月曜日 08:30:00 GMT+09:00
nsaito92 commented 4 years ago

03cea083c6b4b81188e217542203f23b74a68103 対応後の単体テストログ。


06-30 23:29:50.420 21210-21210/org.bitbucket.snaoto22.frock D/AlarmServiceSetter: UpdateAlarmService
06-30 23:29:50.420 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsOpenHelper: FrockSettingsOpenHelper
06-30 23:29:50.420 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: getValidCalender
06-30 23:29:50.421 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: getCursorForValidSettings
06-30 23:29:50.429 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: cursor.getCount() = 4
06-30 23:29:50.429 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 1st : 0
06-30 23:29:50.430 21210-21210/org.bitbucket.snaoto22.frock D/ClockUtil: convertStringToArray
06-30 23:29:50.430 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 0
06-30 23:29:50.430 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 1
06-30 23:29:50.431 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 2
06-30 23:29:50.431 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 3
06-30 23:29:50.432 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 4
06-30 23:29:50.432 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 5
06-30 23:29:50.433 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 6
06-30 23:29:50.456 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: alarmCld = Wed Jul 01 09:00:00 GMT+09:00 2020

06-30 23:29:50.456 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 1st : 1
06-30 23:29:50.456 21210-21210/org.bitbucket.snaoto22.frock D/ClockUtil: convertStringToArray
06-30 23:29:50.456 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 0
06-30 23:29:50.457 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 1
06-30 23:29:50.458 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: alarmCld = Fri Jul 03 06:00:00 GMT+09:00 2020

06-30 23:29:50.458 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 1st : 2
06-30 23:29:50.458 21210-21210/org.bitbucket.snaoto22.frock D/ClockUtil: convertStringToArray
06-30 23:29:50.458 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 0
06-30 23:29:50.459 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: alarmCld = Wed Jul 01 23:22:00 GMT+09:00 2020

06-30 23:29:50.459 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 1st : 3
06-30 23:29:50.459 21210-21210/org.bitbucket.snaoto22.frock D/ClockUtil: convertStringToArray
06-30 23:29:50.459 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 0
06-30 23:29:50.460 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 1
06-30 23:29:50.460 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: root 2nd cnt2 = 2
06-30 23:29:50.461 21210-21210/org.bitbucket.snaoto22.frock D/FrockSettingsHelperController: alarmCld = Wed Jul 01 08:05:00 GMT+09:00 2020

06-30 23:29:50.461 21210-21210/org.bitbucket.snaoto22.frock D/ClockUtil: isClosestCalender
06-30 23:29:50.463 21210-21210/org.bitbucket.snaoto22.frock D/AlarmServiceSetter: closestcalender = Wed Jul 01 08:05:00 GMT+09:00 2020
nsaito92 commented 4 years ago
nsaito92 commented 4 years ago

再起動前

SCV46:/ $ dumpsys alarm | grep org.bitbucket.snaoto22.frock                                                                    
    RTC #3: Alarm{a5ea388 type 1 when 1593568800220 org.bitbucket.snaoto22.frock}
      tag=*alarm*:org.bitbucket.snaoto22.frock/com.example.naotosaito.clocktest.AlarmService
      operation=PendingIntent{34f4121: PendingIntentRecord{e94a0dc org.bitbucket.snaoto22.frock startService}}
   (AppSync) org.bitbucket.snaoto22.frock/0

再起動後

SCV46:/ $ dumpsys alarm | grep org.bitbucket.snaoto22.frock                                                                    
   (AppSync) org.bitbucket.snaoto22.frock/0

nsaito92 commented 4 years ago

https://github.com/nsaito92/Frock/issues/16#issuecomment-640184290 にて検討した内容からの、 最終的な対応内容について記載する。

基本設計

詳細設計

機能一覧

DBデータを元にアラームサービスを生成する機能

生成されたアラームサービスの機能

アラームサービスの終了する機能

  1. サービスの終了依頼がきた時に、以下の処理を行う。
    1. 音楽の終了

データ設計

新規データ

既存データ(DB)の使い方について

技術調査

PendingIntentのRequestCodeについて

実装

nsaito92 commented 4 years ago

マージ完了。