Dernière activité 1751963301

Révision 10ce4faf241cea8eacf743f4206f5dfffea8326d

MainActivity.kt Brut
1package xyz.nuark.bgopt
2
3import android.content.Intent
4import android.net.Uri
5import android.os.Build
6import android.os.Bundle
7import android.os.PowerManager
8import android.provider.Settings
9import android.util.Log
10import androidx.activity.enableEdgeToEdge
11import androidx.appcompat.app.AppCompatActivity
12import androidx.core.view.ViewCompat
13import androidx.core.view.WindowInsetsCompat
14import xyz.nuark.bgopt.databinding.ActivityMainBinding
15import java.util.Timer
16import java.util.TimerTask
17
18class MainActivity : AppCompatActivity() {
19 private lateinit var binding: ActivityMainBinding
20 private val timer = Timer()
21
22 override fun onCreate(savedInstanceState: Bundle?) {
23 super.onCreate(savedInstanceState)
24 enableEdgeToEdge()
25
26 binding = ActivityMainBinding.inflate(layoutInflater)
27 setContentView(binding.root)
28 ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
29 val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
30 v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
31 insets
32 }
33
34 binding.requestOpt.setOnClickListener {
35 batteryOptimization()
36 }
37
38 timer.schedule(object : TimerTask() {
39 override fun run() {
40 val opt = checkBatteryOptimization()
41
42 binding.root.post {
43 if (opt) {
44 binding.optStatus.text = "Optimization is disabled"
45 } else {
46 binding.optStatus.text = "Optimization is enabled"
47 }
48 }
49 }
50 }, 0, 1000)
51 }
52
53 fun batteryOptimization() {
54 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
55 val packageName: String? = getPackageName()
56 val powerManager: PowerManager = getSystemService(POWER_SERVICE) as PowerManager
57
58 if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
59 try {
60 val intent = Intent()
61 intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
62 intent.setData(Uri.parse("package:" + packageName))
63 startActivity(intent)
64 } catch (e: Exception) {
65 Log.e("BatteryOpt", "Error excluding app from battery optimization", e)
66 }
67 } else {
68 Log.d("BatteryOpt", "App already excluded from battery optimization")
69 }
70 }
71 }
72
73 fun checkBatteryOptimization(): Boolean {
74 return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
75 val powerManager: PowerManager = getSystemService(POWER_SERVICE) as PowerManager
76 val isIgnoringBattery: Boolean =
77 powerManager.isIgnoringBatteryOptimizations(getPackageName())
78 Log.d("BatteryOpt", "Exclusion of battery optimization: " + isIgnoringBattery)
79
80 isIgnoringBattery
81 } else {
82 Log.d("BatteryOpt", "No battery optimization")
83 false
84 }
85 }
86}