From ba0dc850f78ba21bb5f32706c64ba7e078963be9 Mon Sep 17 00:00:00 2001 From: CiufudeanDani Date: Thu, 31 Mar 2022 14:12:03 +0300 Subject: [PATCH] display notifications --- safeDispatch/build.gradle | 2 - .../safedispatch/NotificationActivity.java | 29 +++--- .../safedispatch/TabLayoutActivity.java | 92 +++++++++---------- .../src/main/res/layout-large/tabpanel.xml | 6 +- 4 files changed, 64 insertions(+), 65 deletions(-) diff --git a/safeDispatch/build.gradle b/safeDispatch/build.gradle index 94cc018..7368309 100644 --- a/safeDispatch/build.gradle +++ b/safeDispatch/build.gradle @@ -78,6 +78,4 @@ dependencies { // add Gson implementation 'com.google.code.gson:gson:2.8.6' - - //retrofit } diff --git a/safeDispatch/src/main/java/com/safemobile/safedispatch/NotificationActivity.java b/safeDispatch/src/main/java/com/safemobile/safedispatch/NotificationActivity.java index a64d418..75594e0 100644 --- a/safeDispatch/src/main/java/com/safemobile/safedispatch/NotificationActivity.java +++ b/safeDispatch/src/main/java/com/safemobile/safedispatch/NotificationActivity.java @@ -16,17 +16,22 @@ public class NotificationActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // get notification type - int key = getIntent().getExtras().getInt("key"); - + // get notification type + int key = getIntent().getExtras().getInt("key"); + // broadcast intent - Intent i = new Intent(); - switch(key) - { - case AppParams.messageNotif: i.setAction(NOTIFICATION_MESSAGE_INTENT); break; - case AppParams.alertNotif: i.setAction(NOTIFICATION_ALERT_INTENT); break; - case AppParams.pollNotif: i.setAction(NOTIFICATION_POLL_INTENT); break; - } + Intent i = new Intent(); + switch(key) { + case AppParams.messageNotif: + i.setAction(NOTIFICATION_MESSAGE_INTENT); + break; + case AppParams.alertNotif: + i.setAction(NOTIFICATION_ALERT_INTENT); + break; + case AppParams.pollNotif: + i.setAction(NOTIFICATION_POLL_INTENT); + break; + } getBaseContext().sendBroadcast(i); @@ -35,6 +40,4 @@ public class NotificationActivity extends Activity{ /* Finish activity and return to parent activity */ finish(); } - -} - +} \ No newline at end of file diff --git a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java index 9b3ce43..75fbd86 100644 --- a/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java +++ b/safeDispatch/src/main/java/com/safemobile/safedispatch/TabLayoutActivity.java @@ -14,13 +14,11 @@ import java.util.Timer; import java.util.TimerTask; import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.TaskCompletionSource; import com.safemobile.activities.AbstractEmptyActivity; import com.safemobile.activities.AbstractLiveActivity; import com.safemobile.activities.AbstractMessagesActivity; import com.safemobile.activities.AbstractRadioActivity; import com.safemobile.activities.AbstractSDParentActivity; -import com.safemobile.safedispatch.R; import com.safemobile.enums.AuthorizationCode; import com.safemobile.enums.AuthorizationStatus; import com.safemobile.enums.ProviderSettingsStatus; @@ -59,7 +57,7 @@ import com.safemobile.services.TCPService.TCPBinder; import android.Manifest; import android.annotation.SuppressLint; import android.app.Dialog; -import android.app.Notification; +import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; @@ -74,6 +72,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -94,6 +93,8 @@ import android.widget.Toast; import android.widget.TabHost.TabSpec; import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; public class TabLayoutActivity extends AbstractSDParentActivity { @@ -1233,7 +1234,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { getMessageActivity().updateSMS(sms.smsList); } } catch (Exception ex) { - SM.Debug("Error on smsReceived:" + ex.toString()); + SM.Debug("Error on smsReceived:" + ex); } } @@ -1426,7 +1427,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { SM.Debug("tmpHist seqID:" + tmpHist.seqID); int pos = Integer.parseInt(tmpHist.seqID.substring(0, tmpHist.seqID.indexOf('.'))); - int all = Integer.parseInt(tmpHist.seqID.substring(tmpHist.seqID.indexOf('.') + 1, tmpHist.seqID.length())); + int all = Integer.parseInt(tmpHist.seqID.substring(tmpHist.seqID.indexOf('.') + 1)); if (all != 0) { if (Boolean.TRUE.equals(getFirstHistoryData())) { try { @@ -1668,13 +1669,11 @@ public class TabLayoutActivity extends AbstractSDParentActivity { case 137: setMess("zone " + tempArr[1]); break; - case 138: - setMess("emergency"); - break; case 140: setMess("telemetry " + tempArr[1]); break; default: +// 138 setMess("emergency"); } myHandler.post(updateResultsAlarm); @@ -1896,10 +1895,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { public void createNotification(int icon) { mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - String tickerText = "SafeMobile Dispatch: New Message from " + getImei(); - String contentTitle = "New Message from " + getImei(); - String contentText = "\"" + getMess() + "\""; - + String contentTitle, contentText; Vehicle veh = getVehicle4Imei(getImei()); int iconValue = icon; @@ -1912,7 +1908,6 @@ public class TabLayoutActivity extends AbstractSDParentActivity { case AppParams.pollNotif: contentText = "\"" + getMess() + "\""; contentTitle = "Poll Reply from " + (veh != null ? getVehicle4Imei(getImei()).name : getImei()); - tickerText = "SafeMobile Dispatch: Poll Reply from " + (veh != null ? getVehicle4Imei(getImei()).name : getImei()); icon = R.drawable.poll; break; case AppParams.alertNotif: @@ -1921,34 +1916,53 @@ public class TabLayoutActivity extends AbstractSDParentActivity { vehName = getString(R.string.from) + ": " + getVehicle4Imei(getImei()).name; contentText = "\"" + getMess() + "\""; contentTitle = getString(R.string.newAlarm) + vehName; - tickerText = "SafeMobile Dispatch: " + getString(R.string.newAlarm) + vehName; - icon = R.drawable.alert; + icon = R.drawable.arrow_down; break; default: throw new IllegalStateException("Unexpected value: " + icon); } - Notification notification = new Notification(icon, tickerText, System.currentTimeMillis()); - // set intent to be opened on NotificationClick /* Notification */ - Intent notificationIntent = new Intent(this, NotificationActivity.class); - notificationIntent.putExtra("key", iconValue); + Intent intent = new Intent(this, NotificationActivity.class); + intent.putExtra("key", iconValue); // cancel old notification mNotificationManager.cancel(icon); - PendingIntent contentIntent = PendingIntent.getActivity(context, NOTIFICATION_ACTIVITY_RESULT, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); - - // flag that the notification will be closed when clicked - notification.flags |= Notification.FLAG_AUTO_CANCEL; - notification.number = 1; // the same notification will be shown; - notification.tickerText = tickerText; // notification text when arrives - notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.new_sms); - // add notification to the manager - mNotificationManager.notify(icon, notification); + PendingIntent pendingIntent = PendingIntent.getActivity(context, NOTIFICATION_ACTIVITY_RESULT, intent, PendingIntent.FLAG_CANCEL_CURRENT); + createNotificationChannel(icon, contentTitle, contentText, pendingIntent); } + private void createNotificationChannel(int icon, String title, String text, PendingIntent pendingIntent) { + // Create the NotificationChannel, but only on API 26+ because + // the NotificationChannel class is new and not in the support library + String notificationChannelID = String.valueOf(icon); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + CharSequence name = "Notification Channel"; + int importance = NotificationManager.IMPORTANCE_HIGH; + NotificationChannel channel = new NotificationChannel(notificationChannelID, name, importance); + // Register the channel with the system; you can't change the importance + // or other notification behaviors after this + NotificationManager notificationManager = getSystemService(NotificationManager.class); + notificationManager.createNotificationChannel(channel); + } + + + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, notificationChannelID) + .setSmallIcon(icon) + .setContentTitle(title) + .setContentText(text) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setAutoCancel(true) + .setContentIntent(pendingIntent); + + Log.v("test111", "test"); + NotificationManagerCompat managerCompat = NotificationManagerCompat.from(context); + managerCompat.notify(icon, builder.build()); + } + + // return vehicle according to imei private Vehicle getVehicle4Imei(String imei) { Vehicle veh = null; @@ -2092,7 +2106,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity { setVehicleStatus(Integer.parseInt(params[1]), Integer.parseInt(params[2]), Integer.parseInt(params[3]), Integer.parseInt(params[4])); } catch (Exception ex) { - SM.Exception("Paramas -> setVehicleStatus", "EXCeption ex " + ex.toString()); + SM.Exception("Paramas -> setVehicleStatus", "EXCeption ex " + ex); } break; @@ -2123,21 +2137,6 @@ public class TabLayoutActivity extends AbstractSDParentActivity { new ConnectTask().execute(params); } - public class ConnectParserTask extends AsyncTask { - @Override - protected TCPhandler doInBackground(String... params) { - if (myService != null) - tcpParser = myService.getTCPmsgParser(); - - // add TCPParserListener - if (tcpParser != null) { - SM.Debug("## tcpParser != null ", "#### call tcpParserListener("); - tcpParserListener(); - } - return null; - } - } - /* Display Toast messages*/ @Override public void displayToast(final String msg) { @@ -2247,10 +2246,8 @@ public class TabLayoutActivity extends AbstractSDParentActivity { super.onRequestPermissionsResult(requestCode, permissions, grantResults); SM.Debug("onRequestPermissionsResult", "[requestCode] " + requestCode); - String permission = ""; switch (requestCode) { case PermissionModule.RECORD_AUDIO_PERMISSION_REQUEST_CODE: - permission = Manifest.permission.RECORD_AUDIO; break; default: throw new IllegalStateException("Unexpected value: " + requestCode); @@ -2301,10 +2298,9 @@ public class TabLayoutActivity extends AbstractSDParentActivity { private void waitForUserInput(Boolean result) { if (result) { - final int requestCode = 1202; //navigate to application's settings String action = ProviderSettingsHelper.getAction(ProviderSettingsStatus.APPLICATION_DETAILS); - if (action == null || action == "") + if (action == null || action.equals("")) return; boolean isActionApplicationDetailsSettings = action.equals(ProviderSettingsHelper.ACTION_APPLICATION_DETAILS_SETTINGS); diff --git a/safeDispatch/src/main/res/layout-large/tabpanel.xml b/safeDispatch/src/main/res/layout-large/tabpanel.xml index 4722cba..a39efc0 100644 --- a/safeDispatch/src/main/res/layout-large/tabpanel.xml +++ b/safeDispatch/src/main/res/layout-large/tabpanel.xml @@ -88,7 +88,9 @@ - + + + + android:padding="3dp">