Selaa lähdekoodia

RAImage 1.26
Add forground notification and pending intent to open upload list

Ray Zhang 8 kuukautta sitten
vanhempi
commit
23842cfd1b

+ 10 - 0
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/upload/RAOperationQueue.java

@@ -57,6 +57,16 @@ public class RAOperationQueue {
         Log.d(TAG, "addOperation: ");
 
         queue.offer(taskinfo);
+
+//        Intent intentc = new Intent("REDANT.RAImage.UPLOAD_UPDATE_COUNT");
+//        intentc.setPackage(applicationContext.getPackageName());
+//
+//        intentc.putExtra("count",queue.size());
+//
+//        applicationContext.sendBroadcast(intentc);
+
+
+
         while (((ThreadPoolExecutor)es).getActiveCount()< MaxThread) {
 
 

+ 21 - 0
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/upload/RAUploadManager.java

@@ -649,6 +649,8 @@ public class RAUploadManager {
             @Override
             public void operateFinish(Bundle taskinfo) {
 
+
+
                 TaskStatus status = TaskStatus.values()[taskinfo.getInt("status", 0)];
 
                 //新增逻辑,对于成功上传的图片,从书记删除
@@ -688,6 +690,7 @@ public class RAUploadManager {
                         if(uiUpdateListener!=null)
                             uiUpdateListener.updateList(arr_queue);
 
+                        upload_update_count_msg();
 
                     } else {
                         saveTasks();
@@ -731,6 +734,8 @@ public class RAUploadManager {
                     Bundle b = RAUtil.Json2Bundle(jsobj);
                     arr_queue.add(b);
                 }
+
+                upload_update_count_msg();
             }
 
 
@@ -779,6 +784,16 @@ public class RAUploadManager {
 
     ;
 
+    private  void upload_update_count_msg()
+    {
+        Intent intentc = new Intent("REDANT.RAImage.UPLOAD_UPDATE_COUNT");
+        intentc.setPackage(applicationContext.getPackageName());
+
+        intentc.putExtra("count",arr_queue.size());
+
+        applicationContext.sendBroadcast(intentc);
+    }
+
     public void addTasks(ArrayList<Bundle> tasks) {
 
 //        Log.d(TAG, "addTasks: ");
@@ -790,6 +805,12 @@ public class RAUploadManager {
 
             Log.d("_synchronized", "addTasks: end" + (System.currentTimeMillis() - timeStart));
 
+
+
+            upload_update_count_msg();
+
+
+
         }
 
         taskCountChanged();

+ 0 - 3
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/upload/TaskActivity.java

@@ -19,10 +19,7 @@ import androidx.annotation.Nullable;
 import com.usai.redant.rautils.R;
 import com.usai.redant.rautils.application.RedantApplication;
 import com.usai.redant.rautils.utils.Network;
-//import com.usai.service.RAImageBackgroundService3;
-//import com.usai.util.dbgUtil;
 
-//import com.usai.service.RAImageBackgroundService;
 
 
 public class TaskActivity extends UploadListActivity {

+ 2 - 2
ApexDrivers/raimage/build.gradle

@@ -15,8 +15,8 @@ android {
         applicationId "com.usai.redant.raimage"
         minSdkVersion 28
         targetSdkVersion 35
-        versionCode 11
-        versionName "1.24.57465"
+        versionCode 12
+        versionName "1.26.57465"
 //        ndk.abiFilters 'armeabi-v7a',"arm64-v8a"
     }
     buildTypes {

+ 1 - 1
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/MainActivity.java

@@ -2108,7 +2108,7 @@ public class MainActivity extends AppCompatActivity
         Log.d(TAG, "user=" + RAImageApplication.user + ",password="
                 + RAImageApplication.password);
         IntentFilter msgFilter = new IntentFilter();
-        Intent intent = getIntent();
+//        Intent intent = getIntent();
 
         msgFilter.addAction("REDANT.RAImage.UPLOAD_COMPLETE");
 

+ 93 - 1
ApexDrivers/raimage/src/main/java/com/usai/redant/raimage/RAImageApplication.java

@@ -1,10 +1,17 @@
 package com.usai.redant.raimage;
 
+import static android.app.PendingIntent.FLAG_IMMUTABLE;
+
 import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
 import android.os.Build;
@@ -14,7 +21,10 @@ import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Log;
 
+import androidx.core.app.NotificationCompat;
+
 import com.usai.redant.rautils.application.RedantApplication;
+import com.usai.redant.rautils.upload.TaskActivity;
 import com.usai.redant.rautils.utils.RACrashHandler;
 import com.usai.service.RAImageBackgroundService3;
 
@@ -24,6 +34,8 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
+import kotlinx.coroutines.scheduling.Task;
+
 public class RAImageApplication extends RedantApplication
 {
 
@@ -47,7 +59,69 @@ public class RAImageApplication extends RedantApplication
 
 //    public static RedAntApplication getInstance() {
 //        return instance;
-//    }
+//
+
+
+	private final BroadcastReceiver ApplicaitonReceiver = new BroadcastReceiver()
+	{
+
+		public void onReceive(
+				Context context,
+				Intent intent)
+		{
+
+			int count = intent.getIntExtra("count",-1);
+
+			String action = intent
+					.getAction();
+			if ("REDANT.RAImage.UPLOAD_UPDATE_COUNT".equals(action))
+			{
+
+				TaskActivity t;
+				PendingIntent contentIntent=PendingIntent.getActivity(getApplicationContext(),
+						0,new Intent(getApplicationContext(), TaskActivity.class),FLAG_IMMUTABLE);
+				if (count>0)
+				{
+
+//					new Intent(getApplicationContext(), TaskActivity.class);
+
+
+//					new Intent (getApplicationContext(),TaskActivity.class);
+					NotificationChannel channel = new NotificationChannel("Service Start",
+							"Service Start", NotificationManager.IMPORTANCE_HIGH);
+					((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
+
+					Notification notification = new NotificationCompat.Builder(mService, "Service Start")
+//                    .setContentTitle("Apex Land is running.")
+							.setContentText(count + " files uploading...")
+							.setContentIntent(contentIntent)
+							.setCategory(Notification.CATEGORY_SERVICE).setSmallIcon(com.usai.redant.rautils.R.drawable.ic_launcher_foreground).setPriority(1000).build();
+					mService.startForeground(101, notification);
+				}
+				else
+					if(count==0)
+					{
+						NotificationChannel channel = new NotificationChannel("Service Start",
+								"Service Start", NotificationManager.IMPORTANCE_HIGH);
+						((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
+
+						Notification notification = new NotificationCompat.Builder(mService, "Service Start")
+//                    .setContentTitle("Apex Land is running.")
+								.setContentText("Upload complete.")
+								.setContentIntent(contentIntent)
+								.setCategory(Notification.CATEGORY_SERVICE).setSmallIcon(com.usai.redant.rautils.R.drawable.ic_launcher_foreground).setPriority(1000).build();
+
+						mService.startForeground(101, notification);
+					}
+
+
+
+//
+				Log.e("Finish_msg", "Application onReceive: ");
+			}
+		}
+	};
+
 	public static void startalarm()
 	{
 
@@ -90,6 +164,21 @@ public class RAImageApplication extends RedantApplication
 		Log.d("_RAIMAGE", "onCreate: RedAntApplication");
 		super.onCreate();
 
+		IntentFilter msgFilter = new IntentFilter();
+		msgFilter.addAction("REDANT.RAImage.UPLOAD_UPDATE_COUNT");
+
+		msgFilter.setPriority(2147483647);
+
+		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+		{
+			registerReceiver(ApplicaitonReceiver, msgFilter,RECEIVER_NOT_EXPORTED);
+		}
+		else
+		{
+			registerReceiver(ApplicaitonReceiver, msgFilter);
+		}
+
+
 //		setInstance(this);
         //instance = this;
 
@@ -159,6 +248,9 @@ public class RAImageApplication extends RedantApplication
 		super.onTerminate();
 
 		unbindService(mServiceConnection);
+
+
+		unregisterReceiver(ApplicaitonReceiver);
 	}
 
 	@Override