Added Battery Optimizations setting

This commit is contained in:
Juha Heinanen
2021-11-14 18:10:05 +02:00
parent a9b83c4632
commit 4a770b54d7
4 changed files with 64 additions and 12 deletions
@@ -2,11 +2,14 @@ package com.tutpro.baresip
import android.Manifest import android.Manifest
import android.app.Activity import android.app.Activity
import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import android.os.PowerManager
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
@@ -31,6 +34,7 @@ class ConfigActivity : AppCompatActivity() {
private lateinit var binding: ActivityConfigBinding private lateinit var binding: ActivityConfigBinding
private lateinit var layout: ScrollView private lateinit var layout: ScrollView
private lateinit var autoStart: CheckBox private lateinit var autoStart: CheckBox
private lateinit var batteryOptimizations: CheckBox
private lateinit var listenAddr: EditText private lateinit var listenAddr: EditText
private lateinit var dnsServers: EditText private lateinit var dnsServers: EditText
private lateinit var certificateFile: CheckBox private lateinit var certificateFile: CheckBox
@@ -70,6 +74,21 @@ class ConfigActivity : AppCompatActivity() {
oldAutoStart = if (asCv.size == 0) "no" else asCv[0] oldAutoStart = if (asCv.size == 0) "no" else asCv[0]
autoStart.isChecked = oldAutoStart == "yes" 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 listenAddr = binding.ListenAddress
val laCv = Config.variable("sip_listen") val laCv = Config.variable("sip_listen")
oldListenAddr = if (laCv.size == 0) "" else laCv[0] oldListenAddr = if (laCv.size == 0) "" else laCv[0]
@@ -495,6 +514,10 @@ class ConfigActivity : AppCompatActivity() {
Utils.alertView(this, getString(R.string.start_automatically), Utils.alertView(this, getString(R.string.start_automatically),
getString(R.string.start_automatically_help)) 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 { binding.ListenAddressTitle.setOnClickListener {
Utils.alertView(this, getString(R.string.listen_address), Utils.alertView(this, getString(R.string.listen_address),
getString(R.string.listen_address_help)) getString(R.string.listen_address_help))
@@ -41,6 +41,33 @@
</CheckBox> </CheckBox>
</RelativeLayout> </RelativeLayout>
<RelativeLayout
android:id="@+id/Battery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/BatteryOptimizationsTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@id/BatteryOptimizations"
android:textSize="18sp"
android:text="@string/battery_optimizations" >
</TextView>
<CheckBox
android:id="@+id/BatteryOptimizations"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_gravity="end"
android:checked="false" >
</CheckBox>
</RelativeLayout>
<TextView <TextView
android:id="@+id/ListenAddressTitle" android:id="@+id/ListenAddressTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
+8 -6
View File
@@ -10,9 +10,8 @@
<p>Versio %1$s</p> <p>Versio %1$s</p>
<h2>Käyttövihjeitä</h2> <h2>Käyttövihjeitä</h2>
<ul> <ul>
<li>Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa salli baresip-sovelluksen <li>Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa valitse baresip-sovellus ja
ilmoitukset ja ota akun optimointi pois päältä (jos haluat vähentää todennäköisyyttä, salli Ilmoitukset.</li>
että Android rajoittaa baresip-sovelluksen toimintaa ja pääsyä verkkoon).</li>
<li>Tarkista, että baresip-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon <li>Tarkista, että baresip-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon
kosketus tarjoaa apua.</li> kosketus tarjoaa apua.</li>
<li>Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.</li> <li>Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.</li>
@@ -63,9 +62,8 @@
<p>Versio %1$s</p> <p>Versio %1$s</p>
<h2>Käyttövihjeitä</h2> <h2>Käyttövihjeitä</h2>
<ul> <ul>
<li>Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa salli baresip+-sovelluksen <li>Android-asetusten \'Sovellukset ja ilmoitukset\' osiossa valitse baresip+-sovellus ja
ilmoitukset ja ota akun optimointi pois päältä (jos haluat vähentää todennäköisyyttä, salli Ilmoitukset.</li>
että Android rajoittaa baresip+-sovelluksen toimintaa ja pääsyä verkkoon).</li>
<li>Tarkista, että baresip+-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon <li>Tarkista, että baresip+-sovelluksen Asetukset vastaavat tarpeitasi. Kunkin otsikon
kosketus tarjoaa apua.</li> kosketus tarjoaa apua.</li>
<li>Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.</li> <li>Sen jälkeen luo yksi tai useampi tili. Jälleen kunkin otsikon kosketus tarjoaa apua.</li>
@@ -290,6 +288,10 @@
<string name="start_automatically">Käynnistä automaattisesti</string> <string name="start_automatically">Käynnistä automaattisesti</string>
<string name="start_automatically_help">Jos merkitty, baresip <string name="start_automatically_help">Jos merkitty, baresip
käynnistyy automaattisesti, kun laite käynnistyy.</string> käynnistyy automaattisesti, kun laite käynnistyy.</string>
<string name="battery_optimizations">Akun käytön optiomointi</string>
<string name="battery_optimizations_help">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.</string>
<string name="listen_address">Kuunteluosoite</string> <string name="listen_address">Kuunteluosoite</string>
<string name="listen_address_help">IP-osoite ja portti muotoa <string name="listen_address_help">IP-osoite ja portti muotoa
\'osoite:portti\', missä baresip kuuntelee sisään tulevia \'osoite:portti\', missä baresip kuuntelee sisään tulevia
+6 -6
View File
@@ -12,9 +12,7 @@
<p>Version %1$s</p> <p>Version %1$s</p>
<h2>Usage Hints</h2> <h2>Usage Hints</h2>
<ul> <ul>
<li>In Android\'s \`Apps & notifications\` settings, allow baresip app\'s notifications and <li>In Android\'s \`Apps & notifications\` settings, select baresip app and allow Notifications.</li>
disable battery optimization (if you want to reduce likelihood that Android
restricts baresip\'s access to network or enters baresip to standby state).</li>
<li>Check that default values in baresip\'s Settings meet your needs <li>Check that default values in baresip\'s Settings meet your needs
(touch item titles for help).</li> (touch item titles for help).</li>
<li>Then in Accounts, create one or more accounts (again touch item titles for help).</li> <li>Then in Accounts, create one or more accounts (again touch item titles for help).</li>
@@ -62,9 +60,7 @@
<p>Version %1$s</p> <p>Version %1$s</p>
<h2>Usage Hints</h2> <h2>Usage Hints</h2>
<ul> <ul>
<li>In Android\'s \`Apps & notifications\` settings, allow baresip+ app\'s notifications and <li>In Android\'s \`Apps & notifications\` settings, select baresip+ app and allow Notifications.</li>
disable battery optimization (if you want to reduce likelihood that Android
restricts baresip+\'s access to network or enters baresip+ to standby state).</li>
<li>Check that default values in baresip+\'s Settings meet your needs <li>Check that default values in baresip+\'s Settings meet your needs
(touch item titles for help).</li> (touch item titles for help).</li>
<li>Then in Accounts, create one or more accounts (again touch item titles for help).</li> <li>Then in Accounts, create one or more accounts (again touch item titles for help).</li>
@@ -265,6 +261,10 @@
<string name="configuration">Settings</string> <string name="configuration">Settings</string>
<string name="start_automatically">Start Automatically</string> <string name="start_automatically">Start Automatically</string>
<string name="start_automatically_help">If checked, baresip starts automatically after device (re)start.</string> <string name="start_automatically_help">If checked, baresip starts automatically after device (re)start.</string>
<string name="battery_optimizations">Battery Optimizations</string>
<string name="battery_optimizations_help">Disable battery optimizations (recommended) if you want
to reduce likelihood that Android restricts baresip\'s access to network or enters baresip
to standby state.</string>
<string name="listen_address">Listen Address</string> <string name="listen_address">Listen Address</string>
<string name="listen_address_help">IP address and port of form \'address:port\' at which baresip listens <string name="listen_address_help">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 for incoming SIP requests. If IP address is an IPv6 address, it must be written inside