From ee1c21b8cb8dafeec22936471a3451d46fd1e7e7 Mon Sep 17 00:00:00 2001
From: pppscn <35696959@qq.com>
Date: Thu, 27 Jan 2022 16:03:00 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9Abark=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E6=96=B0=E5=A2=9E=E6=A0=87=E9=A2=98=E6=A8=A1=E6=9D=BF?=
=?UTF-8?q?=E3=80=81=E6=97=B6=E6=95=88=E6=80=A7=E3=80=81=E5=A3=B0=E9=9F=B3?=
=?UTF-8?q?=E3=80=81=E8=A7=92=E6=A0=87=E3=80=81=E9=93=BE=E6=8E=A5=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E9=A1=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 8 +-
app/src/main/AndroidManifest.xml | 2 +
.../idormy/sms/forwarder/MainActivity.java | 12 +-
.../idormy/sms/forwarder/SenderActivity.java | 66 +++-
.../sms/forwarder/model/vo/BarkSettingVo.java | 37 ++-
.../idormy/sms/forwarder/sender/SendUtil.java | 2 +-
.../sms/forwarder/sender/SenderBarkMsg.java | 57 ++--
.../sms/forwarder/service/BatteryService.java | 92 +++---
.../res/layout/alert_dialog_setview_bark.xml | 302 +++++++++++++++++-
app/src/main/res/values-en/strings.xml | 10 +
app/src/main/res/values/strings.xml | 18 +-
11 files changed, 502 insertions(+), 104 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 2f137bfe..a9910799 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -47,15 +47,15 @@ android {
}
buildTypes {
release {
- minifyEnabled true
- shrinkResources true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ //minifyEnabled true
+ //shrinkResources true
+ //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
//minifyEnabled true
//shrinkResources true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bce4c76d..c2d85abf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -65,6 +65,8 @@
+
+
diff --git a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
index d7bc307c..d9d78cd4 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java
@@ -2,6 +2,7 @@ package com.idormy.sms.forwarder;
import android.annotation.SuppressLint;
import android.app.Dialog;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
@@ -132,7 +133,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
//是否同意隐私协议
if (!MyApplication.allowPrivacyPolicy) {
- dialog();
+ dialog(this);
return;
}
@@ -448,10 +449,9 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
}
/*** 隐私协议授权弹窗*/
- @SuppressLint({"ResourceType", "InflateParams"})
- public void dialog() {
- Dialog dialog = new Dialog(this, R.style.dialog);
- View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.diaolog_privacy_policy, null);
+ public void dialog(Context context) {
+ Dialog dialog = new Dialog(context, R.style.dialog);
+ @SuppressLint("InflateParams") View inflate = LayoutInflater.from(context).inflate(R.layout.diaolog_privacy_policy, null);
TextView succsebtn = inflate.findViewById(R.id.succsebtn);
TextView canclebtn = inflate.findViewById(R.id.caclebtn);
@@ -467,7 +467,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I
dialog.dismiss();
//跳转到HomeActivity
- final Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
+ final Intent intent = context.getPackageManager().getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
index 2ed88cc1..23027d97 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java
@@ -693,9 +693,21 @@ public class SenderActivity extends AppCompatActivity {
}
final ClearEditText editTextBarkServer = view1.findViewById(R.id.editTextBarkServer);
- if (barkSettingVo != null) editTextBarkServer.setText(barkSettingVo.getServer());
+ final EditText editTextBarkTitle = view1.findViewById(R.id.editTextBarkTitle);
final EditText editTextBarkIcon = view1.findViewById(R.id.editTextBarkIcon);
- if (barkSettingVo != null) editTextBarkIcon.setText(barkSettingVo.getIcon());
+ final EditText editTextBarkSound = view1.findViewById(R.id.editTextBarkSound);
+ final EditText editTextBarkBadge = view1.findViewById(R.id.editTextBarkBadge);
+ final EditText editTextBarkUrl = view1.findViewById(R.id.editTextBarkUrl);
+ final RadioGroup radioGroupBarkLevel = view1.findViewById(R.id.radioGroupBarkLevel);
+ if (barkSettingVo != null) {
+ editTextBarkServer.setText(barkSettingVo.getServer());
+ editTextBarkTitle.setText(barkSettingVo.getTitle());
+ editTextBarkIcon.setText(barkSettingVo.getIcon());
+ editTextBarkSound.setText(barkSettingVo.getSound());
+ editTextBarkBadge.setText(barkSettingVo.getBadge());
+ editTextBarkUrl.setText(barkSettingVo.getUrl());
+ radioGroupBarkLevel.check(barkSettingVo.getLevelId());
+ }
Button buttonBarkOk = view1.findViewById(R.id.buttonBarkOk);
Button buttonBarkDel = view1.findViewById(R.id.buttonBarkDel);
@@ -715,14 +727,20 @@ public class SenderActivity extends AppCompatActivity {
return;
}
+ //推送地址
String barkServer = editTextBarkServer.getText().trim();
if (!CommonUtil.checkUrl(barkServer, false)) {
Toast.makeText(SenderActivity.this, R.string.invalid_bark_server, Toast.LENGTH_LONG).show();
return;
}
- String barkIcon = editTextBarkIcon.getText().toString().trim();
- BarkSettingVo barkSettingVoNew = new BarkSettingVo(barkServer, barkIcon);
+ String icon = editTextBarkIcon.getText().toString().trim(); //消息图标
+ String title = editTextBarkTitle.getText().toString().trim(); //标题模板
+ int levelId = radioGroupBarkLevel.getCheckedRadioButtonId(); //时效性
+ String sound = editTextBarkSound.getText().toString().trim(); //声音
+ String badge = editTextBarkBadge.getText().toString().trim(); //角标
+ String url = editTextBarkUrl.getText().toString().trim(); //链接
+ BarkSettingVo barkSettingVoNew = new BarkSettingVo(barkServer, icon, title, levelId, sound, badge, url);
if (isClone || senderModel == null) {
SenderModel newSenderModel = new SenderModel();
newSenderModel.setName(senderName);
@@ -755,11 +773,17 @@ public class SenderActivity extends AppCompatActivity {
buttonBarkTest.setOnClickListener(view -> {
String barkServer = editTextBarkServer.getText().trim();
- String barkIcon = editTextBarkIcon.getText().toString().trim();
+ String icon = editTextBarkIcon.getText().toString().trim(); //消息图标
+ String title = editTextBarkTitle.getText().toString().trim(); //标题模板
+ int levelId = radioGroupBarkLevel.getCheckedRadioButtonId(); //时效性
+ String sound = editTextBarkSound.getText().toString().trim(); //声音
+ String badge = editTextBarkBadge.getText().toString().trim(); //角标
+ String url = editTextBarkUrl.getText().toString().trim(); //链接
+ BarkSettingVo barkSettingVoNew = new BarkSettingVo(barkServer, icon, title, levelId, sound, badge, url);
if (CommonUtil.checkUrl(barkServer, false)) {
try {
SmsVo smsVo = new SmsVo(getString(R.string.test_phone_num), getString(R.string.test_sender_sms), new Date(), getString(R.string.test_sim_info));
- SenderBarkMsg.sendMsg(0, handler, null, barkServer, barkIcon, getString(R.string.test_phone_num), smsVo.getSmsVoForSend(), getString(R.string.test_group_name));
+ SenderBarkMsg.sendMsg(0, handler, null, barkSettingVoNew, smsVo.getTitleForSend(title), smsVo.getSmsVoForSend(), getString(R.string.test_group_name));
} catch (Exception e) {
Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
@@ -768,6 +792,36 @@ public class SenderActivity extends AppCompatActivity {
Toast.makeText(SenderActivity.this, R.string.invalid_bark_server, Toast.LENGTH_LONG).show();
}
});
+
+
+ Button buttonInsertSender = view1.findViewById(R.id.bt_insert_sender);
+ buttonInsertSender.setOnClickListener(view -> {
+ editTextBarkTitle.setFocusable(true);
+ editTextBarkTitle.requestFocus();
+ CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_from));
+ });
+
+ Button buttonInsertExtra = view1.findViewById(R.id.bt_insert_extra);
+ buttonInsertExtra.setOnClickListener(view -> {
+ editTextBarkTitle.setFocusable(true);
+ editTextBarkTitle.requestFocus();
+ CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_card_slot));
+ });
+
+ Button buttonInsertTime = view1.findViewById(R.id.bt_insert_time);
+ buttonInsertTime.setOnClickListener(view -> {
+ editTextBarkTitle.setFocusable(true);
+ editTextBarkTitle.requestFocus();
+ CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_receive_time));
+ });
+
+ Button buttonInsertDeviceName = view1.findViewById(R.id.bt_insert_device_name);
+ buttonInsertDeviceName.setOnClickListener(view -> {
+ editTextBarkTitle.setFocusable(true);
+ editTextBarkTitle.requestFocus();
+ CommonUtil.insertOrReplaceText2Cursor(editTextBarkTitle, getString(R.string.tag_device_name));
+ });
+
}
//webhook
diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java b/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
index df6fd00e..e31b5b4d 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/model/vo/BarkSettingVo.java
@@ -1,20 +1,51 @@
package com.idormy.sms.forwarder.model.vo;
+import com.idormy.sms.forwarder.R;
+
import java.io.Serializable;
import lombok.Data;
@Data
public class BarkSettingVo implements Serializable {
- private String server;
- private String icon;
+ private String server; //推送地址
+ private String icon; //消息图标
+ private String title; //标题模板
+ private String level; //时效性
+ private String sound; //声音
+ private String badge; //角标
+ private String url; //链接
public BarkSettingVo() {
}
- public BarkSettingVo(String server, String icon) {
+ public BarkSettingVo(String server, String icon, String title, int levelId, String sound, String badge, String url) {
this.server = server;
this.icon = icon;
+ this.title = title;
+ this.level = getLevelStr(levelId);
+ this.sound = sound;
+ this.badge = badge;
+ this.url = url;
+ }
+
+ public int getLevelId() {
+ if (level.equals("timeSensitive")) {
+ return R.id.btnBarkLevelTimeSensitive;
+ } else if (level.equals("passive")) {
+ return R.id.btnBarkLevelPassive;
+ } else {
+ return R.id.btnBarkLevelActive;
+ }
}
+ public String getLevelStr(int id) {
+ if (id == R.id.btnBarkLevelTimeSensitive) {
+ return "timeSensitive";
+ } else if (id == R.id.btnBarkLevelPassive) {
+ return "passive";
+ } else {
+ return "active";
+ }
+ }
}
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
index 854b8854..152e63f0 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java
@@ -229,7 +229,7 @@ public class SendUtil {
BarkSettingVo barkSettingVo = JSON.parseObject(senderModel.getJsonSetting(), BarkSettingVo.class);
if (barkSettingVo != null) {
try {
- SenderBarkMsg.sendMsg(logId, handError, retryInterceptor, barkSettingVo.getServer(), barkSettingVo.getIcon(), smsVo.getMobile(), smsVo.getSmsVoForSend(smsTemplate, regexReplace), senderModel.getName());
+ SenderBarkMsg.sendMsg(logId, handError, retryInterceptor, barkSettingVo, smsVo.getTitleForSend(barkSettingVo.getTitle(), regexReplace), smsVo.getSmsVoForSend(smsTemplate, regexReplace), senderModel.getName());
} catch (Exception e) {
LogUtil.updateLog(logId, 0, e.getMessage());
Log.e(TAG, "senderSendMsg: SenderBarkMsg error " + e.getMessage());
diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java
index 83ec7421..95c2e0c3 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderBarkMsg.java
@@ -1,15 +1,16 @@
package com.idormy.sms.forwarder.sender;
import android.os.Handler;
+import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
+import com.idormy.sms.forwarder.model.vo.BarkSettingVo;
import com.idormy.sms.forwarder.utils.Define;
import com.idormy.sms.forwarder.utils.LogUtil;
import java.io.IOException;
-import java.net.URLEncoder;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
@@ -17,31 +18,45 @@ import java.util.regex.Pattern;
import okhttp3.Call;
import okhttp3.Callback;
+import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
+import okhttp3.RequestBody;
import okhttp3.Response;
public class SenderBarkMsg extends SenderBaseMsg {
static final String TAG = "SenderBarkMsg";
- public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, String barkServer, String barkIcon, String from, String content, String groupName) throws Exception {
- Log.i(TAG, "sendMsg barkServer:" + barkServer + " from:" + from + " content:" + content);
+ public static void sendMsg(final long logId, final Handler handError, final RetryIntercepter retryInterceptor, BarkSettingVo barkSettingVo, String title, String content, String groupName) throws Exception {
+ Log.i(TAG, "sendMsg barkServer:" + barkSettingVo.toString() + " title:" + title + " content:" + content);
- if (barkServer == null || barkServer.isEmpty()) {
+ String requestUrl = barkSettingVo.getServer(); //推送地址
+ Log.i(TAG, "requestUrl:" + requestUrl);
+ if (requestUrl == null || requestUrl.isEmpty()) {
return;
}
+ String icon = barkSettingVo.getIcon(); //消息图标
+ String level = barkSettingVo.getLevel(); //时效性
+ String sound = barkSettingVo.getSound(); //声音
+ String badge = barkSettingVo.getBadge(); //角标
+ String url = barkSettingVo.getUrl(); //链接
//特殊处理避免标题重复
- content = content.replaceFirst("^" + from + "(.*)", "").trim();
-
- barkServer += URLEncoder.encode(from, "UTF-8");
- barkServer += "/" + URLEncoder.encode(content, "UTF-8");
- barkServer += "?isArchive=1"; //自动保存
- barkServer += "&group=" + URLEncoder.encode(groupName, "UTF-8"); //增加支持分组
- if (barkIcon != null && !barkIcon.isEmpty()) {
- barkServer += "&icon=" + URLEncoder.encode(barkIcon, "UTF-8"); //指定推送消息图标
- }
+ content = content.replaceFirst("^" + title + "(.*)", "").trim();
+
+ String Content_Type = "application/x-www-form-urlencoded";
+ MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM)
+ .addFormDataPart("title", title)
+ .addFormDataPart("body", content)
+ .addFormDataPart("isArchive", "1")
+ .addFormDataPart("group", groupName);
+
+ if (!TextUtils.isEmpty(icon)) builder.addFormDataPart("icon", icon);
+ if (!TextUtils.isEmpty(level)) builder.addFormDataPart("level", level);
+ if (!TextUtils.isEmpty(sound)) builder.addFormDataPart("sound", sound);
+ if (!TextUtils.isEmpty(badge)) builder.addFormDataPart("badge", badge);
+
int isCode = content.indexOf("验证码");
int isPassword = content.indexOf("动态密码");
int isPassword2 = content.indexOf("短信密码");
@@ -50,25 +65,25 @@ public class SenderBarkMsg extends SenderBaseMsg {
Matcher m = p.matcher(content);
if (m.find()) {
System.out.println(m.group());
- barkServer += "&automaticallyCopy=1©=" + m.group();
+ builder.addFormDataPart("automaticallyCopy", "1");
+ builder.addFormDataPart("copy", m.group());
}
}
- final String requestUrl = barkServer;
- Log.i(TAG, "requestUrl:" + requestUrl);
+ RequestBody body = builder.build();
+ Log.d(TAG, "method = POST, Body = " + body.toString());
- OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
//设置重试拦截器
- if (retryInterceptor != null) builder.addInterceptor(retryInterceptor);
+ if (retryInterceptor != null) clientBuilder.addInterceptor(retryInterceptor);
//设置读取超时时间
- OkHttpClient client = builder
+ OkHttpClient client = clientBuilder
.readTimeout(Define.REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.writeTimeout(Define.REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.connectTimeout(Define.REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS)
.build();
- final Request request = new Request.Builder().url(requestUrl).get().build();
-
+ final Request request = new Request.Builder().url(requestUrl).method("POST", body).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
diff --git a/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java b/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java
index bd618e2c..f0f48ab9 100644
--- a/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java
+++ b/app/src/main/java/com/idormy/sms/forwarder/service/BatteryService.java
@@ -69,51 +69,12 @@ public class BatteryService extends Service {
@SuppressLint("DefaultLocale")
@Override
public void onReceive(Context context, Intent intent) {
- Log.i(TAG, "BatteryReceiver--------------");
- String action = intent.getAction();
- Log.i(TAG, " 0 action:" + action);
- Log.i(TAG, "ACTION_BATTERY_CHANGED");
- int status = intent.getIntExtra("status", 0);
- int health = intent.getIntExtra("health", 0);
- //boolean present = intent.getBooleanExtra("present", false);
- int levelCur = intent.getIntExtra("level", 0);
- int scale = intent.getIntExtra("scale", 0);
- //int icon_small = intent.getIntExtra("icon-small", 0);
- int plugged = intent.getIntExtra("plugged", 0);
- int voltage = intent.getIntExtra("voltage", 0);
- int temperature = intent.getIntExtra("temperature", 0);
- //String technology = intent.getStringExtra("technology");
-
- String msg = "";
- msg += "\n剩余电量:" + levelCur + "%";
-
- if (scale > 0) msg += "\n充满电量:" + scale + "%";
-
- if (voltage > 0) msg += "\n当前电压:" + String.format("%.2f", voltage / 1000F) + "V";
-
- if (temperature > 0) msg += "\n当前温度:" + String.format("%.2f", temperature / 10F) + "℃";
-
- msg += "\n电池状态:" + getStatus(status);
-
- if (health > 0) msg += "\n健康度:" + getHealth(health);
-
- switch (plugged) {
- case BatteryManager.BATTERY_PLUGGED_AC:
- msg += "\n充电器:AC";
- break;
- case BatteryManager.BATTERY_PLUGGED_USB:
- msg += "\n充电器:USB";
- break;
- case BatteryManager.BATTERY_PLUGGED_WIRELESS:
- msg += "\n充电器:无线";
- break;
- }
-
- Log.i(TAG, msg);
//电量发生变化
+ int levelCur = intent.getIntExtra("level", 0);
int levelPre = SettingUtil.getBatteryLevelCurrent();
if (levelCur != levelPre) {
+ String msg = batteryReceiver(intent);
SettingUtil.setBatteryLevelCurrent(levelCur);
int levelMin = SettingUtil.getBatteryLevelAlarmMin();
@@ -135,13 +96,14 @@ public class BatteryService extends Service {
sendMessage(context, msg);
return;
}
-
}
//充电状态改变
+ int status = intent.getIntExtra("status", 0);
if (SettingUtil.getSwitchEnableBatteryReceiver()) {
int oldStatus = SettingUtil.getBatteryStatus();
if (status != oldStatus) {
+ String msg = batteryReceiver(intent);
SettingUtil.setBatteryStatus(status);
msg = "【充电状态】发生变化:" + getStatus(oldStatus) + " → " + getStatus(status) + msg;
sendMessage(context, msg);
@@ -150,6 +112,52 @@ public class BatteryService extends Service {
}
};
+ @SuppressLint("DefaultLocale")
+ private String batteryReceiver(Intent intent) {
+ Log.i(TAG, "BatteryReceiver--------------");
+ String action = intent.getAction();
+ Log.i(TAG, " 0 action:" + action);
+ Log.i(TAG, "ACTION_BATTERY_CHANGED");
+ int status = intent.getIntExtra("status", 0);
+ int health = intent.getIntExtra("health", 0);
+ //boolean present = intent.getBooleanExtra("present", false);
+ int levelCur = intent.getIntExtra("level", 0);
+ int scale = intent.getIntExtra("scale", 0);
+ //int icon_small = intent.getIntExtra("icon-small", 0);
+ int plugged = intent.getIntExtra("plugged", 0);
+ int voltage = intent.getIntExtra("voltage", 0);
+ int temperature = intent.getIntExtra("temperature", 0);
+ //String technology = intent.getStringExtra("technology");
+
+ String msg = "";
+ msg += "\n剩余电量:" + levelCur + "%";
+
+ if (scale > 0) msg += "\n充满电量:" + scale + "%";
+
+ if (voltage > 0) msg += "\n当前电压:" + String.format("%.2f", voltage / 1000F) + "V";
+
+ if (temperature > 0) msg += "\n当前温度:" + String.format("%.2f", temperature / 10F) + "℃";
+
+ msg += "\n电池状态:" + getStatus(status);
+
+ if (health > 0) msg += "\n健康度:" + getHealth(health);
+
+ switch (plugged) {
+ case BatteryManager.BATTERY_PLUGGED_AC:
+ msg += "\n充电器:AC";
+ break;
+ case BatteryManager.BATTERY_PLUGGED_USB:
+ msg += "\n充电器:USB";
+ break;
+ case BatteryManager.BATTERY_PLUGGED_WIRELESS:
+ msg += "\n充电器:无线";
+ break;
+ }
+
+ Log.i(TAG, msg);
+ return msg;
+ }
+
//电池状态
private String getStatus(int status) {
switch (status) {
diff --git a/app/src/main/res/layout/alert_dialog_setview_bark.xml b/app/src/main/res/layout/alert_dialog_setview_bark.xml
index 8450737b..9a0b0248 100644
--- a/app/src/main/res/layout/alert_dialog_setview_bark.xml
+++ b/app/src/main/res/layout/alert_dialog_setview_bark.xml
@@ -50,18 +50,24 @@
android:layout_marginEnd="10dp"
android:orientation="vertical">
-
+ android:orientation="horizontal">
-
+
+
+
+
-
+ android:orientation="horizontal">
-
+
+
+
+
+
+
+
+
+
+
+ android:orientation="horizontal">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Failed to get one-click clone information from sender
Linkman:
Via Number:
+ Sound (optional)
+ e.g. minuet.caf
+ Badge (optional)
+ e.g. 888
+ Url (optional)
+ e.g. https://github.com/pppscn/SmsForwarder
+ Level
+ active
+ timeSensitive
+ passive
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index da091991..ab7767a8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -117,10 +117,10 @@
接收手机号不能为空
添加发送通道
分组名称/状态
- 设置Bark-Server地址
- 示例:https://day.app/XXXXXXXX/
- 设置推送消息图标(可选)
- 示例:http://day.app/assets/images/avatar.jpg
+ Bark-Server
+ 例:https://day.app/XXXXXXXX/
+ 消息图标(可选)
+ 例:http://day.app/assets/images/avatar.jpg
名称/状态
Token(不含链接)
例:https://oapi.dingtalk.com/robot/send?access_token=XXX 中的 XXX
@@ -389,4 +389,14 @@
从发送端获取一键克隆信息失败
联 系 人:
来源号码:
+ 消息声音(可选)
+ 例:minuet.caf
+ 消息角标(可选)
+ 例:888
+ 消息链接(可选)
+ 例:https://github.com/pppscn/SmsForwarder
+ 通知级别
+ 立即亮屏
+ 时效性
+ 仅加列表