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 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 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); } }); } }); } }