EN: Support partial device list matches

This commit is contained in:
Marvin W 2020-10-15 22:09:15 +02:00
parent 26f2e859b8
commit d3d04459d6
No known key found for this signature in database
GPG Key ID: 072E9235DB996F2A
1 changed files with 7 additions and 0 deletions

View File

@ -24,13 +24,20 @@ val currentDeviceInfo: DeviceInfo
get() {
var deviceInfo = knownDeviceInfo
if (deviceInfo == null) {
// Note: Custom ROMs sometimes have slightly different model information, so we have some flexibility for those
val byOem = allDeviceInfos.filter { it.oem.equalsIgnoreCase(Build.MANUFACTURER) }
val byDevice = allDeviceInfos.filter { it.device.equalsIgnoreCase(Build.DEVICE) }
val byModel = allDeviceInfos.filter { it.model.equalsIgnoreCase(Build.MODEL) }
val exactMatch = byOem.find { it.device.equalsIgnoreCase(Build.DEVICE) && it.model.equalsIgnoreCase(Build.MODEL) }
deviceInfo = when {
exactMatch != null -> {
// Exact match, use provided confidence
exactMatch
}
byModel.isNotEmpty() || byDevice.isNotEmpty() -> {
// We have data from "sister devices", that's way better than taking the OEM average
averageCurrentDeviceInfo(Build.MANUFACTURER, Build.DEVICE, Build.MODEL, (byDevice + byModel).distinct(), CalibrationConfidence.MEDIUM)
}
byOem.isNotEmpty() -> {
// Fallback to OEM average
averageCurrentDeviceInfo(Build.MANUFACTURER, Build.DEVICE, Build.MODEL, byOem, CalibrationConfidence.LOW)