From 4a770b54d72fd9bc9ab4ddfb9b720f0bd96d3555 Mon Sep 17 00:00:00 2001
From: Juha Heinanen
Date: Sun, 14 Nov 2021 18:10:05 +0200
Subject: [PATCH] Added Battery Optimizations setting
---
.../com/tutpro/baresip/ConfigActivity.kt | 23 ++++++++++++++++
app/src/main/res/layout/activity_config.xml | 27 +++++++++++++++++++
app/src/main/res/values-fi/strings.xml | 14 +++++-----
app/src/main/res/values/strings.xml | 12 ++++-----
4 files changed, 64 insertions(+), 12 deletions(-)
diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
index 81229007..14ab0f98 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
@@ -2,11 +2,14 @@ package com.tutpro.baresip
import android.Manifest
import android.app.Activity
+import android.content.ActivityNotFoundException
+import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.content.pm.PackageManager
import android.os.Build
+import android.os.PowerManager
import android.view.Menu
import android.view.MenuItem
import android.view.View
@@ -31,6 +34,7 @@ class ConfigActivity : AppCompatActivity() {
private lateinit var binding: ActivityConfigBinding
private lateinit var layout: ScrollView
private lateinit var autoStart: CheckBox
+ private lateinit var batteryOptimizations: CheckBox
private lateinit var listenAddr: EditText
private lateinit var dnsServers: EditText
private lateinit var certificateFile: CheckBox
@@ -70,6 +74,21 @@ class ConfigActivity : AppCompatActivity() {
oldAutoStart = if (asCv.size == 0) "no" else asCv[0]
autoStart.isChecked = oldAutoStart == "yes"
+ if (Build.VERSION.SDK_INT >= 23) {
+ val pm = getSystemService(Context.POWER_SERVICE) as PowerManager
+ batteryOptimizations = binding.BatteryOptimizations
+ batteryOptimizations.isChecked = pm.isIgnoringBatteryOptimizations(packageName) == false
+ batteryOptimizations.setOnCheckedChangeListener { _, _ ->
+ try {
+ startActivity(Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS"))
+ } catch (e: ActivityNotFoundException) {
+ Log.e(TAG, "ActivityNotFound exception: $e")
+ }
+ }
+ } else {
+ binding.Battery.visibility = View.GONE
+ }
+
listenAddr = binding.ListenAddress
val laCv = Config.variable("sip_listen")
oldListenAddr = if (laCv.size == 0) "" else laCv[0]
@@ -495,6 +514,10 @@ class ConfigActivity : AppCompatActivity() {
Utils.alertView(this, getString(R.string.start_automatically),
getString(R.string.start_automatically_help))
}
+ binding.BatteryOptimizationsTitle.setOnClickListener {
+ Utils.alertView(this, getString(R.string.battery_optimizations),
+ getString(R.string.battery_optimizations_help))
+ }
binding.ListenAddressTitle.setOnClickListener {
Utils.alertView(this, getString(R.string.listen_address),
getString(R.string.listen_address_help))
diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml
index afe7044c..ba44f455 100644
--- a/app/src/main/res/layout/activity_config.xml
+++ b/app/src/main/res/layout/activity_config.xml
@@ -41,6 +41,33 @@
+
+
+
+
+
+
+
Versio %1$s
Käyttövihjeitä
- - Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa salli baresip-sovelluksen
- ilmoitukset ja ota akun optimointi pois päältä (jos haluat vähentää todennäköisyyttä,
- että Android rajoittaa baresip-sovelluksen toimintaa ja pääsyä verkkoon).
+ - Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa valitse baresip-sovellus ja
+ salli Ilmoitukset.
- Tarkista, että baresip-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon
kosketus tarjoaa apua.
- Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.
@@ -63,9 +62,8 @@
Versio %1$s
Käyttövihjeitä
- - Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa salli baresip+-sovelluksen
- ilmoitukset ja ota akun optimointi pois päältä (jos haluat vähentää todennäköisyyttä,
- että Android rajoittaa baresip+-sovelluksen toimintaa ja pääsyä verkkoon).
+ - Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa valitse baresip+-sovellus ja
+ salli Ilmoitukset.
- Tarkista, että baresip+-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon
kosketus tarjoaa apua.
- Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.
@@ -290,6 +288,10 @@
Käynnistä automaattisesti
Jos merkitty, baresip
käynnistyy automaattisesti, kun laite käynnistyy.
+ Akun käytön optiomointi
+ Ota akun käytön optimointi pois päältä (suositeltu),
+ jos haluat vähentää todennäköisyyttä, että Android rajoittaa baresip-sovelluksen toimintaa
+ ja pääsyä verkkoon.
Kuunteluosoite
IP-osoite ja portti muotoa
\'osoite:portti\', missä baresip kuuntelee sisään tulevia
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 18bd7063..479816fc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -12,9 +12,7 @@
Version %1$s
Usage Hints
- - In Android\'s \`Apps & notifications\` settings, allow baresip app\'s notifications and
- disable battery optimization (if you want to reduce likelihood that Android
- restricts baresip\'s access to network or enters baresip to standby state).
+ - In Android\'s \`Apps & notifications\` settings, select baresip app and allow Notifications.
- Check that default values in baresip\'s Settings meet your needs
(touch item titles for help).
- Then in Accounts, create one or more accounts (again touch item titles for help).
@@ -62,9 +60,7 @@
Version %1$s
Usage Hints
- - In Android\'s \`Apps & notifications\` settings, allow baresip+ app\'s notifications and
- disable battery optimization (if you want to reduce likelihood that Android
- restricts baresip+\'s access to network or enters baresip+ to standby state).
+ - In Android\'s \`Apps & notifications\` settings, select baresip+ app and allow Notifications.
- Check that default values in baresip+\'s Settings meet your needs
(touch item titles for help).
- Then in Accounts, create one or more accounts (again touch item titles for help).
@@ -265,6 +261,10 @@
Settings
Start Automatically
If checked, baresip starts automatically after device (re)start.
+ Battery Optimizations
+ Disable battery optimizations (recommended) if you want
+ to reduce likelihood that Android restricts baresip\'s access to network or enters baresip
+ to standby state.
Listen Address
IP address and port of form \'address:port\' at which baresip listens
for incoming SIP requests. If IP address is an IPv6 address, it must be written inside