diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7bee9cc..c9e9a00 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,8 @@
+
+
notificationListeners = new ArrayList<>();
- private static final double NOTIFICATION_RECEIVE_PROBABILITY = 0.01;
+ //private static final double NOTIFICATION_RECEIVE_PROBABILITY = 0.5;
+ //natty
+ private boolean notificationSent = false; // 一度だけ送信するためのフラグ
+
+
+// @Override
+// public Runnable onUpdate() {
+// return () -> {
+// // 1% の確率で onNotificationReceived() が呼び出される
+// double borderValue = Math.floor(Math.random() * 100);
+// double currentValue = NOTIFICATION_RECEIVE_PROBABILITY * 100;
+// if (currentValue >= borderValue) {
+// Log.d("ChatViewModel", "Received test notification.");
+// notificationListeners.forEach(listener -> listener.onNotificationReceived());
+// }
+// };
+// }
+ //natty
@Override
public Runnable onUpdate() {
return () -> {
- // 1% の確率で onNotificationReceived() が呼び出される
- double borderValue = Math.floor(Math.random() * 100);
- double currentValue = NOTIFICATION_RECEIVE_PROBABILITY * 100;
- if (currentValue >= borderValue) {
- Log.d("ChatViewModel", "Received test notification.");
- notificationListeners.forEach(listener -> listener.onNotificationReceived());
+ if (!notificationSent) {
+ // 10秒後に一回だけ通知を送る
+ notificationSent = true; // もう送らない
+ new Handler(Looper.getMainLooper()).postDelayed(() -> {
+ Log.d("ChatViewModel", "Received test notification (after 10s).");
+ notificationListeners.forEach(NotificationListener::onNotificationReceived);
+ }, 10_000); // 10秒(10000ms)
}
};
}
diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
index c21e92b..e11d097 100644
--- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
+++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
@@ -1,7 +1,14 @@
package com.example.tampopo_client.views;
+import android.app.Dialog;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
@@ -9,12 +16,18 @@
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -26,10 +39,14 @@
import com.example.tampopo_client.Tampopo;
import com.example.tampopo_client.models.Activity;
import com.example.tampopo_client.viewmodels.ActivityViewModel;
+import com.google.android.material.imageview.ShapeableImageView;
import com.example.tampopo_client.viewmodels.ActivityViewModelFactory;
import com.example.tampopo_client.viewmodels.ChatViewModel;
import com.example.tampopo_client.viewmodels.NotificationListener;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements NotificationListener {
@@ -42,12 +59,14 @@
//アクティビティの選択肢
private String[] words = {"ひまnow", "あそぼ!", "そろそろ会いたない〜?", "勉強なう", "電話しよ~", "お風呂入ってくる~", "今暇だよー!", "いそがしい~!!"};
private Button openDialogButton;
+ private Map userViews = new HashMap<>();
ActivityViewModel activityViewModel;
Tampopo tampopo;
private ChatViewModel chatViewModel;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -59,6 +78,21 @@
return insets;
});
+ //疑似的な通知のためにchatViewModelを定義する
+ chatViewModel = new ViewModelProvider(this).get(ChatViewModel.class);
+ chatViewModel.addNotificationListener(this);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS)
+ != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(
+ this,
+ new String[]{android.Manifest.permission.POST_NOTIFICATIONS},
+ 1001
+ );
+ }
+ }
+
+// handleIncomingIntent(getIntent());
//メイン画面からフレンド一覧画面への遷移
ImageButton friendButton = (ImageButton) findViewById(R.id.friend);
friendButton.setOnClickListener(new View.OnClickListener() {
@@ -90,10 +124,10 @@
// }
// });
- MutableLiveData