質問編集履歴

3

編集前「関係ない時間に鳴ることがある」と書いていましたが、スマホにある操作をするとalarmTimeに不適切な値が渡されるためとわかり解決しましたので、その部分の記述を削除しました。

2023/02/19 06:42

投稿

mashro
mashro

スコア0

test CHANGED
File without changes
test CHANGED
@@ -6,8 +6,11 @@
6
6
   setAlarmClockを使い、時間になると「StopSnooze」というActivityが立ち上がって音を鳴らすという作りですが、正確な時間に鳴らないので困っています。
7
7
 
8
8
  ### 発生している問題・エラーメッセージ
9
-  2~9分程度遅れて鳴ることが多く、時には全く鳴らなかったた数時間前に鳴るなど動作が不安定です。数分後に鳴るようなセットをするとほぼ正確に鳴りますが、8時間後に鳴るなどのセットをすると、遅れるなどの問題が起きることが多いです。
9
+  2~9分程度遅れて鳴ることが多くります。数分後に鳴るようなセットをするとほぼ正確に鳴りますが、8時間後に鳴るなどのセットをすると、遅れるなどの問題が起きることが多いです。
10
10
   インストールして最初の2,3回はほぼ正確に鳴り、数日後(数回の使用後)に不正確になるように思われます。
11
+
12
+ ### お願いしたいこと
13
+  解決方法がわかればもちろん良いですが、それ以外でも、最近setAlarmClockを使ってうまくいった、あるいはうまくいかなかった経験がある方などに、そのことを教えていただけるだけでもありがたいです。というのも、そもそも今のAndroidにおいてsetAlarmClockを使って正確な時間に鳴る目覚まし時計を作ることはできないのではないか?無理なことをしようとしているのではないか?と疑問が湧いているのです。
11
14
 
12
15
  ### 該当のソースコード
13
16
   メインアクティビティでアラームを鳴らす時刻(alarmTime)を取得してからサービスを立ち上げます。スマホがスリープ中にアラーム時刻となった場合にアクティビティの画面が立ち上がり、さらにPINの入力をせずに音を止められすようにするなどのために、Manifestにいくつかのpermissionを記述しています。

2

adb shell dumpsys deviceidle を使って確かめた内容を追記した。

2023/02/14 05:57

投稿

mashro
mashro

スコア0

test CHANGED
File without changes
test CHANGED
@@ -82,6 +82,16 @@
82
82
  ・Clean Projectを実施した。
83
83
  ・スマホの設定から、省電力機能の電池の最適化の対象外とした。
84
84
 
85
+  約4分間アラームが鳴るのが遅れた際に、adb shell dumpsys deviceidle を使ってその時のアラームの状態を調べてみました(Pixel5a(5G)を使用)。すると、
86
+ deep-idle: -2h12m52s503ms
87
+ normal: -20m40s929ms (alarm)
88
+ light-idle: -18m40s7ms
89
+ light-maint: -12m38s985ms
90
+ light-idle: -12m33s911ms
91
+ normal: -7m51s496ms (unlocked)
92
+  のような表記が出ました。アラームを設定したのはこの時間に合わせると -12m頃です。すなわち、-20m40sの時点でスマホは起きたにも関わらず、-12mの時点でアラームは鳴らず、-7m51s頃の時点でようやく鳴ったということと思われます。
93
+  これはなぜなのでしょうか。コードを工夫することによって改善する可能性はあるのでしょうか。
94
+
85
95
  ### 補足情報
86
96
   これらの問題は、実機3台(Pixel5a(5G):Android12、Xperia8:Android11、京セラ(かんたんスマホ2)で起こりました。時間がかかるためエミュレータでは試していません。
87
97
 

1

文章表現をより分かりやすくした。

2023/02/12 01:27

投稿

mashro
mashro

スコア0

test CHANGED
File without changes
test CHANGED
@@ -10,8 +10,8 @@
10
10
   インストールして最初の2,3回はほぼ正確に鳴り、数日後(数回の使用後)に不正確になるように思われます。
11
11
 
12
12
  ### 該当のソースコード
13
-  メインアクティビティでアラームを鳴らす時刻(alarmTime)を取得してからサービスを立ち上げます。以下はサービスとマニフェストに含まれるコードの主要部分です。
14
-  スマホがスリープ中にアラーム時刻となった場合にStopSnoozeの画面が立ち上がり、さらにPINの入力をせずに音を止められすようにするなどのために、Manifestにいくつかのpermissionを記述しています。
13
+  メインアクティビティでアラームを鳴らす時刻(alarmTime)を取得してからサービを立ち上げます。スマホがスリープ中にアラーム時刻となった場合にアクティビティの画面が立ち上がり、さらにPINの入力をせずに音を止められすようにするなどのために、Manifestにいくつかのpermissionを記述しています。
14
+ 以下はサービスとマニフェストに含まれるコードの主要部分です。
15
15
 
16
16
  kotlin
17
17
 
@@ -72,7 +72,7 @@
72
72
 
73
73
 
74
74
  ### 問題に対して試したこと
75
-  以下のことをやってみましたが、状況は変わりませんでした(アプリをインストールしなおすと回は正確に動くこともありますが、その後再び問題が起きました。)
75
+  以下のことをやってみましたが、状況は変わりませんでした(アプリをインストールしなおすと2~3回は正確に動、その後再び問題が起きました。)
76
76
 
77
77
  ・PendingIntentのFLAGをあれこれ変えた。
78
78
  ・PendingIntentのリクエストコードを変えた。
@@ -83,7 +83,7 @@
83
83
  ・スマホの設定から、省電力機能の電池の最適化の対象外とした。
84
84
 
85
85
  ### 補足情報
86
-  これらのことは、実機3台(Pixel5a(5G):Android12、Xperia8:Android11、京セラ(かんたんスマホ2)で起こりました。エミュレータでは試していません。
86
+  これらの問題は、実機3台(Pixel5a(5G):Android12、Xperia8:Android11、京セラ(かんたんスマホ2)で起こりました。時間がかかるためエミュレータでは試していません。
87
87
 
88
88
 
89
89