package com.hdl.photovoltaic.ui.me;
|
|
|
import android.app.NotificationChannel;
|
import android.app.NotificationManager;
|
import android.app.PendingIntent;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.view.View;
|
|
import androidx.annotation.RequiresApi;
|
import androidx.core.app.NotificationCompat;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.TypeReference;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.linkpm.sdk.user.bean.NewVersionBean;
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.base.CustomBaseActivity;
|
import com.hdl.photovoltaic.config.AppConfigManage;
|
import com.hdl.photovoltaic.databinding.ActivityAsRegardsBinding;
|
import com.hdl.photovoltaic.enums.ShowErrorMode;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.other.HdlAppUpdateLogic;
|
import com.hdl.photovoltaic.other.HdlCommonLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.ui.BPowerStationActivity;
|
import com.hdl.photovoltaic.ui.CPowerStationActivity;
|
import com.hdl.photovoltaic.ui.StartActivity;
|
import com.hdl.photovoltaic.utils.BadgeUtils;
|
import com.hdl.photovoltaic.widget.FlashingBoxDialog;
|
import com.hdl.photovoltaic.widget.apkwgtupload.ApkDownLoadService;
|
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
|
import com.hdl.photovoltaic.widget.UpdateConfirmationCancelDialog;
|
|
import java.util.Map;
|
|
/**
|
* 关于界面(app更新)
|
*/
|
public class AsRegardsActivity extends CustomBaseActivity {
|
|
/**
|
* 版本更新对象
|
*/
|
private NewVersionBean mNewVersionBean = null;
|
|
public ActivityAsRegardsBinding viewBinding;
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityAsRegardsBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
setStatusBarTranslucent();
|
getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
|
//初始化
|
initView();
|
//初始化界面监听器
|
initEvent();
|
//读取数据
|
readData();
|
}
|
|
private void readData() {
|
HdlAppUpdateLogic.getInstance().checkAppVersion(AppConfigManage.getVersionName(), new CloudCallBeak<NewVersionBean>() {
|
@Override
|
public void onSuccess(NewVersionBean newVersionBean) {
|
//初始化对象
|
mNewVersionBean = newVersionBean;
|
if (newVersionBean != null) {
|
//todo 发现新版本,改变UI样式
|
viewBinding.asRegardsRlRightContentTv.setText(R.string.app_discover_new_version);
|
viewBinding.asRegardsRlRightContentTv.setTextColor(getResources().getColor(R.color.text_FFACACAC, null));
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
|
}
|
});
|
//正式环境
|
String content = "https://developer.hdlcontrol.com/AppDownload/HDLPhotovoltaicDownload.html";
|
if (!AppConfigManage.getOnlineServer()) {
|
//测试环境
|
content = "https://developer.hdlcontrol.com/AppDownload/HDLPhotovoltaicDebugDownload.html";
|
}
|
Bitmap bitmap = HdlCommonLogic.getInstance().createQRCodeBitmap(content, 168, 168, "UTF-8", "H", "0", getColor(R.color.text_00000000), Color.WHITE);
|
viewBinding.asRegardsQrCodeIv.setImageBitmap(bitmap);
|
|
}
|
|
|
private void initEvent() {
|
viewBinding.toolbarTopRl.topBackLl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
finish();
|
}
|
});
|
|
viewBinding.asRegardsVersionUpdatingRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
updateTipDialog();
|
}
|
});
|
|
viewBinding.serviceAgreementRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent = new Intent();
|
intent.putExtra("type", WebActivity.ServiceAgreement);
|
intent.setClass(_mActivity, WebActivity.class);
|
startActivity(intent);
|
}
|
|
});
|
viewBinding.privacyPolicyRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent = new Intent();
|
intent.putExtra("type", WebActivity.PrivacyAgreement);
|
intent.setClass(_mActivity, WebActivity.class);
|
startActivity(intent);
|
|
}
|
});
|
viewBinding.contactUsRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
Intent intent = new Intent();
|
intent.setClass(_mActivity, ContactUsActivity.class);
|
startActivity(intent);
|
String json = "{\"expandData\":{\"expantContent\":\"{\\\"createTime\\\":1763705189605,\\\"homeName\\\":\\\"智能模式测试\\\",\\\"isRead\\\":false,\\\"msgId\\\":1991742202645020673,\\\"type\\\":\\\"EVENT\\\",\\\"homeId\\\":1990254883420880898,\\\"status\\\":\\\"UNTREATED\\\"}\",\"homeId\":1990254883420880898,\"messageType\":\"Alarm\"},\"aps\":{\"badge\":2,\"alert\":{\"title\":\"event\",\"body\":\"Battery voltage low\"}}}";
|
//// Gson gson = new Gson();
|
//// Type type = new TypeToken<Map<String, String>>() {
|
//// }.getType();
|
//// Map<String, String> map = gson.fromJson(json, type);
|
// Map<String, String> map = JSONObject.parseObject(json, new TypeReference<Map<String, String>>() {
|
// });
|
// showCustomNotification("模拟标题", "模拟数据", map);
|
//// HdlPushLogic.getInstance().pushDataProcessing("", "", json);
|
}
|
});
|
|
}
|
|
private void initView() {
|
viewBinding.toolbarTopRl.topBarView.setBackgroundColor(getColor(R.color.text_00000000));
|
viewBinding.toolbarTopRl.topTitleTv.setText(R.string.me_regard);
|
viewBinding.toolbarTopRl.topBackLl.setVisibility(View.VISIBLE);
|
String versionsStr = _mActivity.getResources().getString(R.string.app_version_number) + " " + AppConfigManage.getVersionName();
|
viewBinding.asRegardsIconVersionsTv.setText(versionsStr);
|
|
}
|
|
/**
|
* App新版本提示框
|
*/
|
private void updateTipDialog() {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
if (mNewVersionBean == null) {
|
FlashingBoxDialog flashingBoxDialog = new FlashingBoxDialog(_mActivity, 1500);
|
flashingBoxDialog.setContent(getString(R.string.app_new_version));
|
flashingBoxDialog.show();
|
return;
|
}
|
String app_version = getString(R.string.app_version) + ":" + mNewVersionBean.getVersion();
|
int kb = (int) (mNewVersionBean.getSize() / 1024);
|
String mb = (kb / 1024) + "." + ((kb % 1024) + "").charAt(0) + "MB";//mb保留一位
|
String app_package_size = getString(R.string.app_package_size) + ":" + mb;
|
String content1 = app_version + "\n" + app_package_size;
|
String content2 = mNewVersionBean.getRemark();
|
UpdateConfirmationCancelDialog updateConfirmationCancelDialog = new UpdateConfirmationCancelDialog(_mActivity);
|
updateConfirmationCancelDialog.setContent1(content1);
|
updateConfirmationCancelDialog.setContent2(content2);
|
updateConfirmationCancelDialog.show();
|
updateConfirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
Intent intent = new Intent(_mActivity, ApkDownLoadService.class);
|
intent.putExtra("updateUrl", mNewVersionBean.getPackageUrl());
|
intent.putExtra("downLoadName", HdlAppUpdateLogic.getInstance().getApkFileName());
|
intent.putExtra("downLoadType", "0");
|
_mActivity.startService(intent);
|
updateConfirmationCancelDialog.dismiss();
|
|
}
|
});
|
|
updateConfirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
|
@Override
|
public void Cancel() {
|
updateConfirmationCancelDialog.dismiss();
|
}
|
});
|
}
|
}, this, ShowErrorMode.YES);
|
}
|
|
private void showCustomNotification(String title, String message, Map<String, String> data) {
|
NotificationManager notificationManager =
|
(NotificationManager) _mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
|
|
// 创建通知渠道(Android 8.0+)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
createNotificationChannel(notificationManager);
|
}
|
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(_mActivity, "fcm_channel")
|
.setSmallIcon(R.drawable.notification_logo)
|
.setContentTitle(title)
|
.setContentText(message)
|
.setAutoCancel(true)
|
.setNumber(5)
|
.setWhen(System.currentTimeMillis());
|
|
|
// 设置点击意图
|
Intent intent = createNotificationIntent(data);
|
PendingIntent pendingIntent = PendingIntent.getActivity(
|
_mActivity, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
builder.setContentIntent(pendingIntent);
|
|
// 显示通知
|
notificationManager.notify((int) System.currentTimeMillis(), builder.build());
|
}
|
|
private Intent createNotificationIntent(Map<String, String> data) {
|
Intent intent = new Intent(_mActivity, StartActivity.class);
|
intent.putExtra("from_fcm", true);
|
intent.putExtra("pushData", JSON.toJSON(data).toString());
|
// if (data != null) {
|
// for (Map.Entry<String, String> entry : data.entrySet()) {
|
// intent.putExtra(entry.getKey(), entry.getValue());
|
// }
|
// }
|
|
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
return intent;
|
}
|
|
@RequiresApi(api = Build.VERSION_CODES.O)
|
private void createNotificationChannel(NotificationManager notificationManager) {
|
NotificationChannel channel = new NotificationChannel(
|
"fcm_channel",
|
"FCM 消息",
|
NotificationManager.IMPORTANCE_HIGH
|
);
|
channel.setDescription("Firebase Cloud Messaging 通知");
|
// 启用角标
|
channel.setShowBadge(true);
|
notificationManager.createNotificationChannel(channel);
|
BadgeUtils.setBadgeCount(_mActivity, 7);
|
}
|
}
|