From 50f9b82ac862652e88444d727a32e0da1d824e9e Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 13 一月 2025 15:57:06 +0800 Subject: [PATCH] 1.分水房相关 2.删除极光推送相关配置 3.优化图片显示相关 --- app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 106 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java index fd57d07..f421db1 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java @@ -1,11 +1,22 @@ package com.dayu.pipirrapp.activity; +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.os.Build; import android.os.Bundle; +import android.os.VibrationEffect; +import android.os.Vibrator; import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.NotificationCompat; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; @@ -14,6 +25,7 @@ import com.dayu.pipirrapp.R; import com.dayu.pipirrapp.adapter.TabAdapter; import com.dayu.pipirrapp.bean.db.TagBean; +import com.dayu.pipirrapp.bean.net.OrderDetailResult; import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.ActivityMainBinding; import com.dayu.pipirrapp.fragment.MapFragment; @@ -27,16 +39,21 @@ import com.jeremyliao.liveeventbus.LiveEventBus; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 棣栭〉 */ public class MainActivity extends AppCompatActivity { + private static final String CHANNEL_ID = "order_channel"; private ActivityMainBinding binding; private List<Fragment> fragments = new ArrayList<>(); private long mExitTime; MqttManager mqttManager; + public volatile static Map<String, String> workerIddata = new HashMap<>(); + private enum Tab { ORDER, MAP, MY @@ -47,7 +64,6 @@ super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); - setupFragments(); initView(); initTab(); @@ -73,7 +89,36 @@ } } }); + LiveEventBus.get(CommonKeyName.RedLotRefresh).observeForever(new Observer<Object>() { + @Override + public void onChanged(Object o) { + if (o instanceof Boolean) { + if ((boolean) o) { + binding.redDotImg.setVisibility(View.GONE); + workerIddata.clear(); + } + } else if (o instanceof String) { + workerIddata.remove(o); + if (workerIddata.size() == 0) { + binding.redDotImg.setVisibility(View.GONE); + } + } + } + }); + LiveEventBus.get(CommonKeyName.CreateNotification).observeForever(new Observer<Object>() { + @Override + public void onChanged(Object o) { + if (o instanceof OrderDetailResult) { + OrderDetailResult orderDetailResult = ((OrderDetailResult) o); + workerIddata.put(orderDetailResult.getWorkOrderId(), orderDetailResult.getWorkOrderId()); + binding.redDotImg.setVisibility(View.VISIBLE); + creatOrderNotification(orderDetailResult.getWorkOrderId().hashCode(), orderDetailResult.getTaskType(), orderDetailResult.getWorkOrderId()); + } + + + } + }); registNetCallBack(); } @@ -96,11 +141,12 @@ } private void initTab() { - TabAdapter adapter = new TabAdapter(getSupportFragmentManager(), fragments); + TabAdapter adapter = new TabAdapter(this, fragments); binding.viewPager.setAdapter(adapter); - binding.viewPager.setPagingEnabled(false); + binding.viewPager.setCurrentItem(1, false); // 榛樿鏄剧ず鍦板浘椤� binding.viewPager.setOffscreenPageLimit(fragments.size()); - binding.viewPager.setCurrentItem(1); // 榛樿鏄剧ず鍦板浘椤� + binding.viewPager.setUserInputEnabled(false); + } @Override @@ -152,7 +198,12 @@ * 鏇存柊鏌愪釜 Tab 鐨� UI 鐘舵�� */ private void updateTabUI(int position, int iconResId, int textColorResId) { - binding.viewPager.setCurrentItem(position); + if (position == 1) { + binding.viewPager.setCurrentItem(position, true); + } else { + binding.viewPager.setCurrentItem(position, false); + } + switch (position) { case 0: binding.orderImg.setImageDrawable(ContextCompat.getDrawable(this, iconResId)); @@ -192,5 +243,55 @@ NetUtils.unregisterReceiver(this); } + /** + * 鍒涘缓宸ュ崟鎻愮ず閫氱煡 + * + * @param notifucId + * @param data + */ + private void creatOrderNotification(int notifucId, String data, String workOrderId) { + NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + // 鍒涘缓NotificationChannel锛堜粎閽堝Android O鍙婁互涓婄増鏈級 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + CharSequence name = getString(R.string.channel_name); + String description = getString(R.string.channel_description); + int importance = NotificationManager.IMPORTANCE_DEFAULT; + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); + channel.setDescription(description); + // 娉ㄥ唽閫氶亾 + notificationManager.createNotificationChannel(channel); + } + + Intent notificationIntent = new Intent(this, OrderDetailActivity.class); + notificationIntent.putExtra("workOrderId", workOrderId); + int requestCode = workOrderId.hashCode(); // 浣跨敤workOrderId鐨勫搱甯岀爜浣滀负requestCode + PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, notificationIntent, PendingIntent.FLAG_MUTABLE); + + // 鍒涘缓闇囧姩鏁堟灉 + // 鑾峰彇 Vibrator 绯荤粺鏈嶅姟 + Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + long[] vibrationPattern = {0, 1000, 500, 1000}; // 闇囧姩妯″紡锛氱瓑寰�0ms锛岄渿鍔�1000ms锛岀瓑寰�500ms锛岄渿鍔�1000ms + int repeat = -1; // 涓嶉噸澶� + + // 瀵逛簬Android 26鍙婁互涓婄増鏈紝浣跨敤VibrationEffect + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + VibrationEffect effect = VibrationEffect.createWaveform(vibrationPattern, repeat); + vibrator.vibrate(effect); + } else { + // 瀵逛簬Android 25鍙婁互涓嬬増鏈紝浣跨敤鏃х殑vibrate鏂规硶 + vibrator.vibrate(vibrationPattern, repeat); + } + Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID) + .setContentTitle("鏂板伐鍗�") + .setContentText(data) + .setSmallIcon(R.mipmap.ic_launcher) + .setContentIntent(pendingIntent) + .setAutoCancel(true) // 鐐瑰嚮閫氱煡鍚庤嚜鍔ㄦ秷澶� + .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)// 浣跨敤榛樿鐨勯煶鏁堝拰闇囧姩 + .setVibrate(vibrationPattern) + .build(); + notificationManager.notify(notifucId, notification); + + } } -- Gitblit v1.8.0