新增:自动任务·快捷指令 (开发中)
This commit is contained in:
parent
bceebbddd4
commit
70d685ee93
|
@ -257,7 +257,7 @@ class ServerFragment : BaseFragment<FragmentServerBinding?>(), View.OnClickListe
|
||||||
}
|
}
|
||||||
//重启前台服务,启动/停止定位服务
|
//重启前台服务,启动/停止定位服务
|
||||||
val serviceIntent = Intent(requireContext(), LocationService::class.java)
|
val serviceIntent = Intent(requireContext(), LocationService::class.java)
|
||||||
serviceIntent.action = "START"
|
serviceIntent.action = "RESTART"
|
||||||
requireContext().startService(serviceIntent)
|
requireContext().startService(serviceIntent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -465,7 +465,7 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
XXPermissions.with(this).permission(Permission.ACCESS_COARSE_LOCATION).permission(Permission.ACCESS_FINE_LOCATION).permission(Permission.ACCESS_BACKGROUND_LOCATION).request(object : OnPermissionCallback {
|
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) {
|
override fun onGranted(permissions: List<String>, all: Boolean) {
|
||||||
restartLocationService()
|
restartLocationService("START")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDenied(permissions: List<String>, never: Boolean) {
|
override fun onDenied(permissions: List<String>, never: Boolean) {
|
||||||
|
@ -478,11 +478,11 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
|
||||||
}
|
}
|
||||||
SettingUtils.enableLocation = false
|
SettingUtils.enableLocation = false
|
||||||
switchEnableLocation.isChecked = false
|
switchEnableLocation.isChecked = false
|
||||||
restartLocationService()
|
restartLocationService("STOP")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
restartLocationService()
|
restartLocationService("STOP")
|
||||||
}
|
}
|
||||||
layoutLocationSetting.visibility = if (isChecked) View.VISIBLE else View.GONE
|
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
|
R.id.rb_accuracy_no_requirement -> Criteria.NO_REQUIREMENT
|
||||||
else -> Criteria.ACCURACY_FINE
|
else -> Criteria.ACCURACY_FINE
|
||||||
}
|
}
|
||||||
restartLocationService()
|
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
|
||||||
|
//restartLocationService()
|
||||||
}
|
}
|
||||||
//设置电量消耗:低电耗(默认)
|
//设置电量消耗:低电耗(默认)
|
||||||
rgPowerRequirement.check(
|
rgPowerRequirement.check(
|
||||||
|
@ -522,26 +523,30 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding?>(), View.OnClickL
|
||||||
R.id.rb_power_requirement_no_requirement -> Criteria.NO_REQUIREMENT
|
R.id.rb_power_requirement_no_requirement -> Criteria.NO_REQUIREMENT
|
||||||
else -> Criteria.POWER_LOW
|
else -> Criteria.POWER_LOW
|
||||||
}
|
}
|
||||||
restartLocationService()
|
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
|
||||||
|
//restartLocationService()
|
||||||
}
|
}
|
||||||
//设置位置更新最小时间间隔(单位:毫秒); 默认间隔:10000毫秒,最小间隔:1000毫秒
|
//设置位置更新最小时间间隔(单位:毫秒); 默认间隔:10000毫秒,最小间隔:1000毫秒
|
||||||
xsbMinInterval.setDefaultValue((SettingUtils.locationMinInterval / 1000).toInt())
|
xsbMinInterval.setDefaultValue((SettingUtils.locationMinInterval / 1000).toInt())
|
||||||
xsbMinInterval.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
|
xsbMinInterval.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
|
||||||
SettingUtils.locationMinInterval = newValue * 1000L
|
SettingUtils.locationMinInterval = newValue * 1000L
|
||||||
restartLocationService()
|
//TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉
|
||||||
|
//restartLocationService()
|
||||||
}
|
}
|
||||||
//设置位置更新最小距离(单位:米);默认距离:0米
|
//设置位置更新最小距离(单位:米);默认距离:0米
|
||||||
xsbMinDistance.setDefaultValue(SettingUtils.locationMinDistance)
|
xsbMinDistance.setDefaultValue(SettingUtils.locationMinDistance)
|
||||||
xsbMinDistance.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
|
xsbMinDistance.setOnSeekBarListener { _: XSeekBar?, newValue: Int ->
|
||||||
SettingUtils.locationMinDistance = newValue
|
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)
|
val serviceIntent = Intent(requireContext(), LocationService::class.java)
|
||||||
serviceIntent.action = "START"
|
serviceIntent.action = action
|
||||||
requireContext().startService(serviceIntent)
|
requireContext().startService(serviceIntent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,20 +49,22 @@ class LocationService : Service(), Server.ServerListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
Log.i(TAG, "onStartCommand: ")
|
super.onStartCommand(intent, flags, startId)
|
||||||
if (intent != null) {
|
|
||||||
when (intent.action) {
|
if (!SettingUtils.enableLocation || intent == null) return START_NOT_STICKY
|
||||||
"START" -> {
|
|
||||||
|
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()
|
startService()
|
||||||
}
|
}
|
||||||
|
|
||||||
"STOP" -> {
|
return START_NOT_STICKY
|
||||||
stopService()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.onStartCommand(intent, flags, startId)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|
|
@ -86,21 +86,23 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
|
||||||
//TODO:取不到卡槽信息时,采用默认卡槽发送
|
//TODO:取不到卡槽信息时,采用默认卡槽发送
|
||||||
val mSubscriptionId: Int = App.SimInfoList[simSlotIndex]?.mSubscriptionId ?: -1
|
val mSubscriptionId: Int = App.SimInfoList[simSlotIndex]?.mSubscriptionId ?: -1
|
||||||
|
|
||||||
val msg = if (ActivityCompat.checkSelfPermission(App.context, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
|
if (ActivityCompat.checkSelfPermission(App.context, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
|
||||||
ResUtils.getString(R.string.no_sms_sending_permission)
|
val msg = ResUtils.getString(R.string.no_sms_sending_permission)
|
||||||
|
writeLog(msg, "ERROR")
|
||||||
} else {
|
} else {
|
||||||
PhoneUtils.sendSms(mSubscriptionId, smsSetting.phoneNumbers, smsSetting.msgContent)
|
val msg = PhoneUtils.sendSms(mSubscriptionId, smsSetting.phoneNumbers, smsSetting.msgContent)
|
||||||
successNum++
|
successNum++
|
||||||
|
writeLog("send sms result: $msg", "SUCCESS")
|
||||||
}
|
}
|
||||||
|
|
||||||
writeLog("send sms result: $msg")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TASK_ACTION_NOTIFICATION -> {
|
TASK_ACTION_NOTIFICATION -> {
|
||||||
val settingVo = Gson().fromJson(action.setting, Rule::class.java)
|
val settingVo = Gson().fromJson(action.setting, Rule::class.java)
|
||||||
//自动任务的不需要吐司或者更新日志,特殊处理 logId = -1,msgId = -1
|
//自动任务的不需要吐司或者更新日志,特殊处理 logId = -1,msgId = -1
|
||||||
SendUtils.sendMsgSender(msgInfo, settingVo, 0, -1L, -1L)
|
SendUtils.sendMsgSender(msgInfo, settingVo, 0, -1L, -1L)
|
||||||
|
|
||||||
successNum++
|
successNum++
|
||||||
|
writeLog("send notification success", "SUCCESS")
|
||||||
}
|
}
|
||||||
|
|
||||||
TASK_ACTION_FRPC -> {
|
TASK_ACTION_FRPC -> {
|
||||||
|
@ -140,6 +142,9 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
successNum++
|
||||||
|
writeLog("frpc success", "SUCCESS")
|
||||||
}
|
}
|
||||||
|
|
||||||
TASK_ACTION_HTTPSERVER -> {
|
TASK_ACTION_HTTPSERVER -> {
|
||||||
|
@ -155,6 +160,9 @@ class ActionWorker(context: Context, params: WorkerParameters) : CoroutineWorker
|
||||||
App.context.stopService(it)
|
App.context.stopService(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
successNum++
|
||||||
|
writeLog("httpServer success", "SUCCESS")
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
|
|
|
@ -345,14 +345,11 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
style="@style/settingBarStyle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="5dp"
|
android:gravity="center_vertical"
|
||||||
android:background="@color/setting_bar_color"
|
android:orientation="vertical">
|
||||||
android:orientation="vertical"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
android:paddingTop="10dp"
|
|
||||||
tools:ignore="RtlSymmetry">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -398,6 +395,11 @@
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -486,7 +488,6 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="@dimen/config_margin_10dp"
|
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
|
|
@ -1089,7 +1089,7 @@
|
||||||
|
|
||||||
<string name="enable_location">启用GPS定位功能</string>
|
<string name="enable_location">启用GPS定位功能</string>
|
||||||
<string name="enable_location_dialog">必须开启定位服务,才能使用获取!\n是否立即启用?</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">位置精度</string>
|
||||||
<string name="accuracy_fine">精确位置</string>
|
<string name="accuracy_fine">精确位置</string>
|
||||||
<string name="accuracy_coarse">模糊位置</string>
|
<string name="accuracy_coarse">模糊位置</string>
|
||||||
|
|
Loading…
Reference in New Issue