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"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +