Skip to content

Commit 82d5045

Browse files
committed
Improve device detection: Xiaomi
1 parent 96e3518 commit 82d5045

File tree

2 files changed

+104
-5
lines changed

2 files changed

+104
-5
lines changed

src/main/ua-parser.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -598,12 +598,12 @@
598598
/\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i // Mi Pad tablets
599599
],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
600600

601-
/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, // Xiaomi POCO
602601
/\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
603602
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
604-
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
605-
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, // Xiaomi Redmi 'numeric' models
606-
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i, // Xiaomi Mi
603+
// Xiaomi Redmi / POCO / Black Shark / Qin
604+
/oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i,
605+
// Xiaomi Mi
606+
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i,
607607
/ ([\w ]+) miui\/v?\d/i
608608
], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
609609

@@ -864,7 +864,7 @@
864864
/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i // Samsung Galaxy Watch
865865
], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [
866866
/((pebble))app/i, // Pebble
867-
/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i // Asus ZenWatch / LG Watch / Pixel Watch
867+
/(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch
868868
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
869869
/(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch
870870
], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [

test/data/ua/device/xiaomi.json

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,51 @@
7171
"type": "mobile"
7272
}
7373
},
74+
{
75+
"desc": "XiaoMi Black Shark 3",
76+
"ua": "Mozilla/5.0 (Linux; U; Android 11; zh-CN; SHARK KLE-A0 Build/KLEN2211210CN00MR6) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/17.3.8.1369 Mobile Safari/537.36",
77+
"expect": {
78+
"vendor": "Xiaomi",
79+
"model": "SHARK KLE-A0",
80+
"type": "mobile"
81+
}
82+
},
83+
{
84+
"desc": "XiaoMi Black Shark 4",
85+
"ua": "Mozilla/5.0 (Linux; U; Android 11; en-US; SHARK PRS-H0 Build/PROS2203060OS00MP5) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 UCBrowser/13.4.0.1306 Mobile Safari/537.36",
86+
"expect": {
87+
"vendor": "Xiaomi",
88+
"model": "SHARK PRS-H0",
89+
"type": "mobile"
90+
}
91+
},
92+
{
93+
"desc": "XiaoMi Black Shark 4 Pro",
94+
"ua": "Mozilla/5.0 (Linux; U; Android 11; es-us; SHARK KSR-H0 Build/KASE2208050OS00MP4) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.22.1-gn",
95+
"expect": {
96+
"vendor": "Xiaomi",
97+
"model": "SHARK KSR-H0",
98+
"type": "mobile"
99+
}
100+
},
101+
{
102+
"desc": "XiaoMi Black Shark 5",
103+
"ua": "Mozilla/5.0 (Linux; arm_64; Android 12; SHARK PAR-H0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 YaBrowser/23.5.0.256.00 SA/3 Mobile Safari/537.36",
104+
"expect": {
105+
"vendor": "Xiaomi",
106+
"model": "SHARK PAR-H0",
107+
"type": "mobile"
108+
}
109+
},
110+
{
111+
"desc": "XiaoMi Civi 5 Pro",
112+
"ua": "Mozilla/5.0 (Linux; U; Android 15; zh-CN; 25067PYE3C Build/AQ3A.250129.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/18.0.4.1430 Mobile Safari/537.36",
113+
"expect": {
114+
"vendor": "Xiaomi",
115+
"model": "25067PYE3C",
116+
"type": "mobile"
117+
}
118+
},
74119
{
75120
"desc": "Xiaomi Hongmi Note 1W",
76121
"ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-CN; HM NOTE 1W Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.7.9.439 U3/0.8.0 Mobile Safari/533.1",
@@ -413,6 +458,42 @@
413458
"type": "mobile"
414459
}
415460
},
461+
{
462+
"desc": "Xiaomi Qin 1s+",
463+
"ua": "Mozilla/5.0 (Linux; U; Android 4.4.4; Qin 1s+ Build/KTU84P; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 OPR/46.0.2254.145391",
464+
"expect": {
465+
"vendor": "Xiaomi",
466+
"model": "Qin 1s+",
467+
"type": "mobile"
468+
}
469+
},
470+
{
471+
"desc": "Xiaomi Qin 2",
472+
"ua": "Mozilla/5.0 (Linux; Android 9; Qin 2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36",
473+
"expect": {
474+
"vendor": "Xiaomi",
475+
"model": "Qin 2",
476+
"type": "mobile"
477+
}
478+
},
479+
{
480+
"desc": "Xiaomi Qin 2 Pro",
481+
"ua": "Mozilla/5.0 (Linux; Android 9.0; QIN2 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4215.0 Mobile Safari/537.36 EdgA/86.0.597.0",
482+
"expect": {
483+
"vendor": "Xiaomi",
484+
"model": "QIN2 Pro",
485+
"type": "mobile"
486+
}
487+
},
488+
{
489+
"desc": "Xiaomi Qin 3 Ultra",
490+
"ua": "Mozilla/5.0 (Linux; Android 12; QIN3ULTRA Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/128.0.6613.120 Mobile Safari/537.36",
491+
"expect": {
492+
"vendor": "Xiaomi",
493+
"model": "QIN3ULTRA",
494+
"type": "mobile"
495+
}
496+
},
416497
{
417498
"desc": "Xiaomi Redmi 4A",
418499
"ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
@@ -431,6 +512,15 @@
431512
"type": "mobile"
432513
}
433514
},
515+
{
516+
"desc": "Xiaomi Redmi 15",
517+
"ua": "Mozilla/5.0 (Linux; Android 15; 25062RN2DA Build/AQ3A.250226.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/142.0.7444.212 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/541.0.0.49.79;IABMV/1;]",
518+
"expect": {
519+
"vendor": "Xiaomi",
520+
"model": "25062RN2DA",
521+
"type": "mobile"
522+
}
523+
},
434524
{
435525
"desc": "Xiaomi Redmi K30 5G",
436526
"ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
@@ -601,5 +691,14 @@
601691
"model": "MIBOX3",
602692
"type": "smarttv"
603693
}
694+
},
695+
{
696+
"desc": "Xiaomi Watch 2 Pro",
697+
"ua": "Dalvik/2.1.0 (Linux; U; Android 13; Xiaomi Watch 2 Pro Build/TWR7.231031.001.XM064S)",
698+
"expect": {
699+
"vendor": "Xiaomi",
700+
"model": "Watch 2 Pro",
701+
"type": "wearable"
702+
}
604703
}
605704
]

0 commit comments

Comments
 (0)