日記#303#304


#303 5月29日

今日はワークマネージャーを使ってみた。
まず、Android8.0より前のバージョンを含めた範囲でのワークマネージャーの使用はめんどくさい事になるので、色々なところに記載されている最低APIレベル 24(Android7あたり)を26(Android8)に書き換えた。
特に探すのに手こずったのはUnity側の設定。
AndroidStudioだけ最低APIレベルを上げてもUnity側でも上げておかないとビルド(アプリ作成)時にエラーが出てしまう。

#304 5月30日

今日の結果も散々だった。
まず、AppCompatActivityはUnityからだとDidn't Find Class on pathのエラーが出る。
次にAppCompatActivityをActivityにすると通るが、今度はワークマネージャーの元であるAndroidx.work.WorkerでDidn't Find Class on pathのエラーが出る。
Unity側のgladleのAndroidxの設定もtrueにしたし、Android側のgradleの設定もimplementsしたし、色々書き換えた。reamの設定も追加した。
それでも上手くいかなかった。
アラームマネージャーでは定期更新の部分だけ上手くいかなかったのに、ワークマネージャーはそもそも起動すらしてくれない。
Didn't Find Class on pathはパスを設定すればいいとのエラー文だが、どこになにを設定すればいいかも分からない。
色々なDidn't Find Class on pathのエラー解答をみたが全部ハズレ。
これらに関しては自分の知識がそこまで及んでいないだけなのかもしれないが、それにしたって酷い話だ。
やはり、UnityとAndroidを繋げていることでAndroid側だけのエラー対処ではどうにも対応できないと感じてしまう。
ここで、改めてこれまでの結果を振り返る。

  1. ジョブスケジューラーはダメだった

  2. アラームマネージャーでの通知設定ダメだった

  3. アラームマネージャーで歩数取得が可能になった

  4. アラームマネージャーのブロードキャストで定期更新できるものの、初回起動時に残ったonChangeSensorの中で保存するため、歩いてしまうとその時の歩数で上書きされ続けてしまう

  5. アラームマネージャーのブロードキャストで定期更新を行う際、onChangeSensor及びonReceive内では上書きもできない定数しか使用できないので、ファイル書き込みをオンオフで制御出来ない

  6. アラームマネージャーのブロードキャストで定期更新はブロードキャスト終了時にセンサー値を取得するのでファイル書き込みよりもセンサー値取得が確実に遅くなるのがダメだった

  7. アラームマネージャーのサービスで定期更新しようとするとAndroid8からは裏処理ができないので、消せない通知を用意する必要がある。アプリを終了するとnotification(通知)のDidn't Find Class on pathが出てしまうので2.と同じ原因でダメ

  8. ワークマネージャーで定期更新はワークマネージャーがDidn't Find Class on pathを出すのでダメだった

これまでできたことは
センサー値取得 〇
現在の歩数取得 〇
定期更新 ×
という事だ。
0時になったら現在の日付と歩数を取得して書き込む。
ただこれだけの事なのにもうずっと長く解決しないでさすがに停滞が過ぎる。
明日は1度"Unityで定期更新を行う"から再スタートしてみる。

既に世に出ている歩数計アプリはどのようにして0時更新しているのだろうか。
Unityと連携させていることが上手くいけてない原因なのだろうか。

この記事が気に入ったらサポートをしてみませんか?