From 798128053bb17ed293aa8d5424db3b5ed007d375 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 23 十二月 2024 10:20:57 +0800
Subject: [PATCH] 1.优化订单列表框架,升级为viewPager2,提升性能。 2.添加收到新工单后的红点提醒。 3.修复查询数据为空时报错。 4.优化修改经纬度的流程。 5.修复mqtt的CLIENT_ID一致导致的连接错误。 6.修复收到新工单后点击消息通知栏跳转详情时不更新数据的bug。
---
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java | 2
app/src/main/assets/js/map.js | 8
app/src/main/res/values/strings.xml | 2
app/src/main/res/drawable/ic_red_dot.xml | 7
app/src/main/AndroidManifest.xml | 4
app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java | 112 ++++++++++-
app/src/main/java/com/dayu/pipirrapp/net/LongTypeAdapter.java | 33 +++
app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java | 11
app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java | 28 +-
app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java | 3
app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java | 21 +
/dev/null | 43 ----
app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java | 15
app/src/main/res/layout/activity_main.xml | 29 ++
app/src/main/res/layout/fragment_order.xml | 38 ++-
app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java | 38 +++
app/src/main/java/com/dayu/pipirrapp/adapter/TabAdapter.java | 41 +---
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 32 +-
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java | 108 ++++++----
19 files changed, 373 insertions(+), 202 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3940e11..7f4bbfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -102,7 +102,9 @@
android:launchMode="singleTop">
</activity>
- <activity android:name=".activity.OrderDetailActivity" />
+ <activity android:name=".activity.OrderDetailActivity"
+ android:launchMode="singleTop"
+ />
<activity android:name=".activity.OrderDealActivity" />
<activity android:name=".activity.AddIssueActivity" />
<activity android:name=".activity.IssueListActivity" />
diff --git a/app/src/main/assets/js/map.js b/app/src/main/assets/js/map.js
index 8309b68..46dba57 100644
--- a/app/src/main/assets/js/map.js
+++ b/app/src/main/assets/js/map.js
@@ -172,6 +172,8 @@
if (!isShowCenterPin) {
chageMarkerIcon(data);
showWaterIntakeDetail(id);
+ }else {
+ showToast("褰撳墠姝e湪淇敼閫変腑鍙栨按鍙g殑缁忕含搴︼紝瀹屾垚鎴栭��鍑哄悗鎵嶅彲閫夋嫨鍏朵粬锛�");
}
}
@@ -203,9 +205,9 @@
map.panTo(currentMarker.getLngLat());
}
//璋冨畨鍗撳師鐢�
- function showToast() {
+ function showToast(data) {
// 璋冪敤 JavaScript 鎺ュ彛瀵硅薄鐨勬柟娉�
- window.Android.showToast('Hello, Android!');
+ window.Android.showToast(data);
}
// 鍒ゆ柇涓や釜鍧愭爣鏄惁涓�鑷�
function isEqualsLngLat(data1, data2) {
@@ -328,7 +330,7 @@
isShowCenterPin = true;
map.addEventListener("moveend", mapMoveEnd);
window.Android.refreshCenter(map.getCenter().getLng(), map.getCenter().getLat());
-
+ return true;
}
//鍙栨秷淇敼瀹氫綅
function cancelPin() {
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..11ed339 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/MainActivity.java
@@ -3,6 +3,7 @@
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
+import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@@ -27,7 +28,9 @@
import com.jeremyliao.liveeventbus.LiveEventBus;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* 棣栭〉
@@ -37,6 +40,8 @@
private List<Fragment> fragments = new ArrayList<>();
private long mExitTime;
MqttManager mqttManager;
+ private Map<String, String> workerIddata = new HashMap<>();
+
private enum Tab {
ORDER, MAP, MY
@@ -47,7 +52,6 @@
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
-
setupFragments();
initView();
initTab();
@@ -73,7 +77,33 @@
}
}
});
+ //mq浼犳潵鐨勬秷鎭�
+ LiveEventBus.get(CommonKeyName.MQTTData).observeForever(new Observer<Object>() {
+ @Override
+ public void onChanged(Object o) {
+ workerIddata.put((String) o, (String) o);
+ binding.redDotImg.setVisibility(View.VISIBLE);
+
+ }
+ });
+ 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);
+ }
+ }
+
+ }
+ });
registNetCallBack();
}
@@ -96,11 +126,11 @@
}
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); // 榛樿鏄剧ず鍦板浘椤�
+
}
@Override
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
index 9fad7c6..091139a 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -1,5 +1,7 @@
package com.dayu.pipirrapp.activity;
+import android.app.NotificationManager;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
@@ -27,9 +29,11 @@
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
+import com.dayu.pipirrapp.utils.CommonKeyName;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.dayu.pipirrapp.view.ConfirmDialog;
import com.dayu.pipirrapp.view.TitleBar;
+import com.jeremyliao.liveeventbus.LiveEventBus;
import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
import com.luck.picture.lib.utils.DensityUtil;
@@ -72,13 +76,22 @@
super.onCreate(savedInstanceState);
binding = ActivityOrderDetailBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
-
new TitleBar(this).setTitleText("宸ュ崟璇︽儏").setLeftIco().setLeftIcoListening(v -> OrderDetailActivity.this.finish());
initView();
+ getData(this.getIntent());
}
- void initView() {
- workOrderId = this.getIntent().getStringExtra("workOrderId");
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ getData(intent);
+ }
+
+ private void getData(Intent intent) {
+
+ workOrderId = intent.getStringExtra("workOrderId");
+ NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.cancel(workOrderId.hashCode());
if (this.getIntent().hasExtra("proResultId")) {
binding.orderDealLL.setVisibility(View.VISIBLE);
proResultId = this.getIntent().getStringExtra("proResultId");
@@ -92,10 +105,11 @@
this.finish();
ToastUtil.showToastLong(this, "褰撳墠workOrderId涓虹┖");
}
+ }
+ void initView() {
binding.setItemclidk(OrderDetailActivity.this);
-
mRecyclerView = binding.recyclerView;
FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(manager);
@@ -122,58 +136,56 @@
@Override
public void onNext(BaseResponse<OrderDetailResult> t) {
if (t.isSuccess()) {
- if (t.isSuccess()) {
- if (t.getContent() != null) {
- OrderDetailResult orderDetailResult = t.getContent();
- binding.setData(orderDetailResult);
- if (!TextUtils.isEmpty(t.getContent().getProResultId()) && TextUtils.isEmpty(proResultId)) {
- getHandleData(orderDetailResult.getProResultId());
- }
- ProResultStateId = orderDetailResult.getProResultStateId();
- switch (ProResultStateId) {
- case 0://鏈笂鎶�
- binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black, null));
- binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null));
- binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color, null));
- binding.dealButton.setVisibility(View.VISIBLE);
- break;
- case 1://宸蹭笂鎶�
- binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
- binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null));
- binding.dealButton.setBackgroundColor(getResources().getColor(R.color.delete_color, null));
- binding.dealButton.setVisibility(View.VISIBLE);
- binding.dealButton.setText("鍒犻櫎澶勭悊缁撴灉");
- break;
- case 2://宸插畬鎴�
- binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
- binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_finish_bg, null));
- binding.dealButton.setVisibility(View.GONE);
- break;
- case 3://琚┏鍥�
- binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
- binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null));
- binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color));
- binding.dealButton.setVisibility(View.VISIBLE);
- break;
-
- }
- } else {
- ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
+ LiveEventBus.get(CommonKeyName.RedLotRefresh).post(workOrderId);
+ if (t.getContent() != null) {
+ OrderDetailResult orderDetailResult = t.getContent();
+ binding.setData(orderDetailResult);
+ if (!TextUtils.isEmpty(t.getContent().getProResultId()) && TextUtils.isEmpty(proResultId)) {
+ getHandleData(orderDetailResult.getProResultId());
}
- } else if (t.DATA_NULL.equals(t.getCode())) {
- //宸ュ崟宸茶鍒犻櫎
- ToastUtil.showToast(OrderDetailActivity.this, "璁㈠崟宸茶鍒犻櫎锛�");
- setResult(OrderFragment.RESULT_REFRESH);
- OrderDetailActivity.this.finish();
+ ProResultStateId = orderDetailResult.getProResultStateId();
+ switch (ProResultStateId) {
+ case 0://鏈笂鎶�
+ binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black, null));
+ binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null));
+ binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color, null));
+ binding.dealButton.setVisibility(View.VISIBLE);
+ break;
+ case 1://宸蹭笂鎶�
+ binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+ binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null));
+ binding.dealButton.setBackgroundColor(getResources().getColor(R.color.delete_color, null));
+ binding.dealButton.setVisibility(View.VISIBLE);
+ binding.dealButton.setText("鍒犻櫎澶勭悊缁撴灉");
+ break;
+ case 2://宸插畬鎴�
+ binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+ binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_finish_bg, null));
+ binding.dealButton.setVisibility(View.GONE);
+ break;
+ case 3://琚┏鍥�
+ binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+ binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null));
+ binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color));
+ binding.dealButton.setVisibility(View.VISIBLE);
+ break;
+ }
} else {
-
ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
- OrderDetailActivity.this.finish();
}
+ } else if (t.DATA_NULL.equals(t.getCode())) {
+ //宸ュ崟宸茶鍒犻櫎
+ ToastUtil.showToast(OrderDetailActivity.this, "璁㈠崟宸茶鍒犻櫎锛�");
+ setResult(OrderFragment.RESULT_REFRESH);
+ OrderDetailActivity.this.finish();
+
} else {
+
ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
+ OrderDetailActivity.this.finish();
}
+
}
@Override
diff --git a/app/src/main/java/com/dayu/pipirrapp/adapter/TabAdapter.java b/app/src/main/java/com/dayu/pipirrapp/adapter/TabAdapter.java
index 6d5bd0e..86cd930 100644
--- a/app/src/main/java/com/dayu/pipirrapp/adapter/TabAdapter.java
+++ b/app/src/main/java/com/dayu/pipirrapp/adapter/TabAdapter.java
@@ -1,8 +1,9 @@
package com.dayu.pipirrapp.adapter;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
import java.util.List;
@@ -12,45 +13,25 @@
* Time: 17:53
* 澶囨敞锛�
*/
-public class TabAdapter extends FragmentPagerAdapter {
+public class TabAdapter extends FragmentStateAdapter {
List<Fragment> mFragments;
- public TabAdapter(FragmentManager fm, List<Fragment> fragments) {
- super(fm);
+ public TabAdapter(FragmentActivity fragmentActivity, List<Fragment> fragments) {
+ super(fragmentActivity);
mFragments = fragments;
}
+
+ @NonNull
@Override
- public Fragment getItem(int position) {
- // 杩斿洖涓庣壒瀹氫綅缃浉鍏宠仈鐨� Fragment
- // 鍦ㄨ繖閲屽疄渚嬪寲鍜岃繑鍥炰綘鐨勭墖娈�
+ public Fragment createFragment(int position) {
return mFragments.get(position);
}
@Override
- public int getCount() {
- // 杩斿洖鐗囨鐨勬�绘暟
- return 3; // 鍋囪鏈変笁涓爣绛�
- }
-
- @Override
- public CharSequence getPageTitle(int position) {
- String text = "";
- switch (position) {
- case 0:
- text = "棣栭〉";
- break;
- case 1:
- text = "鍦板浘";
- break;
- case 2:
- text = "鎴戠殑";
- break;
- }
-
- // 杩斿洖鏍囩鐨勬爣棰�
- return text;
+ public int getItemCount() {
+ return mFragments.size();
}
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
index a509e35..e361357 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/InsectionResult.java
@@ -9,23 +9,24 @@
*/
public class InsectionResult {
+ String inspectId;//宸℃id
+ String inspectorId;//宸℃鍛榠d
- long inspectId;//宸℃id
- long inspectorId;//宸℃鍛榠d
-
- public long getInspectId() {
+ public String getInspectId() {
return inspectId;
}
- public void setInspectId(long inspectId) {
+ public void setInspectId(String inspectId) {
this.inspectId = inspectId;
}
- public long getInspectorId() {
+ public String getInspectorId() {
return inspectorId;
}
- public void setInspectorId(long inspectorId) {
+ public void setInspectorId(String inspectorId) {
this.inspectorId = inspectorId;
}
+
+
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index 9266ffb..aff517f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -17,7 +17,6 @@
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
-import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -38,7 +37,6 @@
import com.dayu.pipirrapp.bean.net.MarkerResult;
import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.databinding.FragmentMapBinding;
-import com.dayu.pipirrapp.tool.MyWebViewInterface;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
@@ -46,6 +44,7 @@
import com.dayu.pipirrapp.observer.MapFragmenObserver;
import com.dayu.pipirrapp.tool.InspectionUtils;
import com.dayu.pipirrapp.tool.MarkerUtils;
+import com.dayu.pipirrapp.tool.MyWebViewInterface;
import com.dayu.pipirrapp.utils.CommonData;
import com.dayu.pipirrapp.utils.CommonKeyName;
import com.dayu.pipirrapp.utils.DateUtils;
@@ -339,7 +338,6 @@
MyLog.i(data);
MarkerBean markerBean = markerBeanSet.get(data);
if (markerBean != null) {
- setWebViewParams(false);
getInstakeDetail(markerBean);
}
@@ -398,6 +396,7 @@
try {
if (t.isSuccess()) {
if (t.getContent() != null) {
+ MyLog.d("InspectId:" + String.valueOf(t.getContent().get(0).getInspectId()));
mInspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId()));
InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
}
@@ -429,6 +428,7 @@
lastLatLonBean = latLonBean;
Log.i("chageInspecState", "lat:" + latLonBean.getLatitude() + ",log:" + latLonBean.getLongitude());
InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(latLonBean, mInspectionBean);
+ //娣诲姞宸℃璁板綍鍧愭爣
InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
//鏇存柊鍒板湴鍥�
mWebView.evaluateJavascript("javascript:updateInspectionLocation(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> {
@@ -577,7 +577,7 @@
*/
private void startLocation() {
//鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
- LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
+ LiveEventBus.get(CommonKeyName.locationData).observe(this, locationObserver);
binding.inspectRL.setVisibility(View.VISIBLE);
binding.inspectButton.setVisibility(View.GONE);
binding.inspectPause.setText("鏆傚仠");
@@ -726,17 +726,20 @@
binding.lng.setText(markerBean.getLng());
//淇敼缁忕含搴�
binding.editePoint.setOnClickListener(v -> {
+
mWebView.evaluateJavascript("javascript:showPin(\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\")", value -> {
+ binding.pointRL.setVisibility(View.VISIBLE);
+ binding.pointCenterImg.setVisibility(View.VISIBLE);
+ MyLog.d("showPin>>" + value);
});
- binding.pointRL.setVisibility(View.VISIBLE);
- binding.pointCenterImg.setVisibility(View.VISIBLE);
- setWebViewParams(true);
+
});
//鍙栨秷淇敼缁忕含搴�
binding.pointCancel.setOnClickListener(v -> {
binding.pointCenterImg.setVisibility(View.GONE);
binding.pointRL.setVisibility(View.GONE);
mWebView.evaluateJavascript("javascript:cancelPin()", value -> {
+
});
}
);
@@ -750,14 +753,11 @@
});
}
- private void setWebViewParams(boolean isAbove) {
- RelativeLayout.LayoutParams paramsAnotherView = new RelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.MATCH_PARENT,
- RelativeLayout.LayoutParams.MATCH_PARENT);
- if (isAbove) {
- paramsAnotherView.addRule(RelativeLayout.ABOVE, binding.bottomLL.getId());
- }
- binding.webViewRL.setLayoutParams(paramsAnotherView);
- }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+ }
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
index d2a83e8..92c61ba 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
@@ -1,7 +1,13 @@
package com.dayu.pipirrapp.fragment;
+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.graphics.Typeface;
+import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -12,6 +18,7 @@
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -19,6 +26,7 @@
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.activity.OrderDetailActivity;
import com.dayu.pipirrapp.adapter.OrderAdapter;
+import com.dayu.pipirrapp.bean.net.OrderDetailResult;
import com.dayu.pipirrapp.bean.net.OrderListResult;
import com.dayu.pipirrapp.databinding.FragmentOrderBinding;
import com.dayu.pipirrapp.net.ApiManager;
@@ -26,6 +34,7 @@
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.MyLog;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.jeremyliao.liveeventbus.LiveEventBus;
import com.scwang.smart.refresh.footer.ClassicsFooter;
@@ -33,6 +42,7 @@
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -45,7 +55,7 @@
*/
public class OrderFragment extends BaseFragment {
public static final int RESULT_REFRESH = 1001;
-
+ private static final String CHANNEL_ID = "order_channel";
private final int STATE_DONE = 2;
private final int STATE_UNDONE = 1;
@@ -58,6 +68,11 @@
List<OrderListResult.Data> recordsListDone = new ArrayList<>();
List<OrderListResult.Data> recordsList = new ArrayList<>();
RefreshLayout myRefreshLayout;
+ //鏈�鍚庡埛鏂扮殑鏃堕棿
+ long lastRefreshDate;
+ //鏄剧ず绾㈢偣鐨勬椂闂�
+ long showRedlotDate;
+
private ActivityResultLauncher<Intent> activityResultLauncher =
registerForActivityResult(
@@ -98,7 +113,9 @@
LiveEventBus.get(CommonKeyName.MQTTData).observeForever(new Observer<Object>() {
@Override
public void onChanged(Object o) {
-
+ showRedlotDate = new Date().getTime();
+ binding.redDotImg.setVisibility(View.VISIBLE);
+ getMarkerData((String) o);
}
});
return binding.getRoot();
@@ -124,6 +141,12 @@
myRefreshLayout.setOnRefreshListener(refreshlayout -> {
// refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触
+ lastRefreshDate = new Date().getTime();
+ if (lastRefreshDate > showRedlotDate) {
+ //娑堥櫎绾㈢偣
+ LiveEventBus.get(CommonKeyName.RedLotRefresh).post(true);
+ binding.redDotImg.setVisibility(View.GONE);
+ }
recordsList.clear();
page = 0;
getMarkerData(refreshlayout, true, STATE_UNDONE);
@@ -161,8 +184,20 @@
@Override
- public void onStart() {
- super.onStart();
+ public void onResume() {
+ super.onResume();
+ MyLog.d("OrderFragment>>onResume");
+ if (showRedlotDate > lastRefreshDate) {
+ binding.redDotImg.setVisibility(View.VISIBLE);
+ } else {
+ binding.redDotImg.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ MyLog.d("OrderFragment>>onPause");
}
/**
@@ -239,20 +274,20 @@
void chooseStateView(boolean state) {
if (state) {
- binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color,null));
- binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit,null));
+ binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color, null));
+ binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null));
binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
- binding.manageStateFinish.setTextColor(getResources().getColor(R.color.black,null));
- binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg,null));
+ binding.manageStateFinish.setTextColor(getResources().getColor(R.color.black, null));
+ binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg, null));
binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
binding.refreshLayout.setVisibility(View.VISIBLE);
binding.refreshLayoutDone.setVisibility(View.GONE);
} else {
- binding.manageStateFinish.setTextColor(getResources().getColor(R.color.title_color,null));
- binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit,null));
+ binding.manageStateFinish.setTextColor(getResources().getColor(R.color.title_color, null));
+ binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null));
binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
- binding.manageStateProgress.setTextColor(getResources().getColor(R.color.black,null));
- binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg,null));
+ binding.manageStateProgress.setTextColor(getResources().getColor(R.color.black, null));
+ binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg, null));
binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
binding.refreshLayout.setVisibility(View.GONE);
binding.refreshLayoutDone.setVisibility(View.VISIBLE);
@@ -260,4 +295,57 @@
}
+ /**
+ * 鍒涘缓宸ュ崟鎻愮ず閫氱煡
+ *
+ * @param notifucId
+ * @param data
+ */
+ private void creatOrderNotification(int notifucId, String data, String workOrderId) {
+ NotificationManager notificationManager = (NotificationManager) requireContext().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.getContext(), OrderDetailActivity.class);
+ notificationIntent.putExtra("workOrderId", workOrderId);
+ int requestCode = workOrderId.hashCode(); // 浣跨敤workOrderId鐨勫搱甯岀爜浣滀负requestCode
+ PendingIntent pendingIntent = PendingIntent.getActivity(this.getContext(), requestCode, notificationIntent, PendingIntent.FLAG_MUTABLE);
+ Notification notification = new NotificationCompat.Builder(this.getContext(), CHANNEL_ID)
+ .setContentTitle("鏂板伐鍗�")
+ .setContentText(data)
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentIntent(pendingIntent)
+ .setAutoCancel(true) // 鐐瑰嚮閫氱煡鍚庤嚜鍔ㄦ秷澶�
+ .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)// 浣跨敤榛樿鐨勯煶鏁堝拰闇囧姩
+ .build();
+ notificationManager.notify(notifucId, notification);
+
+ }
+
+ /**
+ * 鑾峰彇宸ュ崟璇︽儏
+ */
+ private void getMarkerData(String workOrderId) {
+ Map<String, Object> params = new HashMap<>();
+ params.put("workOrderId", workOrderId);
+ ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getOneWorkOrder", OrderDetailResult.class, params, new SubscriberListener<BaseResponse<OrderDetailResult>>() {
+ @Override
+ public void onNext(BaseResponse<OrderDetailResult> t) {
+ if (t.isSuccess()) {
+ if (t.isSuccess()) {
+ creatOrderNotification(workOrderId.hashCode(), t.getContent().getTaskType(), workOrderId);
+ }
+ }
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
index d6ba8f9..1dc81ef 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -190,6 +190,8 @@
}
}
+
+
/**
* 鑾峰彇澶╂皵
*
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/LongTypeAdapter.java b/app/src/main/java/com/dayu/pipirrapp/net/LongTypeAdapter.java
new file mode 100644
index 0000000..0d80501
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/net/LongTypeAdapter.java
@@ -0,0 +1,33 @@
+package com.dayu.pipirrapp.net;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+
+import java.lang.reflect.Type;
+
+/**
+ * LongTypeAdapter -
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2024-12-19
+ */
+public class LongTypeAdapter implements JsonDeserializer<String> {
+
+ @Override
+ public String deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+
+ if (json.isJsonPrimitive()) {
+ JsonPrimitive primitive = json.getAsJsonPrimitive();
+ // 濡傛灉鏄暱鏁板瓧鍒欐墜鍔ㄨ浆涓� Long
+ if (primitive.isNumber()) {
+ String numberStr = primitive.getAsString();
+ return Long.parseLong(numberStr) + ""; // 寮哄埗杞崲涓� long 绫诲瀷
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java b/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java
index 4776cc2..3902e86 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java
@@ -1,6 +1,8 @@
package com.dayu.pipirrapp.net;
import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.util.Log;
import androidx.lifecycle.LifecycleOwner;
@@ -22,6 +24,7 @@
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.HashMap;
+import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -36,7 +39,7 @@
// private static final String MQTT_BROKER_URL = "tcp://115.236.153.170:30764"; // 淇敼涓轰綘鐨� broker 鍦板潃
private static final String MQTT_BROKER_URL = "tcp://192.168.10.52:1883";
- private static final String CLIENT_ID = "mqttx_a7a9fe73";
+ private String CLIENT_ID = "mqttx_a7a9fe73";
private static final String TOPIC = "workOrder"; // 璁㈤槄鐨勪富棰�
private MqttClient mqttClient;
@@ -44,10 +47,18 @@
boolean isHasNet = true;
//鏄惁杩炴帴鎴愬姛杩囦竴娆★紝娌℃湁鐨勮瘽鑱旂綉鍚庨噸杩�
boolean isConnet = false;
- private ExecutorService executorService = Executors.newSingleThreadExecutor();
+ private final ExecutorService executorService = Executors.newSingleThreadExecutor();
public MqttManager(Context context, LifecycleOwner lifecycleOwner) {
try {
+ PackageManager manager = context.getPackageManager();
+ PackageInfo info = null;
+ try {
+ info = manager.getPackageInfo(context.getPackageName(), 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ CLIENT_ID = context.getPackageName() + UUID.randomUUID().toString().replace("-", "") + "_" + info;
mqttClient = new MqttClient(MQTT_BROKER_URL, CLIENT_ID, new MemoryPersistence());
connectOptions = new MqttConnectOptions();
connectOptions.setUserName("mqtt_yjy");
@@ -142,10 +153,10 @@
// 鍦ㄥ瓙绾跨▼鏀跺埌娑堟伅鏃剁殑澶勭悊閫昏緫
Log.d("MqttManager", "subscribe鏀跺埌娑堟伅锛�" + new String(message.getPayload()));
//浼犻�扢Q鏀跺埌鐨勪俊鎭�
- HashMap<String, Object> data= MyJsonParser.getMapFromJson(new String(message.getPayload()));
+ HashMap<String, Object> data = MyJsonParser.getMapFromJson(new String(message.getPayload()));
//鍒ゆ柇鏄惁鏄綋鍓嶇敤鎴�
- if (data.get("inspectorId").equals(MyApplication.myApplication.userId)){
- LiveEventBus.get(CommonKeyName.MQTTData).post(message.getPayload());
+ if (data.get("inspectorId").equals(MyApplication.myApplication.userId)) {
+ LiveEventBus.get(CommonKeyName.MQTTData).post(data.get("workOrderId"));
}
});
diff --git a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
index bc4474c..ec2db90 100644
--- a/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
+++ b/app/src/main/java/com/dayu/pipirrapp/net/RetrofitClient.java
@@ -1,7 +1,6 @@
package com.dayu.pipirrapp.net;
-
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
@@ -37,11 +36,17 @@
//娣诲姞鏃ュ織鎷︽埅鍣�
//娣诲姞鏁版嵁璇锋眰缁熶竴澶勭悊鎷︽埅鍣�
// if (BuildConfig.DEBUG) {
- builder.addInterceptor(loggingInterceptor);
+ builder.addInterceptor(loggingInterceptor);
// }
OkHttpClient client = builder.build();
-
+// // 鍒涘缓GsonBuilder骞惰缃暱鏁村瀷搴忓垪鍖栫瓥鐣ヤ负瀛楃涓�
+// GsonBuilder gsonBuilder = new GsonBuilder();
+// gsonBuilder.registerTypeAdapter(String.class, new LongTypeAdapter());
+// gsonBuilder.registerTypeAdapter(long.class, new LongTypeAdapter()); // 濡傛灉鏄� long 绫诲瀷鐨勫熀鏈暟鎹被鍨嬶紝涔熼渶瑕佹敞鍐�
+// gsonBuilder.setLongSerializationPolicy(LongSerializationPolicy.STRING);
+//// 鍒涘缓Gson瀹炰緥
+// Gson gson = gsonBuilder.create();
retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
index 0bc4fc2..645aff0 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -142,19 +142,21 @@
.subscribe(strings -> {
//寰幆鏌ヨ鎵�鏈塱d
for (String data : strings) {
- DaoSingleton.getAsynchInstance(context).inspectionDao().findBymInspectId(data)
- .subscribeOn(Schedulers.io())
- .observeOn(Schedulers.io())
- .subscribe(inspectionBeans -> {
- DaoSingleton.getAsynchInstance(context).inspectionLocationDao().findByNoPostAndInspectId(data)
- .subscribeOn(Schedulers.io())
- .observeOn(Schedulers.io())
- .subscribe(inspectionLocationBeans -> {
- if (inspectionLocationBeans != null && inspectionLocationBeans.size() > 0) {
- postInspectionData(context, inspectionBeans, inspectionLocationBeans);
- }
- });
- });
+ if (!TextUtils.isEmpty(data)) {
+ DaoSingleton.getAsynchInstance(context).inspectionDao().findBymInspectId(data)
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .subscribe(inspectionBeans -> {
+ DaoSingleton.getAsynchInstance(context).inspectionLocationDao().findByNoPostAndInspectId(data)
+ .subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io())
+ .subscribe(inspectionLocationBeans -> {
+ if (inspectionLocationBeans != null && inspectionLocationBeans.size() > 0) {
+ postInspectionData(context, inspectionBeans, inspectionLocationBeans);
+ }
+ });
+ });
+ }
}
});
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java b/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java
index b4a099b..fc25acb 100644
--- a/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/CommonKeyName.java
@@ -23,4 +23,7 @@
public final static String NetworkCallback = "NetworkCallback";
+ //鍒锋柊鏂板伐鍗曞皬绾㈢偣
+ public final static String RedLotRefresh="RedLotRefresh";
+
}
diff --git a/app/src/main/java/com/dayu/pipirrapp/view/MyViewPager.java b/app/src/main/java/com/dayu/pipirrapp/view/MyViewPager.java
deleted file mode 100644
index 61baf5c..0000000
--- a/app/src/main/java/com/dayu/pipirrapp/view/MyViewPager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.dayu.pipirrapp.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-import androidx.annotation.NonNull;
-import androidx.viewpager.widget.ViewPager;
-
-/**
- * author: zuo
- * Date: 2023/12/21
- * Time: 13:47
- * 澶囨敞锛�
- */
-public class MyViewPager extends ViewPager {
- /**
- * 鏄惁鍙互宸﹀彸婊戝姩
- */
- private boolean isPagingEnabled = true;
-
- public MyViewPager(@NonNull Context context) {
- super(context);
- }
-
- public MyViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- return isPagingEnabled && super.onTouchEvent(event);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent event) {
- return isPagingEnabled && super.onInterceptTouchEvent(event);
- }
-
- public void setPagingEnabled(boolean pagingEnabled) {
- isPagingEnabled = pagingEnabled;
- }
-}
diff --git a/app/src/main/res/drawable/ic_red_dot.xml b/app/src/main/res/drawable/ic_red_dot.xml
new file mode 100644
index 0000000..1551d9a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_red_dot.xml
@@ -0,0 +1,7 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid android:color="#FF0000" />
+ <size
+ android:width="5dp"
+ android:height="5dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 0bbf29c..053bfdd 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -7,7 +7,7 @@
tools:context="com.dayu.pipirrapp.activity.MainActivity">
- <com.dayu.pipirrapp.view.MyViewPager
+ <androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -33,12 +33,27 @@
android:gravity="center"
android:orientation="vertical">
- <ImageView
- android:id="@+id/orderImg"
- android:layout_width="wrap_content"
- android:layout_height="25dp"
- android:layout_marginTop="8dp"
- android:src="@drawable/bottom_order_black" />
+ <RelativeLayout
+ android:layout_width="25dp"
+ android:layout_height="33dp">
+
+ <ImageView
+ android:id="@+id/orderImg"
+ android:layout_width="wrap_content"
+ android:layout_height="25dp"
+ android:layout_marginTop="8dp"
+ android:src="@drawable/bottom_order_black" />
+
+ <ImageView
+ android:id="@+id/red_dot_img"
+ android:layout_width="9dp"
+ android:layout_height="9dp"
+ android:layout_alignParentRight="true"
+ android:layout_marginTop="8dp"
+ android:src="@drawable/ic_red_dot"
+ android:visibility="gone" />
+
+ </RelativeLayout>
<TextView
android:id="@+id/orderText"
diff --git a/app/src/main/res/layout/fragment_order.xml b/app/src/main/res/layout/fragment_order.xml
index ede1ea9..a4bb63f 100644
--- a/app/src/main/res/layout/fragment_order.xml
+++ b/app/src/main/res/layout/fragment_order.xml
@@ -148,22 +148,40 @@
android:background="@drawable/top_state_bg"
android:orientation="horizontal">
- <TextView
- android:id="@+id/manage_state_progress"
- android:layout_width="wrap_content"
+ <RelativeLayout
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
- android:background="@drawable/ic_choose_bg_whit"
- android:gravity="center"
- android:text="鏈畬鎴�"
- android:textColor="@color/title_color"
- android:textSize="@dimen/top_state_text_size"
- android:textStyle="bold" />
+ android:background="@drawable/ic_choose_bg_whit">
+
+ <TextView
+ android:id="@+id/manage_state_progress"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:gravity="center"
+ android:text="鏈畬鎴�"
+ android:textColor="@color/title_color"
+ android:textSize="@dimen/top_state_text_size"
+ android:textStyle="bold" />
+
+ <ImageView
+ android:id="@+id/red_dot_img"
+ android:layout_width="9dp"
+ android:layout_height="9dp"
+ android:layout_centerVertical="true"
+ android:layout_marginLeft="5dp"
+ android:layout_toEndOf="@+id/manage_state_progress"
+ android:src="@drawable/ic_red_dot"
+ android:visibility="gone" />
+ </RelativeLayout>
+
<TextView
android:id="@+id/manage_state_finish"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3991f8e..713293c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,5 @@
<resources>
<string name="app_name">宸℃绯荤粺</string>
+ <string name="channel_name">娑堟伅</string>
+ <string name="channel_description">宸ュ崟鎻愰啋</string>
</resources>
\ No newline at end of file
--
Gitblit v1.8.0