2016-08-31 8 views
4

У Android 6 и 7 есть несколько оптимизаций мощности (режим доза), которые ограничивают сеть приложений, когда устройство не используется.Проверьте, включена ли оптимизация батареи для приложения

Пользователь может отключить режим оптимизации для любого приложения в настройках батареи:

android settings screenshot

Можно ли проверить, если оптимизация включена для моего приложения или нет? Мне нужно попросить пользователя отключить оптимизацию для улучшения функциональности приложения, но я не знаю, как это проверить программно.

ответ

6

Это один немного сложно отследить: вот что вы ищете

PowerManager.isIgnoringBatteryOptimizations()

+1

в случае, если вы хотите иметь возможность пользоваться r, чтобы перевернуть его: https://developer.android.com/reference/android/provider/Settings.html#ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS – FriendlyMikhail

+0

Это относится также к модифицированным ПЗУ производителя или только для сборки Nexus/Pixel/A1? – m3dw3

1

Котлин

/** 
* return false if in settings "Not optimized" and true if "Optimizing battery use" 
*/ 
fun checkBatteryOptimized(): Boolean { 
    val pwrm = applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager 
    val name = applicationContext.packageName 
    if (VERSION.SDK_INT >= VERSION_CODES.M) { 
     return !pwrm.isIgnoringBatteryOptimizations(name) 
    } 
    return false 
} 

и это, чтобы показать оптимизаций Активность в

fun checkBattery() { 
    if (isBatteryOptimized() && VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP_MR1) { 
     val name = resources.getString(R.string.app_name) 
     Toast.makeText(applicationContext, "Battery optimization -> All apps -> $name -> Don't optimize", Toast.LENGTH_LONG).show() 

     val intent = Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS) 
     startActivity(intent) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^