@@ -109,6 +109,38 @@ public String getDeviceIdleMode(@NonNull final Context context){
109109 return "" ;
110110 }
111111
112+ /**
113+ * Gets the Device Doze Mode Status.
114+ *
115+ * @param context The context to use for PowerManager.
116+ * @return a {@link DeviceDozeModeStatus}
117+ */
118+ @ NonNull
119+ public DeviceDozeModeStatus getDeviceDozeModeStatus (@ NonNull final Context context ){
120+ final String methodTag = TAG + ":getDeviceIdleMode" ;
121+
122+ try {
123+ final PowerManager powerManager = ((PowerManager ) context .getSystemService (Context .POWER_SERVICE ));
124+ if (powerManager == null ) {
125+ Logger .error (methodTag , "PowerManager is null" , null );
126+ return DeviceDozeModeStatus .CannotRetrievePowerManager ;
127+ }
128+ if (powerManager .isDeviceIdleMode ()) {
129+ return DeviceDozeModeStatus .Idle ;
130+ }
131+
132+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU &&
133+ powerManager .isDeviceLightIdleMode ()) {
134+ return DeviceDozeModeStatus .LightIdle ;
135+ }
136+
137+ return DeviceDozeModeStatus .NotInDozeMode ;
138+ } catch (Exception e ){
139+ Logger .error (methodTag , "Unknown Exception when checking doze mode status" , e );
140+ return DeviceDozeModeStatus .UnknownError ;
141+ }
142+ }
143+
112144 /**
113145 * Gets a string representing Power Optimization settings of the calling app
114146 * Will return an empty string if the app isn't opting out.
@@ -156,28 +188,18 @@ public BatteryOptimizationStatus isAppOptedOutFromBatteryOptimization(@NonNull f
156188 try {
157189 final PowerManager powerManager = (PowerManager ) context .getSystemService (Context .POWER_SERVICE );
158190 if (powerManager == null ) {
159- Logger .error (methodTag , "PowerManager is null for package: " + packageName , null );
191+ Logger .error (methodTag , "PowerManager is null" , null );
160192 return BatteryOptimizationStatus .CannotRetrievePowerManager ;
161193 }
162194
163195 if (powerManager .isIgnoringBatteryOptimizations (key )) {
164196 return BatteryOptimizationStatus .OptOut ;
165- } else
166- {
197+ } else {
167198 return BatteryOptimizationStatus .NotOptOut ;
168199 }
169- } catch (NullPointerException e ) {
170- Logger .error (methodTag , "NullPointerException when checking battery optimization status for package: " + packageName , e );
171- return BatteryOptimizationStatus .NullPointerException ;
172- } catch (SecurityException e ) {
173- Logger .error (methodTag , "SecurityException when checking battery optimization status for package: " + packageName , e );
174- return BatteryOptimizationStatus .SecurityException ;
175- } catch (IllegalArgumentException e ) {
176- Logger .error (methodTag , "IllegalArgumentException when checking battery optimization status for package: " + packageName , e );
177- return BatteryOptimizationStatus .IllegalArgumentException ;
178200 } catch (Exception e ) {
179201 Logger .error (methodTag , "Unknown Exception when checking battery optimization status for package: " + packageName , e );
180- return BatteryOptimizationStatus .UnknownException ;
202+ return BatteryOptimizationStatus .UnknownError ;
181203 }
182204 });
183205 }
0 commit comments