package com.hdl.photovoltaic.ui.test;
|
|
|
import android.content.Intent;
|
import android.net.Uri;
|
import android.os.Bundle;
|
import android.text.Spannable;
|
import android.text.SpannableStringBuilder;
|
import android.text.TextUtils;
|
import android.text.style.ForegroundColorSpan;
|
import android.view.View;
|
|
import androidx.core.content.FileProvider;
|
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.base.CustomBaseActivity;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.databinding.ActivityTestLogBinding;
|
import com.hdl.photovoltaic.other.HdlFileLogic;
|
import com.hdl.photovoltaic.other.HdlLogLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
|
import com.hdl.photovoltaic.widget.ListStaticDialog;
|
|
import java.io.File;
|
import java.util.IdentityHashMap;
|
import java.util.Map;
|
|
public class TestLogActivity extends CustomBaseActivity {
|
|
private ActivityTestLogBinding viewBinding;
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityTestLogBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
|
initView();
|
initEvent();
|
|
|
}
|
|
/**
|
* 监听器初始化
|
*/
|
private void initEvent() {
|
viewBinding.topBackLl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
finish();
|
}
|
});
|
//清除日志
|
viewBinding.topClearLl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
|
ListStaticDialog listDialog = new ListStaticDialog(_mActivity);
|
listDialog.setLineContent1("清除【当前住宅】的本地日志");
|
listDialog.setLineContent2("清除【所有住宅】的本地日志");
|
listDialog.show();
|
listDialog.setOnHDLChinaOnListener(new ListStaticDialog.onHDLChinaListener() {
|
@Override
|
public void HDLChina() {
|
getDialog(1, listDialog);
|
|
}
|
});
|
listDialog.setOnHDLBahrainListener(new ListStaticDialog.onHDLBahrainListener() {
|
@Override
|
public void HDLBahrain() {
|
getDialog(2, listDialog);
|
}
|
});
|
|
|
}
|
});
|
|
viewBinding.clickToBottomTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
// int offset = (viewBinding.sv.getChildAt(0).getMeasuredHeight() - viewBinding.sv.getHeight()); // 计算需要滚动的距离
|
// if (offset > 0) {
|
// viewBinding.sv.smoothScrollTo(0, offset); // 平滑地滚动到底部位置
|
// } else {
|
// viewBinding.sv.fullScroll(View.FOCUS_DOWN); // 直接滚动到最后一行
|
// }
|
viewBinding.sv.fullScroll(View.FOCUS_DOWN); // 直接滚动到最后一行
|
}
|
});
|
//上传日志到云端上
|
viewBinding.uploadingLogTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
//todo 需要调云端的接口
|
// HdlThreadLogic.toast(_mActivity, "还没有支持上传日志.");
|
|
// Intent sendIntent = new Intent();
|
// sendIntent.setAction(Intent.ACTION_SEND);
|
// sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
|
// sendIntent.setType("text/plain");
|
// startActivity(Intent.createChooser(sendIntent, "Share via"));
|
try {
|
// 在Activity中创建分享Intent
|
Intent shareIntent = new Intent(Intent.ACTION_SEND);
|
shareIntent.setType("application/pdf"); // 根据要分享的文件类型设置MIME类型
|
File file = new File(HdlFileLogic.getInstance().getLogFileNamePath()); // 指定文件路径
|
Uri fileUri = FileProvider.getUriForFile(_mActivity, "com.hdl.photovoltaic.dc.fileprovider", file);
|
shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
|
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
startActivity(Intent.createChooser(shareIntent, "Share file using"));
|
} catch (Exception ignored) {
|
HdlThreadLogic.toast(_mActivity, "分享失败");
|
}
|
}
|
});
|
|
}
|
|
/**
|
* 清除住宅日志提示框
|
*
|
* @param value 大于1表示清除所有住宅日志
|
*/
|
private void getDialog(int value, ListStaticDialog listDialog) {
|
ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(_mActivity);
|
dialog.setTitle("提示");
|
if (value > 1) {
|
dialog.setContent("是否要清空【所有住宅】本地日志?");
|
} else {
|
dialog.setContent("是否要清空【当前住宅】本地日志?");
|
}
|
dialog.show();
|
dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
|
@Override
|
public void Cancel() {
|
dialog.dismiss();
|
}
|
});
|
dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
|
@Override
|
public void Confirm() {
|
listDialog.dismiss();
|
dialog.dismiss();
|
if (value > 1) {
|
HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentUserRootPath());
|
} else {
|
HdlFileLogic.getInstance().deleteFile(HdlFileLogic.getInstance().getLogFileNamePath());
|
}
|
viewBinding.replyContentTv.setText("");
|
}
|
});
|
|
}
|
|
/**
|
* 初始化界面
|
*/
|
private void initView() {
|
String homeId = "测试住宅ID=" + UserConfigManage.getInstance().getHomeId();
|
String homeName = "测试住宅名称=" + UserConfigManage.getInstance().getHomeName();
|
viewBinding.homeIdTv.setText(homeId);
|
viewBinding.homeNameTv.setText(homeName);
|
showLoading();
|
HdlThreadLogic.runSubThread(new Runnable() {
|
@Override
|
public void run() {
|
// HdlFileLogic.getInstance().delFileLien(HdlFileLogic.getInstance().getLogFileNamePath(), 2);
|
String content = HdlLogLogic.readLog();
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
hideLoading();
|
if (TextUtils.isEmpty(content)) {
|
return;
|
}
|
int startIndex = 0;
|
int endIndex;
|
Map<Integer, Integer> map = new IdentityHashMap<>();
|
String[] newArray = content.split("\r\n");
|
// String[] newArray = new String[oldArray.length];//倒序
|
// for (int i = oldArray.length - 1, j = 0; i >= 0; i--, j++) {
|
// newArray[j] = oldArray[i];
|
// }
|
// StringBuilder stringBuilder = new StringBuilder();
|
// for (String s : newArray) {
|
// stringBuilder.append(s).append("\r\n");
|
// }
|
// content = stringBuilder.toString();
|
for (int i = 0; i < newArray.length; i++) {
|
if (i == 0) {
|
endIndex = newArray[i].indexOf("s%");
|
} else {
|
startIndex = 2 + startIndex + newArray[i - 1].length();//2换行符长度
|
endIndex = 2 + startIndex + newArray[i].indexOf("s%");//2换行符长度
|
}
|
map.put(startIndex, endIndex);
|
}
|
SpannableStringBuilder spannable = new SpannableStringBuilder(content.replace("s%", " "));//注意s%是两个字符,所以占两位
|
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
|
int start = entry.getKey();
|
int end = entry.getValue();
|
//设置时间体验是另一种颜色
|
spannable.setSpan(new ForegroundColorSpan(getColor(R.color.text_245EC3)), start, end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
}
|
viewBinding.replyContentTv.setText(spannable);
|
|
}
|
});
|
}
|
});
|
|
}
|
}
|