Skip to content

Commit a222609

Browse files
oschwaldclaude
andcommitted
fix: Replace deprecated WindowManager display APIs and add HDR capabilities
- Replace WindowManager.defaultDisplay with DisplayManager.getDisplay() which is the recommended approach on API 30+ - Use Display.mode.refreshRate on API 30+ for accurate refresh rate - Add HDR capability collection using Display.HdrCapabilities on API 24+ - Return fallback DisplayInfo if DisplayManager is unavailable - Remove unused WindowManager import 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent fb2a40a commit a222609

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

device-sdk/src/main/java/com/maxmind/device/collector/DeviceDataCollector.kt

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import android.os.StatFs
1010
import android.util.DisplayMetrics
1111
import android.util.Log
1212
import android.view.Display
13-
import android.view.WindowManager
1413
import com.maxmind.device.model.BuildInfo
1514
import com.maxmind.device.model.DeviceData
1615
import com.maxmind.device.model.DisplayInfo
@@ -164,28 +163,39 @@ internal class DeviceDataCollector(
164163
)
165164

166165
private fun collectDisplayInfo(): DisplayInfo {
167-
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
166+
val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as? DisplayManager
167+
?: return DISPLAY_INFO_FALLBACK
168+
169+
val display = displayManager.getDisplay(Display.DEFAULT_DISPLAY)
170+
?: return DISPLAY_INFO_FALLBACK
171+
168172
val displayMetrics = DisplayMetrics()
169173

170174
@Suppress("DEPRECATION")
171-
windowManager.defaultDisplay.getMetrics(displayMetrics)
175+
display.getMetrics(displayMetrics)
176+
177+
// Get refresh rate using modern API on Android R+
178+
val refreshRate = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
179+
display.mode.refreshRate
180+
} else {
181+
@Suppress("DEPRECATION")
182+
display.refreshRate
183+
}
172184

173-
val refreshRate =
174-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
175-
val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
176-
displayManager.getDisplay(Display.DEFAULT_DISPLAY)?.refreshRate
177-
} else {
178-
@Suppress("DEPRECATION")
179-
windowManager.defaultDisplay.refreshRate
180-
}
185+
// Collect HDR capabilities on Android N+ (API 24)
186+
val hdrCapabilities = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
187+
display.hdrCapabilities?.supportedHdrTypes?.toList()
188+
} else {
189+
null
190+
}
181191

182192
return DisplayInfo(
183193
widthPixels = displayMetrics.widthPixels,
184194
heightPixels = displayMetrics.heightPixels,
185195
densityDpi = displayMetrics.densityDpi,
186196
density = displayMetrics.density,
187197
refreshRate = refreshRate,
188-
// hdrCapabilities will be added in DisplayCollector
198+
hdrCapabilities = hdrCapabilities,
189199
)
190200
}
191201

0 commit comments

Comments
 (0)