From 43922b28cec86c7e36f669be55def35252b932d5 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Fri, 21 Jan 2022 15:37:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=B8=83=E5=B1=80&=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idormy/sms/forwarder/MainActivity.java | 20 +- .../idormy/sms/forwarder/RuleActivity.java | 17 +- .../idormy/sms/forwarder/SenderActivity.java | 17 +- .../idormy/sms/forwarder/SettingActivity.java | 22 ++ .../sms/forwarder/adapter/RuleAdapter.java | 7 + .../idormy/sms/forwarder/model/RuleModel.java | 24 ++- .../sms/forwarder/sender/SenderUtil.java | 31 ++- .../idormy/sms/forwarder/utils/LogUtil.java | 35 ++++ .../idormy/sms/forwarder/utils/RuleUtil.java | 36 ++++ .../idormy/sms/forwarder/view/StepBar.java | 198 +++++++++++++----- app/src/main/res/drawable/ic_sim.xml | 10 + app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/activity_rule.xml | 4 +- app/src/main/res/layout/activity_sender.xml | 4 +- app/src/main/res/layout/activity_setting.xml | 38 ++-- .../res/layout/alert_dialog_setview_rule.xml | 1 + .../layout/alert_dialog_setview_rule_app.xml | 1 + .../layout/alert_dialog_setview_rule_call.xml | 1 + app/src/main/res/layout/item_log.xml | 10 +- app/src/main/res/layout/item_menu.xml | 7 +- app/src/main/res/layout/item_rule.xml | 55 ++++- app/src/main/res/layout/item_sender.xml | 9 +- app/src/main/res/layout/step_bar.xml | 19 +- app/src/main/res/values-en/strings.xml | 17 ++ app/src/main/res/values-en/styles.xml | 4 + app/src/main/res/values/strings.xml | 17 ++ app/src/main/res/values/styles.xml | 4 + 27 files changed, 494 insertions(+), 118 deletions(-) create mode 100644 app/src/main/res/drawable/ic_sim.xml 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 9bed0314..2c5a51e7 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/MainActivity.java @@ -30,6 +30,7 @@ import com.idormy.sms.forwarder.adapter.LogAdapter; import com.idormy.sms.forwarder.model.vo.LogVo; import com.idormy.sms.forwarder.sender.HttpServer; import com.idormy.sms.forwarder.sender.SendUtil; +import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.service.BatteryService; import com.idormy.sms.forwarder.service.FrontService; @@ -39,10 +40,12 @@ import com.idormy.sms.forwarder.utils.KeepAliveUtils; import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.NetUtil; import com.idormy.sms.forwarder.utils.PhoneUtils; +import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.utils.SharedPreferencesHelper; import com.idormy.sms.forwarder.utils.SmsUtil; import com.idormy.sms.forwarder.utils.TimeUtil; +import com.idormy.sms.forwarder.view.StepBar; import com.umeng.analytics.MobclickAgent; import com.umeng.commonsdk.UMConfigure; @@ -66,8 +69,6 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I @Override protected void onCreate(Bundle savedInstanceState) { - - LogUtil.init(this); Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); @@ -80,6 +81,10 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I SmsUtil.init(this); NetUtil.init(this); + LogUtil.init(this); + RuleUtil.init(this); + SenderUtil.init(this); + //前台服务 try { serviceIntent = new Intent(MainActivity.this, FrontService.class); @@ -207,6 +212,14 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I builder.create().show(); return true; }); + + //步骤完成状态校验 + boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify(); + boolean checkStep2 = SenderUtil.countSender("1", null) > 0; + boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0; + boolean checkStep4 = LogUtil.countLog("2", null, null) > 0; + StepBar stepBar = findViewById(R.id.stepBar); + stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4); } private int getTypeCheckId(String currentType) { @@ -267,6 +280,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I @Override protected void onPause() { + overridePendingTransition(0, 0); super.onPause(); MobclickAgent.onPageEnd(TAG); MobclickAgent.onPause(this); @@ -355,7 +369,7 @@ public class MainActivity extends AppCompatActivity implements RefreshListView.I return true; }); //对于发送失败的消息添加重发按钮 - if (logVo.getForwardStatus() == 0) { + if (logVo.getForwardStatus() != 2) { builder.setPositiveButton("重发消息", (dialog, which) -> { Toast.makeText(MainActivity.this, R.string.resend_toast, Toast.LENGTH_SHORT).show(); SendUtil.resendMsgByLog(MainActivity.this, handler, logVo); diff --git a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java index 7ca29a7d..f3e4d22b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/RuleActivity.java @@ -31,8 +31,10 @@ import com.idormy.sms.forwarder.model.vo.SmsVo; import com.idormy.sms.forwarder.sender.SendUtil; import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.LogUtil; import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.SettingUtil; +import com.idormy.sms.forwarder.view.StepBar; import com.umeng.analytics.MobclickAgent; import java.util.ArrayList; @@ -65,8 +67,10 @@ public class RuleActivity extends AppCompatActivity { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_rule); - RuleUtil.init(RuleActivity.this); - SenderUtil.init(RuleActivity.this); + + LogUtil.init(this); + RuleUtil.init(this); + SenderUtil.init(this); } @Override @@ -135,6 +139,14 @@ public class RuleActivity extends AppCompatActivity { CommonUtil.calcMarginBottom(this, help_tip, btnFloat, listView, null); //添加规则 btnFloat.setOnClickListener(v -> setRule(null, false)); + + //步骤完成状态校验 + boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify(); + boolean checkStep2 = SenderUtil.countSender("1", null) > 0; + boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0; + boolean checkStep4 = LogUtil.countLog("2", null, null) > 0; + StepBar stepBar = findViewById(R.id.stepBar); + stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4); } private int getTypeCheckId(String curType) { @@ -597,6 +609,7 @@ public class RuleActivity extends AppCompatActivity { @Override protected void onPause() { + overridePendingTransition(0, 0); super.onPause(); MobclickAgent.onPageEnd(TAG); MobclickAgent.onPause(this); 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 97cde9eb..6b70d70e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -68,7 +68,11 @@ import com.idormy.sms.forwarder.sender.SenderTelegramMsg; import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.sender.SenderWebNotifyMsg; import com.idormy.sms.forwarder.utils.CommonUtil; +import com.idormy.sms.forwarder.utils.LogUtil; +import com.idormy.sms.forwarder.utils.RuleUtil; +import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.view.ClearEditText; +import com.idormy.sms.forwarder.view.StepBar; import com.umeng.analytics.MobclickAgent; import java.net.Proxy; @@ -102,7 +106,10 @@ public class SenderActivity extends AppCompatActivity { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_sender); - SenderUtil.init(SenderActivity.this); + + LogUtil.init(this); + RuleUtil.init(this); + SenderUtil.init(this); } @Override @@ -309,6 +316,13 @@ public class SenderActivity extends AppCompatActivity { }); }); + //步骤完成状态校验 + boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify(); + boolean checkStep2 = SenderUtil.countSender("1", null) > 0; + boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0; + boolean checkStep4 = LogUtil.countLog("2", null, null) > 0; + StepBar stepBar = findViewById(R.id.stepBar); + stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4); } @Override @@ -326,6 +340,7 @@ public class SenderActivity extends AppCompatActivity { @Override protected void onPause() { + overridePendingTransition(0, 0); super.onPause(); MobclickAgent.onPageEnd(TAG); MobclickAgent.onPause(this); diff --git a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java index e5e31baf..6f931d10 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SettingActivity.java @@ -31,14 +31,18 @@ import androidx.appcompat.app.AppCompatActivity; import com.idormy.sms.forwarder.receiver.RebootBroadcastReceiver; import com.idormy.sms.forwarder.sender.HttpServer; +import com.idormy.sms.forwarder.sender.SenderUtil; import com.idormy.sms.forwarder.sender.SmsHubApiTask; import com.idormy.sms.forwarder.utils.CommonUtil; import com.idormy.sms.forwarder.utils.DbHelper; import com.idormy.sms.forwarder.utils.Define; import com.idormy.sms.forwarder.utils.HttpUtil; import com.idormy.sms.forwarder.utils.KeepAliveUtils; +import com.idormy.sms.forwarder.utils.LogUtil; +import com.idormy.sms.forwarder.utils.RuleUtil; import com.idormy.sms.forwarder.utils.SettingUtil; import com.idormy.sms.forwarder.view.ClearEditText; +import com.idormy.sms.forwarder.view.StepBar; import java.util.Arrays; import java.util.HashMap; @@ -57,6 +61,10 @@ public class SettingActivity extends AppCompatActivity { super.onCreate(savedInstanceState); context = SettingActivity.this; setContentView(R.layout.activity_setting); + + LogUtil.init(this); + RuleUtil.init(this); + SenderUtil.init(this); } @SuppressLint("NewApi") @@ -117,6 +125,20 @@ public class SettingActivity extends AppCompatActivity { //帮助提示 SwitchHelpTip(findViewById(R.id.switch_help_tip)); + + //步骤完成状态校验 + boolean checkStep1 = SettingUtil.getSwitchEnableSms() || SettingUtil.getSwitchEnablePhone() || SettingUtil.getSwitchEnableAppNotify(); + boolean checkStep2 = SenderUtil.countSender("1", null) > 0; + boolean checkStep3 = RuleUtil.countRule("1", null, null) > 0; + boolean checkStep4 = LogUtil.countLog("2", null, null) > 0; + StepBar stepBar = findViewById(R.id.stepBar); + stepBar.setHighlight(checkStep1, checkStep2, checkStep3, checkStep4); + } + + @Override + protected void onPause() { + overridePendingTransition(0, 0); + super.onPause(); } //设置转发短信 diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java index 6b16ceb2..7db40969 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RuleAdapter.java @@ -62,6 +62,8 @@ public class RuleAdapter extends ArrayAdapter { viewHolder = new ViewHolder(); viewHolder.ruleMatch = view.findViewById(R.id.rule_match); viewHolder.ruleSender = view.findViewById(R.id.rule_sender); + viewHolder.ruleImage = view.findViewById(R.id.rule_image); + viewHolder.ruleStatus = view.findViewById(R.id.rule_status); viewHolder.ruleSenderImage = view.findViewById(R.id.rule_sender_image); viewHolder.ruleSenderStatus = view.findViewById(R.id.rule_sender_status); @@ -74,6 +76,9 @@ public class RuleAdapter extends ArrayAdapter { // 获取控件实例,并调用set...方法使其显示出来 if (ruleModel != null) { + viewHolder.ruleImage.setImageResource(ruleModel.getImageId()); + viewHolder.ruleStatus.setImageResource(ruleModel.getStatusImageId()); + List senderModel = SenderUtil.getSender(ruleModel.getSenderId(), null); viewHolder.ruleMatch.setText(ruleModel.getRuleMatch()); if (!senderModel.isEmpty()) { @@ -113,6 +118,8 @@ public class RuleAdapter extends ArrayAdapter { static class ViewHolder { TextView ruleMatch; TextView ruleSender; + ImageView ruleImage; + ImageView ruleStatus; ImageView ruleSenderImage; ImageView ruleSenderStatus; } diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java index 146d7d4f..b9f8356d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java @@ -307,11 +307,33 @@ public class RuleModel { return switchRegexReplace; } - public boolean getStatusChecked() { return !(status == STATUS_OFF); } + + public int getImageId() { + switch (simSlot) { + case (CHECK_SIM_SLOT_1): + return R.drawable.sim1; + case (CHECK_SIM_SLOT_2): + return R.drawable.sim2; + case (CHECK_SIM_SLOT_ALL): + default: + return type.equals("app") ? R.drawable.ic_app : R.drawable.ic_sim; + } + } + + public int getStatusImageId() { + switch (status) { + case (STATUS_OFF): + return R.drawable.ic_round_pause; + case (STATUS_ON): + default: + return R.drawable.ic_round_play; + } + } + @NonNull @Override public String toString() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java index 143b833c..6b36f57f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SenderUtil.java @@ -160,36 +160,33 @@ public class SenderUtil { return tSenders; } - public static int countSender(String key) { - // Define a projection that specifies which columns from the database - // you will actually use after this query. - String[] projection = { - }; - // Define 'where' part of query. + public static int countSender(String status, String key) { + String[] projection = {}; String selection = " 1 "; - // Specify arguments in placeholder order. List selectionArgList = new ArrayList<>(); - if (key != null) { - // Define 'where' part of query. - selection = " and (" + SenderTable.SenderEntry.COLUMN_NAME_NAME + " LIKE ? or " + SenderTable.SenderEntry.COLUMN_NAME_JSON_SETTING + " LIKE ? ) "; - // Specify arguments in placeholder order. + if (status != null && !status.isEmpty()) { + selection += " and " + SenderTable.SenderEntry.COLUMN_NAME_STATUS + " = ? "; + selectionArgList.add(status); + } + + if (key != null && !key.isEmpty()) { + selection += " and (" + SenderTable.SenderEntry.COLUMN_NAME_NAME + " LIKE ? or " + SenderTable.SenderEntry.COLUMN_NAME_JSON_SETTING + " LIKE ? ) "; selectionArgList.add(key); selectionArgList.add(key); } - String[] selectionArgs = selectionArgList.toArray(new String[0]); - - // How you want the results sorted in the resulting Cursor + String[] selectionArgs = selectionArgList.toArray(new String[0]); Cursor cursor = db.query( SenderTable.SenderEntry.TABLE_NAME, // The table to query projection, // The array of columns to return (pass null to get all) selection, // The columns for the WHERE clause selectionArgs, // The values for the WHERE clause - null, // don't group the rows - null, // don't filter by row groups - null // The sort order + null, // don't group the rows + null, // don't filter by row groups + null // The sort order ); + int count = cursor.getCount(); cursor.close(); return count; diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java index fb3c9bec..f5047ed3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/LogUtil.java @@ -211,4 +211,39 @@ public class LogUtil { return LogVos; } + public static int countLog(String status, String type, String value) { + String[] projection = {}; + String selection = " 1 "; + List selectionArgList = new ArrayList<>(); + + if (status != null && !status.isEmpty()) { + selection += " and " + LogTable.LogEntry.COLUMN_NAME_FORWARD_STATUS + " = ? "; + selectionArgList.add(status); + } + + if (type != null && !type.isEmpty()) { + selection += " and " + LogTable.LogEntry.COLUMN_NAME_TYPE + " = ? "; + selectionArgList.add(status); + } + + if (value != null && !value.isEmpty()) { + selection += " and " + LogTable.LogEntry.COLUMN_NAME_CONTENT + " LIKE ? "; + selectionArgList.add(value); + } + + String[] selectionArgs = selectionArgList.toArray(new String[0]); + Cursor cursor = db.query( + LogTable.LogEntry.TABLE_NAME, // The table to query + projection, // The array of columns to return (pass null to get all) + selection, // The columns for the WHERE clause + selectionArgs, // The values for the WHERE clause + null, // don't group the rows + null, // don't filter by row groups + null // The sort order + ); + + int count = cursor.getCount(); + cursor.close(); + return count; + } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java index 1d34628c..53e2abf8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/RuleUtil.java @@ -196,4 +196,40 @@ public class RuleUtil { return tRules; } + public static int countRule(String status, String type, String value) { + String[] projection = {}; + String selection = " 1 "; + List selectionArgList = new ArrayList<>(); + + if (status != null && !status.isEmpty()) { + selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_STATUS + " = ? "; + selectionArgList.add(status); + } + + if (type != null && !type.isEmpty()) { + selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_TYPE + " = ? "; + selectionArgList.add(status); + } + + if (value != null && !value.isEmpty()) { + selection += " and " + RuleTable.RuleEntry.COLUMN_NAME_VALUE + " LIKE ? "; + selectionArgList.add(value); + } + + String[] selectionArgs = selectionArgList.toArray(new String[0]); + Cursor cursor = db.query( + RuleTable.RuleEntry.TABLE_NAME, // The table to query + projection, // The array of columns to return (pass null to get all) + selection, // The columns for the WHERE clause + selectionArgs, // The values for the WHERE clause + null, // don't group the rows + null, // don't filter by row groups + null // The sort order + ); + + int count = cursor.getCount(); + cursor.close(); + return count; + } + } diff --git a/app/src/main/java/com/idormy/sms/forwarder/view/StepBar.java b/app/src/main/java/com/idormy/sms/forwarder/view/StepBar.java index 98cac7ce..3c5ef03f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/view/StepBar.java +++ b/app/src/main/java/com/idormy/sms/forwarder/view/StepBar.java @@ -1,10 +1,13 @@ package com.idormy.sms.forwarder.view; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -14,72 +17,163 @@ import com.idormy.sms.forwarder.RuleActivity; import com.idormy.sms.forwarder.SenderActivity; import com.idormy.sms.forwarder.SettingActivity; +@SuppressWarnings("FieldCanBeLocal") public class StepBar extends LinearLayout { + private final Context mContext; + private TypedArray mTypedArray; + //自定义参数 + private String current_step; //控件 - private final TextView txStep1; - private final TextView txStep2; - private final TextView txStep3; - private final TextView txStep4; - private final TextView tvStep1; - private final TextView tvStep2; - private final TextView tvStep3; - private final TextView tvStep4; + private TextView txStep1; + private TextView txStep2; + private TextView txStep3; + private TextView txStep4; + private TextView tvStep1; + private TextView tvStep2; + private TextView tvStep3; + private TextView tvStep4; + private ImageView ivStep_12_1; + private ImageView ivStep_12_2; + private ImageView ivStep_12_3; + private ImageView ivStep_23_1; + private ImageView ivStep_23_2; + private ImageView ivStep_23_3; + private ImageView ivStep_34_1; + private ImageView ivStep_34_2; + private ImageView ivStep_34_3; + + public StepBar(Context context) { + super(context); + mContext = context; + initView(); + } public StepBar(final Context context, AttributeSet attrs) { super(context, attrs); + mContext = context; + initParams(context, attrs); + initView(); + } + + public StepBar(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + mContext = context; + initParams(context, attrs); + initView(); + } + + private void initParams(Context context, AttributeSet attrs) { + mTypedArray = mContext.obtainStyledAttributes(attrs, R.styleable.StepBar); + if (mTypedArray != null) { + current_step = mTypedArray.getString(R.styleable.StepBar_current_step); + System.out.println("current_step = " + current_step); + mTypedArray.recycle(); + } + } + + private void initView() { //初始化界面 - View view = LayoutInflater.from(context).inflate(R.layout.step_bar, this); - //绑定 + View view = LayoutInflater.from(mContext).inflate(R.layout.step_bar, this); + + //步骤1 txStep1 = findViewById(R.id.txStep1); - txStep2 = findViewById(R.id.txStep2); - txStep3 = findViewById(R.id.txStep3); - txStep4 = findViewById(R.id.txStep4); tvStep1 = findViewById(R.id.tvStep1); + if (!current_step.equalsIgnoreCase("setting")) { + tvStep1.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), SettingActivity.class); + v.getContext().startActivity(intent); + }); + txStep1.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), SettingActivity.class); + v.getContext().startActivity(intent); + }); + } else { + tvStep1.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark)); + } + + //步骤2 + txStep2 = findViewById(R.id.txStep2); tvStep2 = findViewById(R.id.tvStep2); + if (!current_step.equalsIgnoreCase("sender")) { + tvStep2.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), SenderActivity.class); + v.getContext().startActivity(intent); + }); + txStep2.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), SenderActivity.class); + v.getContext().startActivity(intent); + }); + } else { + tvStep2.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark)); + } + + //步骤3 + txStep3 = findViewById(R.id.txStep3); tvStep3 = findViewById(R.id.tvStep3); + if (!current_step.equalsIgnoreCase("rule")) { + tvStep3.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), RuleActivity.class); + v.getContext().startActivity(intent); + }); + txStep3.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), RuleActivity.class); + v.getContext().startActivity(intent); + }); + } else { + tvStep3.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark)); + } + + //步骤4 + txStep4 = findViewById(R.id.txStep4); tvStep4 = findViewById(R.id.tvStep4); - //初始化函数 - init(context); + if (!current_step.equalsIgnoreCase("main")) { + tvStep4.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), MainActivity.class); + v.getContext().startActivity(intent); + }); + txStep4.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), MainActivity.class); + v.getContext().startActivity(intent); + }); + } else { + tvStep4.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark)); + } + + ivStep_12_1 = findViewById(R.id.ivStep_12_1); + ivStep_12_2 = findViewById(R.id.ivStep_12_2); + ivStep_12_3 = findViewById(R.id.ivStep_12_3); + ivStep_23_1 = findViewById(R.id.ivStep_23_1); + ivStep_23_2 = findViewById(R.id.ivStep_23_2); + ivStep_23_3 = findViewById(R.id.ivStep_23_3); + ivStep_34_1 = findViewById(R.id.ivStep_34_1); + ivStep_34_2 = findViewById(R.id.ivStep_34_2); + ivStep_34_3 = findViewById(R.id.ivStep_34_3); } - private void init(final Context context) { - - tvStep1.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), SettingActivity.class); - v.getContext().startActivity(intent); - }); - txStep1.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), SettingActivity.class); - v.getContext().startActivity(intent); - }); - - tvStep2.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), SenderActivity.class); - v.getContext().startActivity(intent); - }); - txStep2.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), SenderActivity.class); - v.getContext().startActivity(intent); - }); - - tvStep3.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), RuleActivity.class); - v.getContext().startActivity(intent); - }); - txStep3.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), RuleActivity.class); - v.getContext().startActivity(intent); - }); - - tvStep4.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), MainActivity.class); - v.getContext().startActivity(intent); - }); - txStep4.setOnClickListener(v -> { - Intent intent = new Intent(v.getContext(), MainActivity.class); - v.getContext().startActivity(intent); - }); + @SuppressLint("UseCompatLoadingForDrawables") + public void setHighlight(boolean Step1, boolean Step2, boolean Step3, boolean Step4) { + if (Step1) txStep1.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current)); + if (Step2) txStep2.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current)); + if (Step3) txStep3.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current)); + if (Step4) txStep4.setBackground(mContext.getResources().getDrawable(R.drawable.step_circle_current)); + + if (Step1 && Step2) { + ivStep_12_1.setImageResource(R.drawable.step_rectangle_current); + ivStep_12_2.setImageResource(R.drawable.step_rectangle_current); + ivStep_12_3.setImageResource(R.drawable.step_rectangle_current); + } + + if (Step2 && Step3) { + ivStep_23_1.setImageResource(R.drawable.step_rectangle_current); + ivStep_23_2.setImageResource(R.drawable.step_rectangle_current); + ivStep_23_3.setImageResource(R.drawable.step_rectangle_current); + } + if (Step3 && Step4) { + ivStep_34_1.setImageResource(R.drawable.step_rectangle_current); + ivStep_34_2.setImageResource(R.drawable.step_rectangle_current); + ivStep_34_3.setImageResource(R.drawable.step_rectangle_current); + } } } diff --git a/app/src/main/res/drawable/ic_sim.xml b/app/src/main/res/drawable/ic_sim.xml new file mode 100644 index 00000000..5602b95a --- /dev/null +++ b/app/src/main/res/drawable/ic_sim.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 622e1726..30aa1e1d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -88,8 +88,10 @@ android:textSize="12sp" /> + android:layout_height="wrap_content" + app:current_step="main" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_rule.xml b/app/src/main/res/layout/activity_rule.xml index ea5334ec..466cda0c 100644 --- a/app/src/main/res/layout/activity_rule.xml +++ b/app/src/main/res/layout/activity_rule.xml @@ -98,8 +98,10 @@ android:textSize="12sp" /> + android:layout_height="wrap_content" + app:current_step="rule" /> diff --git a/app/src/main/res/layout/activity_sender.xml b/app/src/main/res/layout/activity_sender.xml index 406ec9e7..5c191996 100644 --- a/app/src/main/res/layout/activity_sender.xml +++ b/app/src/main/res/layout/activity_sender.xml @@ -48,8 +48,10 @@ android:textSize="12sp" /> + android:layout_height="wrap_content" + app:current_step="sender" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 4b57a987..8fac9226 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -33,14 +33,14 @@ @@ -123,7 +123,7 @@ @@ -135,7 +135,7 @@ android:layout_marginStart="-5dp" android:scaleX="0.7" android:scaleY="0.7" - android:text="未接来电" /> + android:text="@string/missed_call" /> + android:text="@string/received_call" /> + android:text="@string/local_outgoing_call" /> @@ -208,7 +208,7 @@ @@ -248,14 +248,14 @@ @@ -278,14 +278,14 @@ @@ -363,14 +363,14 @@ @@ -508,14 +508,14 @@ @@ -760,14 +760,14 @@ @@ -1091,8 +1091,10 @@ android:textSize="12sp" /> + android:layout_height="wrap_content" + app:current_step="setting" /> diff --git a/app/src/main/res/layout/alert_dialog_setview_rule.xml b/app/src/main/res/layout/alert_dialog_setview_rule.xml index 61084747..8bebc23a 100644 --- a/app/src/main/res/layout/alert_dialog_setview_rule.xml +++ b/app/src/main/res/layout/alert_dialog_setview_rule.xml @@ -466,6 +466,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" + android:checked="true" android:gravity="end" android:textSize="18sp" tools:ignore="UseSwitchCompatOrMaterialXml" /> diff --git a/app/src/main/res/layout/alert_dialog_setview_rule_app.xml b/app/src/main/res/layout/alert_dialog_setview_rule_app.xml index 8e7aacae..3b0124a3 100644 --- a/app/src/main/res/layout/alert_dialog_setview_rule_app.xml +++ b/app/src/main/res/layout/alert_dialog_setview_rule_app.xml @@ -468,6 +468,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" + android:checked="true" android:gravity="end" android:textSize="18sp" tools:ignore="UseSwitchCompatOrMaterialXml" /> diff --git a/app/src/main/res/layout/alert_dialog_setview_rule_call.xml b/app/src/main/res/layout/alert_dialog_setview_rule_call.xml index 246a9129..605295c8 100644 --- a/app/src/main/res/layout/alert_dialog_setview_rule_call.xml +++ b/app/src/main/res/layout/alert_dialog_setview_rule_call.xml @@ -470,6 +470,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" + android:checked="true" android:gravity="end" android:textSize="18sp" tools:ignore="UseSwitchCompatOrMaterialXml" /> diff --git a/app/src/main/res/layout/item_log.xml b/app/src/main/res/layout/item_log.xml index 1afaed71..32643d61 100644 --- a/app/src/main/res/layout/item_log.xml +++ b/app/src/main/res/layout/item_log.xml @@ -68,10 +68,14 @@ + android:layout_gravity="start" + android:layout_marginBottom="10dp" + android:ellipsize="end" + android:gravity="start" + android:maxEms="8" + android:maxLines="3" /> diff --git a/app/src/main/res/layout/item_menu.xml b/app/src/main/res/layout/item_menu.xml index 6fc70ec8..476eaa51 100644 --- a/app/src/main/res/layout/item_menu.xml +++ b/app/src/main/res/layout/item_menu.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:gravity="center_horizontal" android:orientation="vertical" tools:ignore="UseCompoundDrawables"> @@ -15,11 +17,12 @@ diff --git a/app/src/main/res/layout/item_rule.xml b/app/src/main/res/layout/item_rule.xml index ab63584d..000baf19 100644 --- a/app/src/main/res/layout/item_rule.xml +++ b/app/src/main/res/layout/item_rule.xml @@ -12,17 +12,16 @@ + android:layout_marginStart="5dp" + android:layout_weight="1" + android:ellipsize="end" + android:gravity="start" + android:maxEms="8" + android:maxLines="3" /> - + android:layout_marginStart="5dp" + android:gravity="center_horizontal" + android:orientation="vertical"> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_sender.xml b/app/src/main/res/layout/item_sender.xml index bbc1692b..ab4ae15e 100644 --- a/app/src/main/res/layout/item_sender.xml +++ b/app/src/main/res/layout/item_sender.xml @@ -32,9 +32,14 @@ + android:layout_marginStart="10dp" + android:layout_weight="1" + android:ellipsize="end" + android:gravity="start" + android:maxEms="8" + android:maxLines="2" /> \ No newline at end of file diff --git a/app/src/main/res/layout/step_bar.xml b/app/src/main/res/layout/step_bar.xml index d36e8057..c0b9c038 100644 --- a/app/src/main/res/layout/step_bar.xml +++ b/app/src/main/res/layout/step_bar.xml @@ -27,44 +27,48 @@ android:id="@+id/txStep1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:background="@drawable/step_circle_current" + android:background="@drawable/step_circle_normal" android:gravity="center" android:text="@string/_1" android:textColor="#fff" android:textSize="16sp" /> Logs Clean Log TODO + Forwarding Function + Main switch: Enable the forwarding function as required + Mandatory type: + Missed call + Received call + Local outgoing call + Optional action: + Active request + Obtain instructions through passive reception or active polling to operate the machine + Local HttpServer + Available under WiFi network, after startup, other machines in the LAN can directly call the local interface + Battery monitor + [Note] You need to manually create APP forwarding rules, package name: 88888888 + Keep alive measures + It is recommended to open each authorization or setting, do not disable the notification bar, to avoid the APP service being killed + Custom settings + If the automatic acquisition fails, please fill in the remarks manually; after clearing, it will be automatically acquired again! diff --git a/app/src/main/res/values-en/styles.xml b/app/src/main/res/values-en/styles.xml index ad7dd10b..e28638af 100644 --- a/app/src/main/res/values-en/styles.xml +++ b/app/src/main/res/values-en/styles.xml @@ -76,4 +76,8 @@ @android:color/transparent true + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d4f912b9..21c47c4e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -311,4 +311,21 @@ 转发日志 清理日志 TODO + 转发功能 + 总开关,请根据实际需要,启用对应的转发功能 + 必选类型: + 未接来电 + 已接来电 + 本机去电 + 可选操作: + 主动请求 + 通过 被动接收 或者 主动轮询 获取指令,从而操作本机 + 被动接收本地 HttpServer + WiFi网络下可用,启动后局域网内其他机器可直接调用本机接口 + 电池监控 + 【注意】需要手动创建APP转发规则,包名:88888888 + 保活措施 + 建议开启每一项授权或设置,不要禁用通知栏,避免APP服务被杀 + 个性设置 + 如果自动获取失败,请手动填写备注信息;清空后将再次自动获取! diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2b2dd28f..f0911f15 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -79,4 +79,8 @@ @android:color/transparent true + + + +