Skip to content

Commit 1c2c664

Browse files
committed
DE: adds Android OEM UI detection
Ref #1900
1 parent ffcddf3 commit 1c2c664

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/detection/displayserver/displayserver_android.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,61 @@ static bool detectWithGetprop(FFDisplayServerResult* ds)
140140
return false;
141141
}
142142

143+
static bool detectDE(FFDisplayServerResult* ds)
144+
{
145+
if (ffSettingsGetAndroidProperty("ro.vivo.os.build.display.id", &ds->dePrettyName)) // OriginOS 6
146+
{
147+
ffStrbufAppendC(&ds->dePrettyName, ' ');
148+
ffSettingsGetAndroidProperty("ro.vivo.product.version", &ds->dePrettyName); // PD2505D_xxx
149+
return true;
150+
}
151+
if (ffSettingsGetAndroidProperty("ro.build.version.magic", &ds->dePrettyName) ||
152+
ffSettingsGetAndroidProperty("ro.build.version.emui", &ds->dePrettyName))
153+
{
154+
ffStrbufReplaceAllC(&ds->dePrettyName, '_', ' ');
155+
return true;
156+
}
157+
if (ffSettingsGetAndroidProperty("ro.mi.os.version.name", &ds->dePrettyName))
158+
{
159+
// MiUI like
160+
ffStrbufClear(&ds->dePrettyName);
161+
ffSettingsGetAndroidProperty("ro.build.version.incremental", &ds->dePrettyName); // Detail version number
162+
if (ffStrbufStartsWithS(&ds->dePrettyName, "OS"))
163+
{
164+
ds->dePrettyName.chars[0] = 'S';
165+
ds->dePrettyName.chars[1] = ' ';
166+
ffStrbufPrependS(&ds->dePrettyName, "HyperO");
167+
}
168+
else if (ffStrbufStartsWithS(&ds->dePrettyName, "V"))
169+
{
170+
ds->dePrettyName.chars[0] = ' ';
171+
ffStrbufPrependS(&ds->dePrettyName, "MiUI");
172+
}
173+
else
174+
ffStrbufSetStatic(&ds->dePrettyName, "MiUI");
175+
return true;
176+
}
177+
if (ffSettingsGetAndroidProperty("ro.build.version.oplusrom", &ds->dePrettyName))
178+
{
179+
if (ffStrbufStartsWithS(&ds->dePrettyName, "V"))
180+
ffStrbufSubstrAfter(&ds->dePrettyName, 0);
181+
ffStrbufPrependS(&ds->dePrettyName, "ColorOS");
182+
return true;
183+
}
184+
if (ffSettingsGetAndroidProperty("ro.oxygen.version", &ds->dePrettyName))
185+
{
186+
ffStrbufPrependS(&ds->dePrettyName, "OxygenOS");
187+
return true;
188+
}
189+
if (ffSettingsGetAndroidProperty("ro.build.display.id", &ds->dePrettyName) && ffStrbufStartsWithS(&ds->dePrettyName, "RedMagicOS"))
190+
{
191+
ffStrbufInsertNC(&ds->dePrettyName, strlen("RedMagicOS"), 1, ' ');
192+
return true;
193+
}
194+
195+
return false;
196+
}
197+
143198
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
144199
{
145200
const char* error = ffdsConnectXcbRandr(ds);
@@ -158,4 +213,6 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
158213

159214
if (!detectWithGetprop(ds))
160215
detectWithDumpsys(ds);
216+
217+
detectDE(ds);
161218
}

0 commit comments

Comments
 (0)