From 844d7f43e5915e0be6df7d409fb2a18907f72584 Mon Sep 17 00:00:00 2001 From: it232115 Date: Fri, 19 Jan 2024 04:42:53 +0900 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E8=80=85=E9=80=9A=E5=A0=B1?= =?UTF-8?q?=E3=81=AE=E9=80=9A=E7=9F=A5=E3=82=92=E3=83=AD=E3=83=83=E3=82=AF?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=81=AB=E8=A1=A8=E7=A4=BA=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../childguard/NotificationReceiver.java | 4 +-- .../com/example/childguard/TestService.java | 36 +++++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/example/childguard/NotificationReceiver.java b/app/src/main/java/com/example/childguard/NotificationReceiver.java index 8a5a2c9..4fb3f5f 100644 --- a/app/src/main/java/com/example/childguard/NotificationReceiver.java +++ b/app/src/main/java/com/example/childguard/NotificationReceiver.java @@ -4,10 +4,10 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -public class NotificationReceiver extends BroadcastReceiver {//通知をクリックしたときにアプリを起動する処理 +public class NotificationReceiver extends BroadcastReceiver {//通知をタップしたときにアプリを起動する処理 @Override public void onReceive(Context context, Intent intent) { - if (intent.getAction() != null && intent.getAction().equals("OPEN_ACTIVITY")) {// 通知がクリックされたときの処理 + if (intent.getAction() != null && intent.getAction().equals("OPEN_ACTIVITY")) {// 通知がタップされたときの処理 Intent openIntent = new Intent(context, MainActivity.class); // MainActivityを起動 openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(openIntent); diff --git a/app/src/main/java/com/example/childguard/TestService.java b/app/src/main/java/com/example/childguard/TestService.java index 1b962ec..b25a3f1 100644 --- a/app/src/main/java/com/example/childguard/TestService.java +++ b/app/src/main/java/com/example/childguard/TestService.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.graphics.Color; import android.os.Build; import android.os.IBinder; import android.os.Vibrator; @@ -83,7 +84,7 @@ public class TestService extends Service { NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); Log.d("nt", "レスポンスを検知しました2"); - NotificationSetting();//通知に関する設定のメソッド→Android8.0以降のバックグラウンド処理に関する設定など + NotificationSetting();//通知に関する設定のメソッド Notification(getApplicationContext());//バイブレーション、音、バナーによる通知を行うメソッド } else {//それ以外のとき ResetReported();//ResetReported();を処理→FireBaseのisReportedをfalseにする @@ -120,7 +121,6 @@ public class TestService extends Service { } public void NotificationSetting() {//通知に関する設定の処理を行うメソッド - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//Android 8.0以降であることを確認する int importance = NotificationManager.IMPORTANCE_DEFAULT; //通知チャネルの実装 NotificationChannel channel = new NotificationChannel("CHANNEL_ID", "通知", importance); @@ -128,10 +128,11 @@ public class TestService extends Service { NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); - } + } public void Notification(Context context) {//実際に通知を行うメソッド + final String CHANNEL_ID = "my_channel_id"; // 通知がクリックされたときに送信されるIntent Intent intent = new Intent(context, MainActivity.class); intent.setAction("OPEN_ACTIVITY"); @@ -141,13 +142,34 @@ public class TestService extends Service { PendingIntent pendingIntent = PendingIntent.getActivity(context, requestCode, intent, flags | PendingIntent.FLAG_IMMUTABLE); ((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).vibrate(2000);//バイブレーション - @SuppressLint("NotificationTrampoline") NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID") + + @SuppressLint("NotificationTrampoline") NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "CHANNEL_ID") .setSmallIcon(android.R.drawable.ic_menu_info_details) .setContentTitle("子供の置き去りをしていませんか?")//通知のタイトル .setContentText("第三者からの通報が行われました。")//通知の本文 - .setContentIntent(pendingIntent) - .setAutoCancel(true) - .setPriority(NotificationCompat.PRIORITY_DEFAULT); + .setContentIntent(pendingIntent)//通知をタップするとActivityへ移動する + .setAutoCancel(true)//通知をタップすると削除する + .setPriority(NotificationCompat.PRIORITY_HIGH) // プライオリティを高く設定 + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC); // ロック画面に表示する + + // NotificationChannelの作成(Android 8.0以降) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationManager notificationManager = context.getSystemService(NotificationManager.class); + if (notificationManager != null) { + NotificationChannel channel = new NotificationChannel( + CHANNEL_ID, + "Channel Name", + NotificationManager.IMPORTANCE_HIGH + ); + + channel.setDescription("Channel Description"); + channel.enableLights(true); + channel.setLightColor(Color.RED); + channel.enableVibration(true); + notificationManager.createNotificationChannel(channel); + } + } + NotificationManager notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {