新增:自动任务·快捷指令 (开发中)

pull/408/head
pppscn 7 months ago
parent bceebbddd4
commit 70d685ee93

@ -257,7 +257,7 @@ class ServerFragment : BaseFragment<FragmentServerBinding?>(), View.OnClickListe
}
//重启前台服务,启动/停止定位服务
val serviceIntent = Intent(requireContext(), LocationService::class.java)
serviceIntent.action = "START"
serviceIntent.action = "RESTART"
requireContext().startService(serviceIntent)
}

@ -465,7 +465,7 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
if (isChecked) {
XXPermissions.with(this).permission(Permission.ACCESS_COARSE_LOCATION).permission(Permission.ACCESS_FINE_LOCATION).permission(Permission.ACCESS_BACKGROUND_LOCATION).request(object : OnPermissionCallback {
override fun onGranted(permissions: List<String>, all: Boolean) {
restartLocationService()
restartLocationService("START")
}
override fun onDenied(permissions: List<String>, never: Boolean) {
@ -478,11 +478,11 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
}
SettingUtils.enableLocation = false
switchEnableLocation.isChecked = false
restartLocationService()
restartLocationService("STOP")
}
})
} else {
restartLocationService()
restartLocationService("STOP")
}
layoutLocationSetting.visibility = if (isChecked) View.VISIBLE else View.GONE
}
@ -502,7 +502,8 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
R.id.rb_accuracy_no_requirement -> Criteria.NO_REQUIREMENT
else -> Criteria.ACCURACY_FINE
}
restartLocationService()
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
//restartLocationService()
}
//设置电量消耗:低电耗(默认)
rgPowerRequirement.check(
@ -522,26 +523,30 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
R.id.rb_power_requirement_no_requirement -> Criteria.NO_REQUIREMENT
else -> Criteria.POWER_LOW
}
restartLocationService()
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
//restartLocationService()
}
//设置位置更新最小时间间隔(单位:毫秒); 默认间隔10000毫秒最小间隔1000毫秒
xsbMinInterval.setDefaultValue((SettingUtils.locationMinInterval / 1000).toInt())
xsbMinInterval.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
SettingUtils.locationMinInterval = newValue * 1000L
restartLocationService()
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
//restartLocationService()
}
//设置位置更新最小距离单位默认距离0米
xsbMinDistance.setDefaultValue(SettingUtils.locationMinDistance)
xsbMinDistance.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
SettingUtils.locationMinDistance = newValue
restartLocationService()
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
//restartLocationService()
}
}
//重启定位服务
private fun restartLocationService() {
private fun restartLocationService(action: String = "RESTART") {
Log.d(TAG, "restartLocationService, action: $action")
val serviceIntent = Intent(requireContext(), LocationService::class.java)
serviceIntent.action = "START"
serviceIntent.action = action
requireContext().startService(serviceIntent)
}

@ -49,20 +49,22 @@ class LocationService : Service(), Server.ServerListener {
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Log.i(TAG, "onStartCommand: ")
if (intent != null) {
when (intent.action) {
"START" -> {
startService()
}
super.onStartCommand(intent, flags, startId)
"STOP" -> {
stopService()
}
}
if (!SettingUtils.enableLocation || intent == null) return START_NOT_STICKY
Log.i(TAG, "onStartCommand: ${intent.action}")
if (intent.action == "START" && !isRunning) {
startService()
} else if (intent.action == "STOP" && isRunning) {
stopService()
} else if (intent.action == "RESTART") {
stopService()
startService()
}
return super.onStartCommand(intent, flags, startId)
return START_NOT_STICKY
}
override fun onDestroy() {

@ -86,21 +86,23 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
//TODO取不到卡槽信息时采用默认卡槽发送
val mSubscriptionId: Int = App.SimInfoList[simSlotIndex]?.mSubscriptionId ?: -1
val msg = if (ActivityCompat.checkSelfPermission(App.context, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
ResUtils.getString(R.string.no_sms_sending_permission)
if (ActivityCompat.checkSelfPermission(App.context, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
val msg = ResUtils.getString(R.string.no_sms_sending_permission)
writeLog(msg, "ERROR")
} else {
PhoneUtils.sendSms(mSubscriptionId, smsSetting.phoneNumbers, smsSetting.msgContent)
val msg = PhoneUtils.sendSms(mSubscriptionId, smsSetting.phoneNumbers, smsSetting.msgContent)
successNum++
writeLog("send sms result: $msg", "SUCCESS")
}
writeLog("send sms result: $msg")
}
TASK_ACTION_NOTIFICATION -> {
val settingVo = Gson().fromJson(action.setting, Rule::class.java)
//自动任务的不需要吐司或者更新日志,特殊处理 logId = -1msgId = -1
SendUtils.sendMsgSender(msgInfo, settingVo, 0, -1L, -1L)
successNum++
writeLog("send notification success", "SUCCESS")
}
TASK_ACTION_FRPC -> {
@ -140,6 +142,9 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
}
}
}
successNum++
writeLog("frpc success", "SUCCESS")
}
TASK_ACTION_HTTPSERVER -> {
@ -155,6 +160,9 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
App.context.stopService(it)
}
}
successNum++
writeLog("httpServer success", "SUCCESS")
}
else -> {

@ -345,14 +345,11 @@
</LinearLayout>
<LinearLayout
style="@style/settingBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@color/setting_bar_color"
android:orientation="vertical"
android:paddingStart="10dp"
android:paddingTop="10dp"
tools:ignore="RtlSymmetry">
android:gravity="center_vertical"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
@ -398,6 +395,11 @@
android:orientation="vertical"
android:visibility="gone">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/xui_config_color_separator_light" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -486,7 +488,6 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/config_margin_10dp"
android:gravity="center_vertical"
android:orientation="horizontal">

@ -1089,7 +1089,7 @@
<string name="enable_location">启用GPS定位功能</string>
<string name="enable_location_dialog">必须开启定位服务,才能使用获取!\n是否立即启用</string>
<string name="enable_location_tips">用于支持 查找手机、{{定位信息}}标签 功能</string>
<string name="enable_location_tips">用于支持 查找手机、{{定位信息}}标签 功能;设置项改变后需开关以生效</string>
<string name="accuracy">位置精度</string>
<string name="accuracy_fine">精确位置</string>
<string name="accuracy_coarse">模糊位置</string>

Loading…
Cancel
Save