Add battery optimizations info

This commit is contained in:
Jonas L 2019-02-11 10:47:47 +01:00
parent d41fdc0962
commit 5105282a90
6 changed files with 168 additions and 3 deletions

View file

@ -30,10 +30,8 @@ import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import androidx.navigation.Navigation
import com.google.android.material.snackbar.Snackbar
import io.timelimit.android.R
import io.timelimit.android.data.model.Device
import io.timelimit.android.databinding.FragmentManageDeviceBinding
@ -46,7 +44,6 @@ import io.timelimit.android.livedata.switchMap
import io.timelimit.android.logic.AppLogic
import io.timelimit.android.logic.DefaultAppLogic
import io.timelimit.android.sync.actions.SetDeviceUserAction
import io.timelimit.android.sync.actions.UpdateDeviceNameAction
import io.timelimit.android.ui.main.ActivityViewModel
import io.timelimit.android.ui.main.ActivityViewModelHolder
import io.timelimit.android.ui.main.AuthenticationFab
@ -267,6 +264,12 @@ class ManageDeviceFragment : Fragment(), FragmentWithCustomTitle {
user = userEntry
)
ManageDeviceTroubleshooting.bind(
view = binding.troubleshootingView,
userEntry = userEntry,
lifecycleOwner = this
)
return binding.root
}

View file

@ -0,0 +1,41 @@
/*
* Open TimeLimit Copyright <C> 2019 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.timelimit.android.ui.manage.device.manage
import android.text.method.LinkMovementMethod
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import io.timelimit.android.data.model.User
import io.timelimit.android.data.model.UserType
import io.timelimit.android.databinding.ManageDeviceTroubleshootingViewBinding
object ManageDeviceTroubleshooting {
fun bind(
view: ManageDeviceTroubleshootingViewBinding,
userEntry: LiveData<User?>,
lifecycleOwner: LifecycleOwner
) {
view.bateryOptimizationsText.movementMethod = LinkMovementMethod.getInstance()
userEntry.observe(lifecycleOwner, Observer {
val isChild = it?.type == UserType.Child
view.showBatteryOptimizations = isChild
view.showNoChildUser = !isChild
})
}
}

View file

@ -379,6 +379,9 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
<include android:id="@+id/troubleshooting_view"
layout="@layout/manage_device_troubleshooting_view" />
</LinearLayout>
</ScrollView>

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Open TimeLimit Copyright <C> 2019 Jonas Lochmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="showNoChildUser"
type="boolean" />
<variable
name="showBatteryOptimizations"
type="boolean" />
<import type="android.view.View" />
</data>
<androidx.cardview.widget.CardView
app:cardUseCompatPadding="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:padding="8dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:textAppearance="?android:textAppearanceLarge"
android:text="@string/manage_device_troubleshooting_title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:visibility="@{showNoChildUser ? View.VISIBLE : View.GONE}"
android:textAppearance="?android:textAppearanceMedium"
android:text="@string/manage_device_troubleshooting_text_no_child"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:visibility="@{showBatteryOptimizations ? View.VISIBLE : View.GONE}"
android:id="@+id/batery_optimizations_text"
android:textAppearance="?android:textAppearanceMedium"
android:text="@string/manage_device_troubleshooting_text_battery_optimization"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Open TimeLimit Copyright <C> 2019 Jonas Lochmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<resources>
<string name="manage_device_troubleshooting_title">Warum wird dieses Gerät nicht eingeschränkt?</string>
<string name="manage_device_troubleshooting_text_no_child">Es wurde kein Kind-Benutzer für dieses Gerät gewählt. Nur Kind-Benutzer werden eingeschränkt.</string>
<string name="manage_device_troubleshooting_text_battery_optimization">Wahrscheinlich hat
der Hersteller dieses Gerätes Energiesparfunktionen
eingebaut, die nicht abgeschaltet wurden und Probleme verursachen.
Sie finden die Details zu den Energiesparfunktionen einiger Hersteller und deren Abschaltung
auf der englischen Seite <a href="https://dontkillmyapp.com/">https://dontkillmyapp.com/</a>
\nWenden Sie sich an den Support von TimeLimit, wenn das nicht Ihr Problem behebt.
</string>
</resources>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Open TimeLimit Copyright <C> 2019 Jonas Lochmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation version 3 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<resources>
<string name="manage_device_troubleshooting_title">Why is this device not limited?</string>
<string name="manage_device_troubleshooting_text_no_child">There is no child assigned to this device. Only children are limited.</string>
<string name="manage_device_troubleshooting_text_battery_optimization">Most likely,
this devices manufacturer added some battery optimizations
which were not disabled and cause trouble. You can find details for
some common manufacturers at <a href="https://dontkillmyapp.com/">https://dontkillmyapp.com/</a>
\nIf that does not solve your issue, get in touch with the support of TimeLimit.
</string>
</resources>