From dfb6649a3b59017869fbc86822eb95c9dceb9ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8D=E3=82=80=E3=81=AD=E3=81=93?= Date: Thu, 11 Jul 2024 15:55:34 +0900 Subject: [PATCH] =?UTF-8?q?WIP=20=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/childguard/TestService.java | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/example/childguard/TestService.java b/app/src/main/java/com/example/childguard/TestService.java index 6dd855a..0af0418 100644 --- a/app/src/main/java/com/example/childguard/TestService.java +++ b/app/src/main/java/com/example/childguard/TestService.java @@ -24,6 +24,7 @@ import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; import com.google.firebase.firestore.DocumentReference; +import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.FirebaseFirestore; public class TestService extends Service { @@ -151,35 +152,44 @@ public class TestService extends Service { registerReceiver(receiver, intentFilter); } - private void initNotification(DocumentReference mDocRef) {//サイト上で押されたボタンの管理 - // PeriodicTaskManagerのインスタンス化 + private void initNotification(DocumentReference mDocRef) { + // Initialize the PeriodicTaskManager + // (Assuming it's done elsewhere as it's not shown in the original code) - // 共有プリファレンス全体の準備 + // Prepare SharedPreferences SharedPreferences sharedPreferences = getSharedPreferences("app_situation", MODE_PRIVATE); - //車の乗り降りを管理するtrue=乗車、false=降車 - //exists()でdocumentSnapshotの中のファイルの存在の確認 - mDocRef.addSnapshotListener((documentSnapshot, e) -> { - Log.d("nt", "イベント開始"); - //共有プリファレンス 書き込みの準備 - SharedPreferences.Editor E = sharedPreferences.edit(); - //車の乗り降りを管理するtrue=乗車、false=降車 - if (documentSnapshot.exists()) {//exists()でdocumentSnapshotの中のファイルの存在の確認 - Boolean isInCar = sharedPreferences.getBoolean("isInCarPref", false);//現在の乗降状態を保存する共有プリファレンス - E.putBoolean("isInCarPref", documentSnapshot.getBoolean("isInCar"));//乗降状態の判定 - E.apply();//確定処理 - Log.d("nt", "レスポンスを検知しました1"); - if (isInCar) {//isReportedがtrue=サイト上で乗車状態のとき - if (documentSnapshot.getBoolean("isReported")) { - //ここスタート(リサイクル) - resetReported();// ResetReported();を処理→FireBaseのisReportedをfalseにする - sendNotification(getApplicationContext(), REPORTED_NOTIFICATION);//通知を行うメソッド - } - } else {//isReportedがfalse=サイト上で降車状態のとき - resetReported();//ResetReported();を処理→FireBaseのisReportedをfalseにする - } + // Add a snapshot listener to the document reference + mDocRef.addSnapshotListener((documentSnapshot, e) -> { + if (e != null) { + Log.w("nt", "Listen failed.", e); + return; } + if (documentSnapshot != null && documentSnapshot.exists()) { + Log.d("nt", "イベント開始"); + + // Handle document snapshot + SharedPreferences.Editor editor = sharedPreferences.edit(); + boolean isInCar = sharedPreferences.getBoolean("isInCarPref", false); + boolean newIsInCarState = Boolean.TRUE.equals(documentSnapshot.getBoolean("isInCar")); + + editor.putBoolean("isInCarPref", newIsInCarState); + editor.apply(); + + Log.d("nt", "レスポンスを検知しました1"); + + if (isInCar) { + if (Boolean.TRUE.equals(documentSnapshot.getBoolean("isReported"))) { + resetReported(); + sendNotification(getApplicationContext(), REPORTED_NOTIFICATION); + } + } else { + resetReported(); + } + } else { + Log.d("nt", "Current data: null"); + } }); }