device_detector 1.0.7 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,7 @@ class DeviceDetector
22
22
 
23
23
  DEVICE_BRANDS = {
24
24
  '5E' => '2E',
25
+ '5IV' => '5IVE',
25
26
  '2F' => 'F2 Mobile',
26
27
  '3Q' => '3Q',
27
28
  'J7' => '7 Mobile',
@@ -31,30 +32,41 @@ class DeviceDetector
31
32
  '04' => '4ife',
32
33
  '36' => '360',
33
34
  '88' => '8848',
35
+ '10M' => '10moons',
34
36
  '41' => 'A1',
35
37
  '00' => 'Accent',
38
+ 'ACC' => 'Accesstyle',
36
39
  'AE' => 'Ace',
37
40
  'AC' => 'Acer',
38
41
  '3K' => 'Acteck',
42
+ 'ACT' => 'actiMirror',
39
43
  'A9' => 'Advan',
40
44
  'AD' => 'Advance',
45
+ 'ADV' => 'Advantage Air',
41
46
  '76' => 'Adronix',
42
47
  'AF' => 'AfriOne',
48
+ 'FY' => 'AFFIX',
43
49
  'A3' => 'AGM',
50
+ 'AEE' => 'AEEZO',
44
51
  'J0' => 'AG Mobile',
45
52
  'AZ' => 'Ainol',
53
+ 'AIR' => 'Airis',
46
54
  'AI' => 'Airness',
55
+ 'ARP' => 'Airpha',
47
56
  'AT' => 'Airties',
57
+ '7U' => 'Airtel',
48
58
  'U0' => 'AIRON',
49
59
  '0A' => 'AIS',
50
60
  'AW' => 'Aiwa',
51
61
  '85' => 'Aiuto',
62
+ 'U7' => 'AIDATA',
52
63
  'AK' => 'Akai',
53
64
  'Q3' => 'AKIRA',
54
65
  '1A' => 'Alba',
55
66
  'AL' => 'Alcatel',
56
67
  '20' => 'Alcor',
57
68
  'XY' => 'Alps',
69
+ 'XYA' => 'XY Auto',
58
70
  '7L' => 'ALDI NORD',
59
71
  '6L' => 'ALDI SÜD',
60
72
  '3L' => 'Alfawise',
@@ -62,17 +74,21 @@ class DeviceDetector
62
74
  'AA' => 'AllCall',
63
75
  '3A' => 'AllDocube',
64
76
  'A2' => 'Allview',
77
+ 'ALI' => 'ALLINmobile',
65
78
  'A7' => 'Allwinner',
66
79
  'A1' => 'Altech UEC',
67
80
  '66' => 'Altice',
68
81
  'A5' => 'altron',
69
82
  'KN' => 'Amazon',
83
+ 'AMA' => 'AMA',
70
84
  'AG' => 'AMGOO',
71
85
  '9A' => 'Amigoo',
72
86
  'AO' => 'Amoi',
73
87
  '3J' => 'Amino',
74
88
  '54' => 'AMCV',
75
89
  '60' => 'Andowl',
90
+ 'ANX' => 'ANXONIT',
91
+ '6J' => 'Angelcare',
76
92
  '7A' => 'Anry',
77
93
  'A0' => 'ANS',
78
94
  '74' => 'Anker',
@@ -80,6 +96,7 @@ class DeviceDetector
80
96
  'O8' => 'AOC',
81
97
  'J2' => 'AOYODKG',
82
98
  '55' => 'AOpen',
99
+ 'RW' => 'Aoro',
83
100
  '9Y' => 'Aocos',
84
101
  'AP' => 'Apple',
85
102
  'AR' => 'Archos',
@@ -89,6 +106,7 @@ class DeviceDetector
89
106
  'AN' => 'Arnova',
90
107
  'AS' => 'ARRIS',
91
108
  'AQ' => 'Aspera',
109
+ 'HJ' => 'Aquarius',
92
110
  '40' => 'Artel',
93
111
  '21' => 'Artizlee',
94
112
  '59' => 'ArtLine',
@@ -97,32 +115,52 @@ class DeviceDetector
97
115
  '1U' => 'Astro',
98
116
  'A4' => 'Ask',
99
117
  'A8' => 'Assistant',
118
+ 'ASS' => 'ASSE',
100
119
  'AU' => 'Asus',
101
120
  '6A' => 'AT&T',
121
+ 'ATH' => 'Athesi',
122
+ '5Q' => 'Atmaca Elektronik',
123
+ 'YH' => 'ATMAN',
102
124
  '2A' => 'Atom',
125
+ 'ATO' => 'ATOL',
103
126
  'Z2' => 'Atvio',
127
+ 'ATI' => 'Attila',
104
128
  'AX' => 'Audiovox',
105
129
  'AJ' => 'AURIS',
130
+ 'YZ' => 'Autan',
106
131
  'ZA' => 'Avenzo',
107
132
  'AH' => 'AVH',
108
133
  'AV' => 'Avvio',
134
+ 'AVA' => 'Avaya',
109
135
  'AY' => 'Axxion',
136
+ 'AXX' => 'AXXA',
137
+ 'YR' => 'AYYA',
110
138
  'XA' => 'Axioo',
111
139
  'AM' => 'Azumi Mobile',
112
140
  'WW' => 'Awow',
141
+ 'XU' => 'AUX',
142
+ 'BAC' => 'Backcell',
143
+ 'BFF' => 'BAFF',
113
144
  'BO' => 'BangOlufsen',
114
145
  'BN' => 'Barnes & Noble',
146
+ 'BAR' => 'BARTEC',
115
147
  'BB' => 'BBK',
116
148
  '0B' => 'BB Mobile',
117
149
  'B6' => 'BDF',
118
150
  'QD' => 'BDQ',
151
+ '8Z' => 'BDsharing',
152
+ 'BEF' => 'Beafon',
119
153
  'BE' => 'Becker',
120
154
  'B5' => 'Beeline',
121
155
  'B0' => 'Beelink',
122
156
  'BL' => 'Beetel',
157
+ '2X' => 'Benco',
123
158
  'BQ' => 'BenQ',
124
159
  'BS' => 'BenQ-Siemens',
125
160
  '4Y' => 'Benzo',
161
+ 'XJ' => 'Benesse',
162
+ 'BEN' => 'BenWee',
163
+ 'YB' => 'Beista',
126
164
  'BY' => 'BS Mobile',
127
165
  'BZ' => 'Bezkam',
128
166
  '9B' => 'Bellphone',
@@ -132,33 +170,49 @@ class DeviceDetector
132
170
  'B8' => 'BIHEE',
133
171
  '1B' => 'Billion',
134
172
  'BA' => 'BilimLand',
173
+ 'BIL' => 'Billow',
135
174
  'BH' => 'BioRugged',
136
175
  'BI' => 'Bird',
137
176
  'BT' => 'Bitel',
138
177
  'B7' => 'Bitmore',
178
+ 'ZB' => 'Bittium',
139
179
  'BK' => 'Bkav',
140
180
  '5B' => 'Black Bear',
141
181
  'BF' => 'Black Fox',
182
+ 'BPC' => 'Blackpcs',
142
183
  'B2' => 'Blackview',
184
+ '2Y' => 'b2m',
143
185
  'BP' => 'Blaupunkt',
144
186
  'BU' => 'Blu',
187
+ 'BUS' => 'BluSlate',
188
+ 'BUZ' => 'BuzzTV',
145
189
  'B3' => 'Bluboo',
146
190
  '2B' => 'Bluedot',
147
191
  'BD' => 'Bluegood',
148
192
  'LB' => 'Bluewave',
149
193
  'J8' => 'Bluebird',
194
+ 'BSS' => 'BlueSky',
150
195
  '7B' => 'Blloc',
151
196
  'UB' => 'Bleck',
152
197
  'Q2' => 'Blow',
198
+ 'BLI' => 'BLISS',
153
199
  'BM' => 'Bmobile',
154
200
  'Y5' => 'BMAX',
201
+ 'BMX' => 'BMXC',
155
202
  'B9' => 'Bobarry',
156
203
  'B4' => 'bogo',
204
+ 'BOL' => 'Bolva',
157
205
  'BW' => 'Boway',
206
+ 'BOO' => 'Boost',
207
+ 'BOK' => 'Bookeen',
158
208
  'BX' => 'bq',
159
209
  '8B' => 'Brandt',
210
+ 'BRA' => 'BrandCode',
160
211
  'BV' => 'Bravis',
212
+ 'BRV' => 'BRAVE',
213
+ 'BRG' => 'Brigmton',
161
214
  'BR' => 'Brondi',
215
+ 'XF' => 'BROR',
162
216
  'BJ' => 'BrightSign',
163
217
  'B1' => 'Bush',
164
218
  '4Q' => 'Bundy',
@@ -169,22 +223,31 @@ class DeviceDetector
169
223
  '37' => 'CGV',
170
224
  'CP' => 'Captiva',
171
225
  'CF' => 'Carrefour',
226
+ 'CA1' => 'Carbon Mobile',
172
227
  'CS' => 'Casio',
173
228
  'R4' => 'Casper',
174
229
  'CA' => 'Cat',
175
230
  'BC' => 'Camfone',
176
231
  'CJ' => 'Cavion',
177
232
  '4D' => 'Canal Digital',
233
+ 'CNG' => 'Canguro',
234
+ 'CEI' => 'Ceibal',
178
235
  '02' => 'Cell-C',
236
+ 'CEL' => 'Cellacom',
179
237
  '34' => 'CellAllure',
180
238
  '7C' => 'Celcus',
181
239
  'CE' => 'Celkon',
182
240
  'CG' => 'Cellution',
183
241
  '62' => 'Centric',
184
242
  'C2' => 'Changhong',
243
+ 'CHA' => 'Chainway',
244
+ 'CHG' => 'ChiliGreen',
185
245
  'CH' => 'Cherry Mobile',
186
246
  'C3' => 'China Mobile',
247
+ 'U9' => 'China Telecom',
187
248
  'CI' => 'Chico Mobile',
249
+ 'CIP' => 'CipherLab',
250
+ 'CIT' => 'Citycall',
188
251
  '1C' => 'Chuwi',
189
252
  'L8' => 'Clarmin',
190
253
  '25' => 'Claresta',
@@ -199,19 +262,25 @@ class DeviceDetector
199
262
  'CL' => 'Compal',
200
263
  'CQ' => 'Compaq',
201
264
  'C7' => 'ComTrade Tesla',
265
+ '7Z' => 'COMPUMAX',
202
266
  'C8' => 'Concord',
203
267
  'CC' => 'ConCorde',
204
268
  'C5' => 'Condor',
269
+ 'C5M' => 'C5 Mobile',
205
270
  '4C' => 'Conquest',
206
271
  '3C' => 'Contixo',
207
272
  '8C' => 'Connex',
208
273
  '53' => 'Connectce',
274
+ 'CON' => 'Conceptum',
209
275
  '9C' => 'Colors',
210
276
  'CO' => 'Coolpad',
277
+ 'COO' => 'Coopers',
211
278
  '4R' => 'CORN',
212
279
  '1O' => 'Cosmote',
213
280
  'CW' => 'Cowon',
214
281
  '75' => 'Covia',
282
+ 'QG' => 'COYOTE',
283
+ 'YW' => 'ClearPHONE',
215
284
  '33' => 'Clementoni',
216
285
  'CR' => 'CreNova',
217
286
  'CX' => 'Crescent',
@@ -219,39 +288,61 @@ class DeviceDetector
219
288
  'CM' => 'Crius Mea',
220
289
  '0C' => 'Crony',
221
290
  'C1' => 'Crosscall',
291
+ '4W' => 'Crown',
292
+ 'CTR' => 'Ctroniq',
222
293
  'CU' => 'Cube',
223
294
  'CB' => 'CUBOT',
224
295
  'CV' => 'CVTE',
296
+ 'CWO' => 'Cwowdefu',
225
297
  'C4' => 'Cyrus',
226
298
  'D5' => 'Daewoo',
227
299
  'DA' => 'Danew',
300
+ 'DAN' => 'Dany',
301
+ 'DA1' => 'DangcapHD',
228
302
  'DT' => 'Datang',
229
303
  'D7' => 'Datawind',
230
304
  '7D' => 'Datamini',
231
305
  '6D' => 'Datalogic',
232
306
  'D1' => 'Datsun',
233
307
  'DZ' => 'Dazen',
308
+ 'DAS' => 'DASS',
234
309
  'DB' => 'Dbtel',
310
+ 'DBP' => 'DbPhone',
311
+ 'DCO' => 'Dcode',
235
312
  'DL' => 'Dell',
313
+ 'DL0' => 'DL',
236
314
  'DE' => 'Denver',
237
315
  'DS' => 'Desay',
316
+ 'DSI' => 'DSIC',
238
317
  'DW' => 'DeWalt',
239
318
  'DX' => 'DEXP',
319
+ 'DEY' => 'DEYI',
320
+ 'DEN' => 'Denali',
321
+ 'DEA' => 'DEALDIG',
240
322
  '8D' => 'DF',
323
+ 'DGT' => 'DGTEC',
241
324
  'DG' => 'Dialog',
242
325
  'DI' => 'Dicam',
243
326
  'D4' => 'Digi',
244
327
  'D3' => 'Digicel',
328
+ 'DDG' => 'Digidragon',
245
329
  'DH' => 'Digihome',
246
330
  'DD' => 'Digiland',
331
+ 'DIJ' => 'DIJITSU',
332
+ 'DIG' => 'Digit4G',
333
+ 'DIC' => 'DIGICOM',
247
334
  'Q0' => 'DIGIFORS',
248
335
  'DQ' => 'DISH',
336
+ 'DIS' => 'Disney',
249
337
  '9D' => 'Ditecma',
250
338
  'D2' => 'Digma',
251
339
  '1D' => 'Diva',
340
+ 'DIV' => 'DiverMax',
252
341
  'D6' => 'Divisat',
253
342
  'X6' => 'DIXON',
343
+ 'DIM' => 'DIMO',
254
344
  '5D' => 'DING DING',
345
+ 'DIN' => 'Dinax',
255
346
  'DM' => 'DMM',
256
347
  'DN' => 'DNS',
257
348
  'DC' => 'DoCoMo',
@@ -260,42 +351,74 @@ class DeviceDetector
260
351
  'DO' => 'Doogee',
261
352
  'D0' => 'Doopro',
262
353
  'DV' => 'Doov',
354
+ 'DOM' => 'Dom.ru',
263
355
  'DP' => 'Dopod',
356
+ 'DPA' => 'DPA',
357
+ 'JQ' => 'Doppio',
264
358
  'DR' => 'Doro',
359
+ 'ZD' => 'DORLAND',
265
360
  'D8' => 'Droxio',
266
361
  'DJ' => 'Dragon Touch',
362
+ 'DRA' => 'DRAGON',
267
363
  'DY' => 'Dreamgate',
364
+ 'DRE' => 'DreamTab',
365
+ 'DR1' => 'DreamStar',
366
+ 'DTA' => 'Dtac',
268
367
  'DU' => 'Dune HD',
269
368
  'UD' => 'DUNNS Mobile',
369
+ 'DUU' => 'Duubee',
370
+ 'DUR' => 'Durabook',
371
+ 'DTE' => 'D-Tech',
372
+ 'DLI' => 'D-Link',
373
+ 'ENO' => 'eNOVA',
374
+ 'IN2' => 'iNOVA',
375
+ 'INH' => 'Inhon',
270
376
  'EB' => 'E-Boda',
271
377
  'EJ' => 'Engel',
378
+ 'ENA' => 'ENACOM',
379
+ 'ENI' => 'ENIE',
272
380
  '2E' => 'E-Ceros',
273
381
  'E8' => 'E-tel',
274
382
  'EP' => 'Easypix',
275
383
  'EQ' => 'Eagle',
276
384
  'EA' => 'EBEST',
385
+ 'YC' => 'EBEN',
277
386
  'E4' => 'Echo Mobiles',
387
+ 'EQ1' => 'Equator',
278
388
  'ES' => 'ECS',
279
389
  '35' => 'ECON',
390
+ 'ECC' => 'ECOO',
391
+ 'ZZ' => 'ecom',
280
392
  'E6' => 'EE',
393
+ 'GW' => 'EGL',
394
+ 'EFT' => 'EFT',
281
395
  'EK' => 'EKO',
282
396
  'EY' => 'Einstein',
283
397
  'EM' => 'Eks Mobility',
284
398
  'UE' => 'Ematic',
399
+ 'EMR' => 'Emporia',
285
400
  '4K' => 'EKT',
401
+ 'EKI' => 'EKINOX',
286
402
  '7E' => 'ELARI',
287
403
  '03' => 'Electroneum',
288
404
  'Z8' => 'ELECTRONIA',
405
+ 'EL1' => 'Elecson',
289
406
  'L0' => 'Element',
290
407
  'EG' => 'Elenberg',
291
408
  'EL' => 'Elephone',
292
409
  'JE' => 'Elekta',
410
+ 'ELE' => 'Elevate',
293
411
  '4E' => 'Eltex',
412
+ 'ELM' => 'Elong Mobile',
294
413
  'ED' => 'Energizer',
295
414
  'E1' => 'Energy Sistem',
296
415
  '3E' => 'Enot',
416
+ 'ENT' => 'Entity',
417
+ 'ENV' => 'Envizen',
297
418
  '8E' => 'Epik One',
419
+ 'EPK' => 'Epic',
298
420
  'XP' => 'Epson',
421
+ 'EPH' => 'Ephone',
299
422
  'E7' => 'Ergo',
300
423
  'EC' => 'Ericsson',
301
424
  '05' => 'Erisson',
@@ -307,11 +430,15 @@ class DeviceDetector
307
430
  'ET' => 'eTouch',
308
431
  '1E' => 'Etuline',
309
432
  'EU' => 'Eurostar',
433
+ '4J' => 'Eurocase',
310
434
  'E9' => 'Evercoss',
311
435
  'EV' => 'Evertek',
436
+ 'EVE' => 'Everest',
437
+ 'EV1' => 'Everex',
312
438
  'E3' => 'Evolio',
313
439
  'EO' => 'Evolveo',
314
440
  '0Q' => 'Evoo',
441
+ '5U' => 'EVPAD',
315
442
  'E0' => 'EvroMedia',
316
443
  'XE' => 'ExMobile',
317
444
  '4Z' => 'Exmart',
@@ -322,24 +449,35 @@ class DeviceDetector
322
449
  'QE' => 'EWIS',
323
450
  'EI' => 'Ezio',
324
451
  'EZ' => 'Ezze',
452
+ 'UF' => 'EYU',
453
+ 'UE1' => 'UE',
325
454
  '5F' => 'F150',
455
+ 'FPS' => 'F+',
326
456
  'F6' => 'Facebook',
457
+ 'FAC' => 'Facetel',
458
+ 'FA1' => 'Facime',
327
459
  'FA' => 'Fairphone',
328
460
  'FM' => 'Famoco',
461
+ 'FAM' => 'Famous',
329
462
  '17' => 'FarEasTone',
330
463
  '9R' => 'FaRao Pro',
464
+ 'FAR' => 'Farassoo',
331
465
  'FB' => 'Fantec',
332
466
  'FE' => 'Fengxiang',
333
467
  'F7' => 'Fero',
334
468
  '67' => 'FEONAL',
335
469
  'FI' => 'FiGO',
470
+ 'J9' => 'FiGi',
471
+ 'FIG' => 'Figgers',
336
472
  'F9' => 'FiiO',
337
473
  'F1' => 'FinePower',
338
474
  'FX' => 'Finlux',
339
475
  'F3' => 'FireFly Mobile',
340
476
  'F8' => 'FISE',
477
+ 'FIL' => 'FILIX',
341
478
  'FL' => 'Fly',
342
479
  'QC' => 'FLYCAT',
480
+ 'FLU' => 'Fluo',
343
481
  'FN' => 'FNB',
344
482
  'FD' => 'Fondi',
345
483
  '0F' => 'Fourel',
@@ -350,24 +488,43 @@ class DeviceDetector
350
488
  'FR' => 'Forstar',
351
489
  'RF' => 'Fortis',
352
490
  'FO' => 'Foxconn',
491
+ 'FOD' => 'FoxxD',
492
+ 'FJ' => 'FOODO',
493
+ 'FOS' => 'FOSSiBOT',
353
494
  'FT' => 'Freetel',
495
+ 'FRU' => 'Frunsi',
354
496
  'F4' => 'F&U',
355
497
  '1F' => 'FMT',
498
+ 'FPT' => 'FPT',
356
499
  'FG' => 'Fuego',
357
500
  'FU' => 'Fujitsu',
501
+ '4F' => 'Funai',
502
+ '5J' => 'Fusion5',
503
+ 'FF' => 'Future Mobile Technology',
504
+ 'FFF' => 'FFF SmartLife',
358
505
  'FW' => 'FNF',
506
+ 'FXT' => 'Fxtec',
359
507
  'GT' => 'G-TiDE',
360
508
  'G9' => 'G-Touch',
509
+ 'GFO' => 'Gfone',
510
+ 'GTM' => 'GTMEDIA',
361
511
  '0G' => 'GFive',
362
512
  'GM' => 'Garmin-Asus',
363
513
  'GA' => 'Gateway',
364
514
  '99' => 'Galaxy Innovations',
515
+ 'GA1' => 'Galactic',
516
+ 'GAM' => 'Gamma',
517
+ 'GAZ' => 'Gazer',
518
+ 'GEA' => 'Geanee',
519
+ 'GEN' => 'Geant',
365
520
  'GD' => 'Gemini',
366
521
  'GN' => 'General Mobile',
367
522
  '2G' => 'Genesis',
368
523
  'G2' => 'GEOFOX',
369
524
  'GE' => 'Geotel',
370
525
  'Q4' => 'Geotex',
526
+ 'GEO' => 'GEOZON',
527
+ 'GER' => 'Gear Mobile',
371
528
  'GH' => 'Ghia',
372
529
  '2C' => 'Ghong',
373
530
  'GJ' => 'Ghost',
@@ -376,6 +533,7 @@ class DeviceDetector
376
533
  'GZ' => 'Ginzzu',
377
534
  '1G' => 'Gini',
378
535
  'GI' => 'Gionee',
536
+ 'GIR' => 'GIRASOLE',
379
537
  'G4' => 'Globex',
380
538
  '38' => 'GLONYX',
381
539
  'U6' => 'Glofiish',
@@ -384,110 +542,165 @@ class DeviceDetector
384
542
  '5G' => 'Gocomma',
385
543
  'GB' => 'Gol Mobile',
386
544
  'GL' => 'Goly',
545
+ 'GOL' => 'GoldMaster',
387
546
  'GX' => 'GLX',
388
547
  'G5' => 'Gome',
389
548
  'G1' => 'GoMobile',
390
549
  'GO' => 'Google',
391
550
  'G0' => 'Goophone',
392
551
  '6G' => 'Gooweel',
552
+ 'GOO' => 'GOODTEL',
553
+ '8G' => 'Gplus',
393
554
  'GR' => 'Gradiente',
394
555
  'GP' => 'Grape',
395
556
  'G6' => 'Gree',
557
+ 'GRA' => 'Great Asia',
396
558
  '3G' => 'Greentel',
559
+ 'GRO' => 'Green Orange',
560
+ 'GR1' => 'GroBerwert',
397
561
  'GF' => 'Gretel',
398
562
  '82' => 'Gresso',
399
563
  'GU' => 'Grundig',
400
564
  'GV' => 'Gtel',
565
+ 'CUO' => 'Guophone',
566
+ 'H13' => 'H133',
401
567
  '9Z' => 'H96',
402
568
  'HF' => 'Hafury',
569
+ '9F' => 'HAOVM',
570
+ 'HAQ' => 'HAOQIN',
403
571
  'HA' => 'Haier',
572
+ 'XH' => 'Haipai',
573
+ 'HAN' => 'Handheld',
404
574
  'HE' => 'HannSpree',
405
575
  'HK' => 'Hardkernel',
576
+ 'HAR' => 'Harper',
577
+ 'HA1' => 'Hartens',
406
578
  'HS' => 'Hasee',
579
+ '8H' => 'Hamlet',
580
+ 'HAM' => 'Hammer',
581
+ 'HAT' => 'Hathway',
407
582
  'H6' => 'Helio',
408
583
  'HQ' => 'HERO',
409
584
  'ZH' => 'Hezire',
585
+ 'HEX' => 'HexaByte',
586
+ 'HEW' => 'HeadWolf',
410
587
  'HL' => 'Hi-Level',
411
588
  '3H' => 'Hi',
589
+ 'HIB' => 'Hiberg',
590
+ 'HIH' => 'HiHi',
591
+ 'HIK' => 'HiKing',
412
592
  'H2' => 'Highscreen',
413
593
  'Q1' => 'High Q',
414
594
  '1H' => 'Hipstreet',
415
595
  'HI' => 'Hisense',
596
+ 'HIP' => 'HIPER',
416
597
  'HC' => 'Hitachi',
417
598
  'H8' => 'Hitech',
418
599
  'W3' => 'HiMax',
600
+ '8X' => 'Hi Nova',
601
+ 'HLL' => 'HLLO',
602
+ '8W' => 'HKPro',
419
603
  'H1' => 'Hoffmann',
420
604
  'H0' => 'Hometech',
421
605
  'HM' => 'Homtom',
422
606
  'HZ' => 'Hoozo',
423
607
  'H7' => 'Horizon',
608
+ '4H' => 'Horizont',
424
609
  'HO' => 'Hosin',
425
610
  'H3' => 'Hotel',
426
611
  'HV' => 'Hotwav',
612
+ 'U8' => 'Hot Pepper',
613
+ 'JH' => 'HOTREALS',
427
614
  'HW' => 'How',
428
615
  'WH' => 'Honeywell',
429
616
  'HP' => 'HP',
617
+ 'HDC' => 'HDC',
430
618
  'HT' => 'HTC',
619
+ 'QZ' => 'Huagan',
431
620
  'HD' => 'Huadoo',
432
621
  'HG' => 'Huavi',
433
622
  'HU' => 'Huawei',
434
623
  'HX' => 'Humax',
435
624
  'HR' => 'Hurricane',
436
625
  'H5' => 'Huskee',
626
+ 'HUG' => 'Hugerock',
437
627
  'HY' => 'Hyrican',
438
628
  'HN' => 'Hyundai',
439
629
  '7H' => 'Hyve',
630
+ 'HYT' => 'Hytera',
631
+ 'HYK' => 'Hykker',
440
632
  '3I' => 'i-Cherry',
441
633
  'IJ' => 'i-Joy',
442
634
  'IM' => 'i-mate',
443
635
  'IO' => 'i-mobile',
636
+ 'INN' => 'I-INN',
444
637
  'OF' => 'iOutdoor',
445
638
  'IB' => 'iBall',
446
639
  'IY' => 'iBerry',
447
640
  '7I' => 'iBrit',
641
+ 'IBO' => 'ibowin',
448
642
  'I2' => 'IconBIT',
449
643
  'IC' => 'iDroid',
644
+ 'IDI' => 'iDino',
645
+ '6Z' => 'iData',
450
646
  'IG' => 'iGet',
451
647
  'IH' => 'iHunt',
452
648
  'IA' => 'Ikea',
649
+ 'IYO' => 'iYou',
453
650
  '8I' => 'IKU Mobile',
454
651
  '2K' => 'IKI Mobile',
455
652
  'IK' => 'iKoMo',
653
+ '58' => 'iKon',
456
654
  'I7' => 'iLA',
457
655
  '2I' => 'iLife',
458
656
  '1I' => 'iMars',
657
+ 'IMI' => 'iMI',
459
658
  'U4' => 'iMan',
659
+ 'ILE' => 'iLepo',
460
660
  'IL' => 'IMO Mobile',
661
+ 'IM1' => 'Imose',
461
662
  'I3' => 'Impression',
462
663
  'FC' => 'INCAR',
463
664
  '2H' => 'Inch',
464
665
  '6I' => 'Inco',
465
666
  'IW' => 'iNew',
466
667
  'IF' => 'Infinix',
668
+ 'INF' => 'Infiniton',
467
669
  'I0' => 'InFocus',
670
+ 'IN1' => 'InFone',
468
671
  'II' => 'Inkti',
469
672
  '81' => 'InfoKit',
470
673
  'I5' => 'InnJoo',
471
674
  '26' => 'Innos',
472
675
  'IN' => 'Innostream',
473
676
  'I4' => 'Inoi',
677
+ 'INO' => 'iNo Mobile',
474
678
  'IQ' => 'INQ',
475
679
  'QN' => 'iQ&T',
476
680
  'IS' => 'Insignia',
477
681
  'YI' => 'INSYS',
478
682
  'IT' => 'Intek',
683
+ 'INT' => 'Intel',
479
684
  'IX' => 'Intex',
480
685
  'IV' => 'Inverto',
481
686
  '32' => 'Invens',
482
687
  '4I' => 'Invin',
688
+ 'INA' => 'iNavi',
483
689
  'I1' => 'iOcean',
690
+ 'IMU' => 'iMuz',
484
691
  'IP' => 'iPro',
692
+ 'X9' => 'iPEGTOP',
485
693
  '8Q' => 'IQM',
694
+ 'Q8' => 'IRA',
486
695
  'I6' => 'Irbis',
487
696
  '5I' => 'Iris',
697
+ 'IRE' => 'iReplace',
488
698
  'IR' => 'iRola',
489
699
  'IU' => 'iRulu',
700
+ 'IRO' => 'iRobot',
490
701
  '9I' => 'iSWAG',
702
+ '9J' => 'iSafe Mobile',
703
+ 'IST' => 'iStar',
491
704
  '86' => 'IT',
492
705
  'IZ' => 'iTel',
493
706
  '0I' => 'iTruck',
@@ -495,41 +708,60 @@ class DeviceDetector
495
708
  'IE' => 'iView',
496
709
  '0J' => 'iVooMi',
497
710
  'UI' => 'ivvi',
711
+ 'QW' => 'iWaylink',
498
712
  'I9' => 'iZotron',
713
+ 'IXT' => 'iXTech',
499
714
  'JA' => 'JAY-Tech',
500
715
  'KJ' => 'Jiake',
716
+ 'JD' => 'Jedi',
501
717
  'J6' => 'Jeka',
502
718
  'JF' => 'JFone',
503
719
  'JI' => 'Jiayu',
504
720
  'JG' => 'Jinga',
721
+ 'JX' => 'Jio',
505
722
  'VJ' => 'Jivi',
506
723
  'JK' => 'JKL',
724
+ 'JR1' => 'JREN',
507
725
  'JO' => 'Jolla',
726
+ 'JP' => 'Joy',
727
+ 'JOY' => 'JoySurf',
508
728
  'UJ' => 'Juniper Systems',
509
729
  'J5' => 'Just5',
730
+ '7J' => 'Jumper',
731
+ 'JPA' => 'JPay',
510
732
  'JV' => 'JVC',
733
+ 'JXD' => 'JXD',
511
734
  'JS' => 'Jesy',
512
735
  'KT' => 'K-Touch',
736
+ 'KLT' => 'K-Lite',
513
737
  'K4' => 'Kaan',
514
738
  'K7' => 'Kaiomy',
515
739
  'KL' => 'Kalley',
516
740
  'K6' => 'Kanji',
517
741
  'KA' => 'Karbonn',
518
742
  'K5' => 'KATV1',
743
+ 'KAP' => 'Kapsys',
519
744
  'K0' => 'Kata',
520
745
  'KZ' => 'Kazam',
521
746
  '9K' => 'Kazuna',
522
747
  'KD' => 'KDDI',
748
+ 'KHA' => 'Khadas',
523
749
  'KS' => 'Kempler & Strauss',
524
750
  'K3' => 'Keneksi',
525
751
  'KX' => 'Kenxinda',
752
+ 'KEN' => 'Kenbo',
753
+ 'KZG' => 'KZG',
526
754
  'K1' => 'Kiano',
755
+ '5W' => 'Kingbox',
527
756
  'KI' => 'Kingsun',
757
+ 'KIS' => 'Kinstone',
528
758
  'KF' => 'KINGZONE',
759
+ 'KIN' => 'Kingstar',
529
760
  '46' => 'Kiowa',
530
761
  'KV' => 'Kivi',
531
762
  '64' => 'Kvant',
532
763
  '0K' => 'Klipad',
764
+ 'KNM' => 'KN Mobile',
533
765
  'KC' => 'Kocaso',
534
766
  'KK' => 'Kodak',
535
767
  'KG' => 'Kogan',
@@ -541,12 +773,15 @@ class DeviceDetector
541
773
  'K9' => 'Kooper',
542
774
  'KP' => 'KOPO',
543
775
  'KR' => 'Koridy',
776
+ 'XK' => 'Koslam',
544
777
  'K2' => 'KRONO',
545
778
  'KE' => 'Krüger&Matz',
546
779
  '5K' => 'KREZ',
547
780
  'WK' => 'KRIP',
781
+ 'KRA' => 'Kraft',
548
782
  'KH' => 'KT-Tech',
549
783
  'Z6' => 'KUBO',
784
+ 'KUG' => 'KuGou',
550
785
  'K8' => 'Kuliao',
551
786
  '8K' => 'Kult',
552
787
  'KU' => 'Kumai',
@@ -558,21 +793,27 @@ class DeviceDetector
558
793
  'L6' => 'Land Rover',
559
794
  'L2' => 'Landvo',
560
795
  'LA' => 'Lanix',
796
+ 'LA1' => 'Lanin',
561
797
  'LK' => 'Lark',
562
798
  'Z3' => 'Laurus',
799
+ 'LEC' => 'Lectrus',
563
800
  'LV' => 'Lava',
564
801
  'LC' => 'LCT',
565
802
  'L5' => 'Leagoo',
566
803
  'U3' => 'Leben',
804
+ 'LEB' => 'LeBest',
567
805
  'LD' => 'Ledstar',
806
+ 'LEE' => 'Leelbox',
568
807
  'L1' => 'LeEco',
569
808
  '4B' => 'Leff',
809
+ 'LEG' => 'Legend',
570
810
  'L4' => 'Lemhoov',
571
811
  'W9' => 'LEMFO',
572
812
  'LN' => 'Lenco',
573
813
  'LE' => 'Lenovo',
574
814
  'LT' => 'Leotec',
575
815
  'LP' => 'Le Pan',
816
+ 'ZJ' => 'Leke',
576
817
  'L7' => 'Lephone',
577
818
  'LZ' => 'Lesia',
578
819
  'L3' => 'Lexand',
@@ -580,16 +821,25 @@ class DeviceDetector
580
821
  'LG' => 'LG',
581
822
  '39' => 'Liberton',
582
823
  '5L' => 'Linsar',
824
+ 'LIN' => 'Linsay',
583
825
  'LF' => 'Lifemaxx',
584
826
  'LI' => 'Lingwin',
827
+ 'LIM' => 'Lime',
585
828
  'LJ' => 'L-Max',
586
829
  'LW' => 'Linnex',
830
+ 'JJ' => 'Listo',
831
+ 'LNM' => 'LNMBBS',
587
832
  'LO' => 'Loewe',
588
833
  'YL' => 'Loview',
834
+ 'LOV' => 'Lovme',
589
835
  '1L' => 'Logic',
836
+ 'LH' => 'Logic Instrument',
590
837
  'LM' => 'Logicom',
838
+ 'GY' => 'LOKMAT',
839
+ 'LPX' => 'LPX-G',
591
840
  '0L' => 'Lumigon',
592
841
  'LU' => 'Lumus',
842
+ 'LUM' => 'Lumitel',
593
843
  'L9' => 'Luna',
594
844
  'LR' => 'Luxor',
595
845
  'LY' => 'LYF',
@@ -601,27 +851,38 @@ class DeviceDetector
601
851
  '92' => 'MAC AUDIO',
602
852
  'MJ' => 'Majestic',
603
853
  'FQ' => 'Mafe',
854
+ '6Y' => 'Magicsee',
604
855
  '23' => 'Magnus',
605
856
  'NH' => 'Manhattan',
857
+ 'MAN' => 'Mango',
606
858
  '5M' => 'Mann',
607
859
  'MA' => 'Manta Multimedia',
608
860
  'Z0' => 'Mantra',
609
861
  'J4' => 'Mara',
862
+ 'MAR' => 'Marshal',
863
+ '8Y' => 'Massgo',
864
+ 'MA1' => 'Mascom',
610
865
  '2M' => 'Masstel',
866
+ '3X' => 'Mastertech',
867
+ 'MAS' => 'Master-G',
611
868
  '50' => 'Matrix',
612
869
  '7M' => 'Maxcom',
870
+ '7M1' => 'Maxfone',
613
871
  'ZM' => 'Maximus',
614
872
  '6X' => 'Maxtron',
615
873
  '0D' => 'MAXVI',
874
+ 'XZ' => 'MAXX',
616
875
  'MW' => 'Maxwest',
617
876
  'M0' => 'Maze',
618
877
  'YM' => 'Maze Speed',
619
878
  '87' => 'Malata',
620
879
  '28' => 'MBOX',
880
+ 'FK' => 'MBI',
621
881
  '3D' => 'MDC Store',
622
882
  '1Y' => 'MDTV',
623
883
  '09' => 'meanIT',
624
884
  'M3' => 'Mecer',
885
+ 'M3M' => 'M3 Mobile',
625
886
  '0M' => 'Mecool',
626
887
  'MC' => 'Mediacom',
627
888
  'MK' => 'MediaTek',
@@ -637,8 +898,10 @@ class DeviceDetector
637
898
  'MX' => 'MEU',
638
899
  'MI' => 'MicroMax',
639
900
  'MS' => 'Microsoft',
901
+ '6Q' => 'Microtech',
640
902
  '1X' => 'Minix',
641
903
  'OM' => 'Mintt',
904
+ 'MIN' => 'Mint',
642
905
  'MO' => 'Mio',
643
906
  'X7' => 'Mione',
644
907
  'M7' => 'Miray',
@@ -648,19 +911,29 @@ class DeviceDetector
648
911
  'M5' => 'MIXC',
649
912
  '2D' => 'MIVO',
650
913
  '1Z' => 'MiXzo',
914
+ 'MIW' => 'MIWANG',
651
915
  'ML' => 'MLLED',
652
916
  'LS' => 'MLS',
917
+ 'MLA' => 'MLAB',
918
+ '5H' => 'MMI',
653
919
  '4M' => 'Mobicel',
654
920
  'M6' => 'Mobiistar',
921
+ 'MOK' => 'Mobile Kingdom',
655
922
  'MH' => 'Mobiola',
656
923
  'MB' => 'Mobistel',
657
924
  'ID' => 'MobiIoT',
658
925
  '6W' => 'MobiWire',
659
926
  '9M' => 'Mobo',
927
+ 'MOB' => 'Mobell',
660
928
  'M4' => 'Modecom',
661
929
  'MF' => 'Mofut',
662
930
  'MR' => 'Motorola',
931
+ 'MIV' => 'Motiv',
663
932
  'MV' => 'Movic',
933
+ 'MOV' => 'Movitel',
934
+ 'MO1' => 'MOVISUN',
935
+ 'MOS' => 'Mosimosi',
936
+ 'MOX' => 'Moxee',
664
937
  'MM' => 'Mpman',
665
938
  'MZ' => 'MSI',
666
939
  '3R' => 'MStar',
@@ -669,6 +942,7 @@ class DeviceDetector
669
942
  '72' => 'M-Tech',
670
943
  '9H' => 'M-Horse',
671
944
  '1R' => 'Multilaser',
945
+ 'MPS' => 'MultiPOS',
672
946
  '1M' => 'MYFON',
673
947
  'MY' => 'MyPhone',
674
948
  '51' => 'Myros',
@@ -677,7 +951,11 @@ class DeviceDetector
677
951
  '3T' => 'MyTab',
678
952
  'MG' => 'MyWigo',
679
953
  'J3' => 'Mymaga',
954
+ 'MYM' => 'MyMobile',
680
955
  '07' => 'MyGica',
956
+ 'MYG' => 'MygPad',
957
+ 'MWA' => 'MwalimuPlus',
958
+ 'NEO' => 'neoCore',
681
959
  '08' => 'Nabi',
682
960
  'N7' => 'National',
683
961
  'NC' => 'Navcity',
@@ -685,33 +963,50 @@ class DeviceDetector
685
963
  '7V' => 'Navitel',
686
964
  'N3' => 'Navon',
687
965
  '7R' => 'NavRoad',
966
+ 'NAS' => 'NASCO',
688
967
  'NP' => 'Naomi Phone',
968
+ 'NAN' => 'Nanho',
689
969
  'NE' => 'NEC',
970
+ 'NDP' => 'Nedaphone',
690
971
  '8N' => 'Necnot',
691
972
  'NF' => 'Neffos',
973
+ '9X' => 'Neo',
974
+ 'NEK' => 'NEKO',
692
975
  '1N' => 'Neomi',
693
976
  '7Q' => 'Neon IQ',
977
+ '8F' => 'Neolix',
694
978
  'NA' => 'Netgear',
979
+ 'NEM' => 'Netmak',
695
980
  'NU' => 'NeuImage',
981
+ 'NEU' => 'NeuTab',
696
982
  'NW' => 'Newgen',
697
983
  'N9' => 'Newland',
698
984
  '0N' => 'Newman',
699
985
  'NS' => 'NewsMy',
700
986
  'ND' => 'Newsday',
701
987
  'HB' => 'New Balance',
988
+ 'BRI' => 'New Bridge',
702
989
  'XB' => 'NEXBOX',
703
990
  'NX' => 'Nexian',
991
+ '7X' => 'Nexa',
704
992
  'N8' => 'NEXON',
705
993
  'N2' => 'Nextbit',
706
994
  'NT' => 'NextBook',
995
+ 'NTT' => 'NTT West',
707
996
  '4N' => 'NextTab',
997
+ 'NEX' => 'NEXT',
998
+ 'NJO' => 'nJoy',
708
999
  'NG' => 'NGM',
709
1000
  'NZ' => 'NG Optics',
1001
+ 'NZP' => 'NGpon',
710
1002
  'NN' => 'Nikon',
711
1003
  'NI' => 'Nintendo',
1004
+ 'NIN' => 'NINETEC',
712
1005
  'N5' => 'NOA',
713
1006
  'N1' => 'Noain',
714
1007
  'N6' => 'Nobby',
1008
+ 'NOV' => 'Novey',
1009
+ 'NO1' => 'NOVO',
715
1010
  '57' => 'Nubia',
716
1011
  'JN' => 'NOBUX',
717
1012
  'NB' => 'Noblex',
@@ -719,14 +1014,18 @@ class DeviceDetector
719
1014
  'NK' => 'Nokia',
720
1015
  'NM' => 'Nomi',
721
1016
  '2N' => 'Nomu',
1017
+ '6H' => 'Noontec',
722
1018
  'NR' => 'Nordmende',
723
1019
  '7N' => 'NorthTech',
1020
+ 'NOT' => 'Nothing Phone',
724
1021
  '5N' => 'Nos',
725
1022
  'NO' => 'Nous',
726
1023
  'NQ' => 'Novex',
1024
+ 'NOD' => 'noDROPOUT',
727
1025
  'NJ' => 'NuAns',
728
1026
  'NL' => 'NUU Mobile',
729
1027
  'N0' => 'Nuvo',
1028
+ 'NUV' => 'NuVision',
730
1029
  'NV' => 'Nvidia',
731
1030
  'NY' => 'NYX Mobile',
732
1031
  'O3' => 'O+',
@@ -734,67 +1033,102 @@ class DeviceDetector
734
1033
  'O7' => 'Oale',
735
1034
  'OC' => 'OASYS',
736
1035
  'OB' => 'Obi',
737
- 'OQ' => 'Oculus',
1036
+ 'OBR' => 'Ober',
1037
+ 'OQ' => 'Meta',
738
1038
  'O1' => 'Odys',
1039
+ 'ODP' => 'Odotpad',
739
1040
  'O9' => 'Ok',
740
1041
  'OA' => 'Okapia',
1042
+ 'OKI' => 'Oking',
1043
+ 'OLA' => 'Olax',
1044
+ 'OLK' => 'Olkya',
1045
+ 'OLY' => 'Olympia',
1046
+ 'OLT' => 'OLTO',
1047
+ 'OJ' => 'Ookee',
741
1048
  'OD' => 'Onda',
742
1049
  'ON' => 'OnePlus',
1050
+ 'ONC' => 'OneClick',
1051
+ 'ONL' => 'OneLern',
1052
+ 'OAN' => 'Oangcc',
743
1053
  'OX' => 'Onix',
744
1054
  '3O' => 'ONYX BOOX',
745
1055
  'O4' => 'ONN',
1056
+ '9Q' => 'Onkyo',
746
1057
  '2O' => 'OpelMobile',
747
1058
  'OH' => 'Openbox',
1059
+ '7Y' => 'Obabox',
748
1060
  'OP' => 'OPPO',
749
1061
  'OO' => 'Opsson',
1062
+ 'OPT' => 'Optoma',
1063
+ 'OPH' => 'Ophone',
750
1064
  'OR' => 'Orange',
751
1065
  'O5' => 'Orbic',
752
1066
  'Y6' => 'Orbita',
1067
+ 'ORB' => 'Orbsmart',
753
1068
  'OS' => 'Ordissimo',
1069
+ '8O' => 'Orion',
1070
+ 'OTT' => 'OTTO',
754
1071
  'OK' => 'Ouki',
755
1072
  '0O' => 'OINOM',
756
1073
  'QK' => 'OKWU',
1074
+ 'QQ' => 'OMIX',
757
1075
  '56' => 'OKSI',
758
1076
  'OE' => 'Oukitel',
759
1077
  'OU' => 'OUYA',
1078
+ 'JB' => 'OUJIA',
760
1079
  'OV' => 'Overmax',
761
1080
  '30' => 'Ovvi',
762
1081
  'O2' => 'Owwo',
1082
+ 'OSC' => 'OSCAL',
763
1083
  'OY' => 'Oysters',
1084
+ 'QF' => 'OYSIN',
764
1085
  'O6' => 'Oyyu',
765
1086
  'OZ' => 'OzoneHD',
1087
+ 'OLL' => 'Ollee',
766
1088
  '7P' => 'P-UP',
767
1089
  'YP' => 'Paladin',
768
1090
  'PM' => 'Palm',
769
1091
  'PN' => 'Panacom',
770
1092
  'PA' => 'Panasonic',
771
1093
  'PT' => 'Pantech',
1094
+ 'PAN' => 'Pano',
1095
+ 'PA1' => 'Panoramic',
1096
+ 'PLT' => 'Platoon',
772
1097
  '94' => 'Packard Bell',
773
1098
  'H9' => 'Parrot Mobile',
1099
+ 'PAR' => 'Partner Mobile',
1100
+ 'PAP' => 'PAPYRE',
774
1101
  'PB' => 'PCBOX',
1102
+ 'PCS' => 'PC Smart',
775
1103
  'PC' => 'PCD',
776
1104
  'PD' => 'PCD Argentina',
777
1105
  'PE' => 'PEAQ',
778
1106
  'PG' => 'Pentagram',
779
1107
  'PQ' => 'Pendoo',
780
1108
  '93' => 'Perfeo',
1109
+ '8J' => 'Pelitt',
781
1110
  '1P' => 'Phicomm',
782
1111
  '4P' => 'Philco',
783
1112
  'PH' => 'Philips',
784
1113
  '5P' => 'Phonemax',
785
1114
  'PO' => 'phoneOne',
786
1115
  'PI' => 'Pioneer',
1116
+ 'PIC' => 'Pioneer Computers',
787
1117
  'PJ' => 'PiPO',
788
1118
  '8P' => 'Pixelphone',
789
1119
  '9O' => 'Pixela',
790
1120
  'PX' => 'Pixus',
791
1121
  'QP' => 'Pico',
1122
+ 'PIR' => 'PIRANHA',
1123
+ 'PIN' => 'PINE',
792
1124
  '9P' => 'Planet Computers',
793
1125
  'PY' => 'Ployer',
794
1126
  'P4' => 'Plum',
1127
+ 'PLU' => 'PlusStyle',
795
1128
  '22' => 'Pluzz',
796
1129
  'P8' => 'PocketBook',
797
1130
  '0P' => 'POCO',
1131
+ 'FH' => 'Point Mobile',
798
1132
  'PV' => 'Point of View',
799
1133
  'PL' => 'Polaroid',
800
1134
  'Q6' => 'Polar',
@@ -809,10 +1143,13 @@ class DeviceDetector
809
1143
  '3F' => 'Porsche',
810
1144
  'P3' => 'PPTV',
811
1145
  'FP' => 'Premio',
1146
+ 'PR1' => 'Premier',
812
1147
  'PR' => 'Prestigio',
813
1148
  'P9' => 'Primepad',
1149
+ 'PRM' => 'PRIME',
814
1150
  '6P' => 'Primux',
815
1151
  '2P' => 'Prixton',
1152
+ 'PRI' => 'Pritom',
816
1153
  'PF' => 'PROFiLO',
817
1154
  'P6' => 'Proline',
818
1155
  '5O' => 'Prology',
@@ -821,6 +1158,9 @@ class DeviceDetector
821
1158
  'R0' => 'ProVision',
822
1159
  '7O' => 'Polestar',
823
1160
  'PU' => 'PULID',
1161
+ 'UP' => 'Purism',
1162
+ 'PUN' => 'Punos',
1163
+ 'QFX' => 'QFX',
824
1164
  'Q7' => 'Q-Box',
825
1165
  'QH' => 'Q-Touch',
826
1166
  'QB' => 'Q.Bell',
@@ -829,25 +1169,39 @@ class DeviceDetector
829
1169
  'QT' => 'Qtek',
830
1170
  'Q9' => 'QTECH',
831
1171
  'QA' => 'Quantum',
1172
+ 'QUE' => 'Quest',
1173
+ 'QUA' => 'Quatro',
832
1174
  'QU' => 'Quechua',
1175
+ 'QUI' => 'Quipus',
833
1176
  'QO' => 'Qumo',
834
1177
  'UQ' => 'Qubo',
1178
+ 'YQ' => 'QLink',
835
1179
  'QY' => 'Qnet Mobile',
1180
+ 'WJ' => 'Qware',
836
1181
  'R2' => 'R-TV',
837
1182
  'RA' => 'Ramos',
838
1183
  '0R' => 'Raspberry',
839
1184
  'R9' => 'Ravoz',
840
1185
  'RZ' => 'Razer',
841
1186
  '95' => 'Rakuten',
1187
+ 'RAY' => 'Raylandz',
842
1188
  'RC' => 'RCA Tablets',
843
1189
  '2R' => 'Reach',
1190
+ 'REL' => 'RelNAT',
844
1191
  'RB' => 'Readboy',
845
1192
  'RE' => 'Realme',
1193
+ 'RE1' => 'Redbean',
846
1194
  'R8' => 'RED',
1195
+ 'REW' => 'Redway',
1196
+ '6F' => 'Redfox',
1197
+ 'RE2' => 'RedLine',
847
1198
  'RD' => 'Reeder',
848
1199
  'Z9' => 'REGAL',
849
1200
  'RH' => 'Remdun',
850
1201
  'RP' => 'Revo',
1202
+ 'REV' => 'Revomovil',
1203
+ '8R' => 'Retroid Pocket',
1204
+ 'RIC' => 'Ricoh',
851
1205
  'RI' => 'Rikomagic',
852
1206
  'RM' => 'RIM',
853
1207
  'RN' => 'Rinno',
@@ -855,34 +1209,52 @@ class DeviceDetector
855
1209
  'R7' => 'Ritzviva',
856
1210
  'RV' => 'Riviera',
857
1211
  '6R' => 'Rivo',
1212
+ 'RIZ' => 'Rizzen',
858
1213
  'RR' => 'Roadrover',
1214
+ 'QR' => 'ROADMAX',
1215
+ 'ROC' => 'Roam Cat',
859
1216
  'R1' => 'Rokit',
1217
+ 'ROI' => 'ROiK',
860
1218
  'RK' => 'Roku',
861
1219
  'R3' => 'Rombica',
862
1220
  'R5' => 'Ross&Moor',
863
1221
  'RO' => 'Rover',
864
1222
  'R6' => 'RoverPad',
865
1223
  'RQ' => 'RoyQueen',
1224
+ 'RJ' => 'Royole',
866
1225
  'RT' => 'RT Project',
867
1226
  'RG' => 'RugGear',
1227
+ 'RUG' => 'Ruggex',
1228
+ 'RUT' => 'RuggeTech',
868
1229
  'RU' => 'Runbo',
1230
+ 'RUP' => 'Rupa',
869
1231
  'RL' => 'Ruio',
870
1232
  'RY' => 'Ryte',
871
1233
  'X5' => 'Saba',
872
1234
  '8L' => 'S-TELL',
1235
+ '4O' => 'S2Tel',
873
1236
  '89' => 'Seatel',
1237
+ 'SEW' => 'Sewoo',
1238
+ 'SE1' => 'SEEWO',
874
1239
  'Y7' => 'Saiet',
875
1240
  'X1' => 'Safaricom',
876
1241
  'SG' => 'Sagem',
877
1242
  '4L' => 'Salora',
878
1243
  'SA' => 'Samsung',
1244
+ 'SAT' => 'Samtech',
1245
+ 'SAM' => 'Samtron',
1246
+ 'SNA' => 'SNAMI',
879
1247
  'S0' => 'Sanei',
880
1248
  '12' => 'Sansui',
1249
+ 'SAK' => 'Sankey',
881
1250
  'SQ' => 'Santin',
882
1251
  'SY' => 'Sanyo',
1252
+ 'SAN' => 'SANY',
883
1253
  'S9' => 'Savio',
884
1254
  'Y4' => 'SCBC',
885
1255
  'CZ' => 'Schneider',
1256
+ 'SCO' => 'Scosmos',
1257
+ 'ZG' => 'Schok',
886
1258
  'G8' => 'SEG',
887
1259
  'SD' => 'Sega',
888
1260
  '0U' => 'Selecline',
@@ -896,9 +1268,12 @@ class DeviceDetector
896
1268
  'S6' => 'Senseit',
897
1269
  'EW' => 'Senwa',
898
1270
  '24' => 'Seeken',
1271
+ 'SEB' => 'SEBBE',
899
1272
  '61' => 'Seuic',
900
1273
  'SX' => 'SFR',
1274
+ 'SGI' => 'SGIN',
901
1275
  'SH' => 'Sharp',
1276
+ 'JU' => 'Shanling',
902
1277
  '7S' => 'Shift Phones',
903
1278
  '78' => 'Shivaki',
904
1279
  'RS' => 'Shtrikh-M',
@@ -912,25 +1287,35 @@ class DeviceDetector
912
1287
  '98' => 'Simply',
913
1288
  '52' => 'Singtech',
914
1289
  '31' => 'Siragon',
915
- '83' => 'Sirin labs',
1290
+ '83' => 'Sirin Labs',
1291
+ '5Z' => 'SK Broadband',
916
1292
  'GK' => 'SKG',
917
1293
  'SW' => 'Sky',
918
1294
  'SK' => 'Skyworth',
1295
+ 'SKY' => 'Skyline',
1296
+ 'SK1' => 'SkyStream',
1297
+ 'SKK' => 'SKK Mobile',
919
1298
  '14' => 'Smadl',
920
1299
  '19' => 'Smailo',
921
1300
  'SR' => 'Smart Electronic',
1301
+ 'SMA' => 'Smart Kassel',
922
1302
  '49' => 'Smart',
923
1303
  '47' => 'SmartBook',
924
1304
  '3B' => 'Smartab',
925
1305
  '80' => 'SMARTEC',
1306
+ 'SM1' => 'Smartex',
926
1307
  'SC' => 'Smartfren',
927
1308
  'S7' => 'Smartisan',
1309
+ 'JR' => 'Sylvania',
1310
+ 'SYH' => 'SYH',
928
1311
  '3Y' => 'Smarty',
929
1312
  'HH' => 'Smooth Mobile',
930
1313
  '1Q' => 'Smotreshka',
931
1314
  'SF' => 'Softbank',
932
1315
  '9L' => 'SOLE',
933
1316
  'JL' => 'SOLO',
1317
+ 'SOS' => 'SOSH',
1318
+ 'SOD' => 'Soda',
934
1319
  '16' => 'Solone',
935
1320
  'OI' => 'Sonim',
936
1321
  'SO' => 'Sony',
@@ -939,6 +1324,7 @@ class DeviceDetector
939
1324
  '8S' => 'Soyes',
940
1325
  '77' => 'SONOS',
941
1326
  '68' => 'Soho Style',
1327
+ 'SOB' => 'SobieTech',
942
1328
  'PK' => 'Spark',
943
1329
  'FS' => 'SPC',
944
1330
  '6S' => 'Spectrum',
@@ -956,10 +1342,12 @@ class DeviceDetector
956
1342
  'GQ' => 'STG Telecom',
957
1343
  'S2' => 'Stonex',
958
1344
  'ST' => 'Storex',
1345
+ 'STR' => 'Stream',
959
1346
  '71' => 'StrawBerry',
960
1347
  '96' => 'STRONG',
961
1348
  '69' => 'Stylo',
962
1349
  '9S' => 'Sugar',
1350
+ 'SUR' => 'Surge',
963
1351
  '06' => 'Subor',
964
1352
  'SZ' => 'Sumvision',
965
1353
  '0H' => 'Sunstech',
@@ -967,34 +1355,48 @@ class DeviceDetector
967
1355
  '5S' => 'Sunvell',
968
1356
  '5Y' => 'Sunny',
969
1357
  'W8' => 'SUNWIND',
1358
+ 'SBX' => 'SuperBOX',
970
1359
  'SU' => 'SuperSonic',
971
1360
  '79' => 'SuperTab',
972
1361
  'S5' => 'Supra',
1362
+ 'SUP' => 'Supraim',
973
1363
  'ZS' => 'Suzuki',
974
1364
  '2J' => 'Sunmi',
1365
+ 'SUN' => 'Sunmax',
975
1366
  '0W' => 'Swipe',
1367
+ 'SWI' => 'Switel',
976
1368
  'SS' => 'SWISSMOBILITY',
977
1369
  '1W' => 'Swisstone',
978
1370
  'W7' => 'SWTV',
1371
+ 'SSK' => 'SSKY',
1372
+ 'SYC' => 'Syco',
979
1373
  'SM' => 'Symphony',
980
1374
  '4S' => 'Syrox',
981
1375
  'TM' => 'T-Mobile',
1376
+ 'T96' => 'T96',
982
1377
  'TK' => 'Takara',
983
1378
  '73' => 'Tambo',
984
1379
  '9N' => 'Tanix',
985
1380
  'U5' => 'Taiga System',
1381
+ 'TAL' => 'Talius',
986
1382
  '7G' => 'TAG Tech',
987
1383
  'T5' => 'TB Touch',
988
1384
  'TC' => 'TCL',
989
1385
  'T0' => 'TD Systems',
1386
+ 'YY' => 'TD Tech',
990
1387
  'H4' => 'Technicolor',
1388
+ 'TEA' => 'TeachTouch',
991
1389
  'Z5' => 'Technika',
1390
+ 'TE1' => 'TechSmart',
992
1391
  'TX' => 'TechniSat',
993
1392
  'TT' => 'TechnoTrend',
994
1393
  'TP' => 'TechPad',
1394
+ 'TPS' => 'TPS',
995
1395
  '9E' => 'Techwood',
1396
+ '7F' => 'Technopc',
996
1397
  'T7' => 'Teclast',
997
1398
  'TB' => 'Tecno Mobile',
1399
+ 'TEC' => 'TecToy',
998
1400
  '91' => 'TEENO',
999
1401
  '2L' => 'Tele2',
1000
1402
  'TL' => 'Telefunken',
@@ -1002,32 +1404,51 @@ class DeviceDetector
1002
1404
  'T2' => 'Telenor',
1003
1405
  'TE' => 'Telit',
1004
1406
  '65' => 'Telia',
1407
+ 'TEL' => 'Telma',
1005
1408
  'PW' => 'Telpo',
1409
+ 'TLS' => 'TeloSystems',
1410
+ 'TER' => 'Teracube',
1006
1411
  'TD' => 'Tesco',
1007
1412
  'TA' => 'Tesla',
1008
1413
  '9T' => 'Tetratab',
1414
+ 'TET' => 'TETC',
1009
1415
  'TZ' => 'teXet',
1010
1416
  '29' => 'Teknosa',
1417
+ 'JZ' => 'TJC',
1418
+ 'JC' => 'TENPLUS',
1011
1419
  'T4' => 'ThL',
1012
1420
  'TN' => 'Thomson',
1013
1421
  'O0' => 'Thuraya',
1014
1422
  'TI' => 'TIANYU',
1423
+ 'JY' => 'Tigers',
1015
1424
  '8T' => 'Time2',
1016
1425
  'TQ' => 'Timovi',
1426
+ 'TIM' => 'TIMvision',
1017
1427
  '2T' => 'Tinai',
1018
1428
  'TF' => 'Tinmo',
1019
1429
  'TH' => 'TiPhone',
1430
+ 'YV' => 'TiVo',
1431
+ 'TIB' => 'Tibuta',
1020
1432
  'Y3' => 'TOKYO',
1433
+ 'TOX' => 'TOX',
1021
1434
  'T1' => 'Tolino',
1022
1435
  '0T' => 'Tone',
1023
1436
  'TY' => 'Tooky',
1437
+ 'TOO' => 'TOOGO',
1024
1438
  'T9' => 'Top House',
1025
1439
  'DK' => 'Topelotek',
1026
1440
  '42' => 'Topway',
1027
1441
  'TO' => 'Toplux',
1442
+ 'TOD' => 'TOPDON',
1443
+ 'TOP' => 'TopDevice',
1444
+ 'TO2' => 'TOPSHOWS',
1028
1445
  '7T' => 'Torex',
1446
+ 'TOR' => 'Torque',
1447
+ '6O' => 'TOSCIDO',
1448
+ 'TO1' => 'Topsion',
1029
1449
  'TS' => 'Toshiba',
1030
1450
  'T8' => 'Touchmate',
1451
+ 'TOU' => 'Touch Plus',
1031
1452
  '5R' => 'Transpeed',
1032
1453
  'T6' => 'TrekStor',
1033
1454
  'T3' => 'Trevi',
@@ -1038,6 +1459,7 @@ class DeviceDetector
1038
1459
  'JT' => 'True Slim',
1039
1460
  'J1' => 'Trio',
1040
1461
  '5C' => 'TTEC',
1462
+ 'TTK' => 'TTK-TV',
1041
1463
  'TU' => 'Tunisie Telecom',
1042
1464
  '1T' => 'Turbo',
1043
1465
  'TR' => 'Turbo-X',
@@ -1058,77 +1480,124 @@ class DeviceDetector
1058
1480
  'UL' => 'Ulefone',
1059
1481
  'UA' => 'Umax',
1060
1482
  'UM' => 'UMIDIGI',
1483
+ 'UNT' => 'Unitech',
1061
1484
  'UZ' => 'Unihertz',
1062
1485
  '3Z' => 'UZ Mobile',
1063
1486
  'UX' => 'Unimax',
1487
+ 'UNQ' => 'Uniqcell',
1064
1488
  'US' => 'Uniscope',
1489
+ 'UNI' => 'Unistrong',
1065
1490
  'U2' => 'UNIWA',
1491
+ 'UND' => 'Uniden',
1066
1492
  'UO' => 'Unnecto',
1493
+ 'UNN' => 'Unnion Technologies',
1067
1494
  'UU' => 'Unonu',
1068
1495
  'UN' => 'Unowhy',
1496
+ 'UY' => 'UNNO',
1497
+ 'UOO' => 'UOOGOU',
1498
+ 'UNB' => 'Unblock Tech',
1069
1499
  'UK' => 'UTOK',
1070
1500
  '3U' => 'IUNI',
1071
1501
  'UT' => 'UTStarcom',
1072
1502
  '6U' => 'UTime',
1073
1503
  '9U' => 'Urovo',
1504
+ 'UW' => 'U-Magic',
1074
1505
  '5V' => 'VAIO',
1075
1506
  'WV' => 'VAVA',
1076
1507
  'VA' => 'Vastking',
1077
1508
  'VP' => 'Vargo',
1078
1509
  'VC' => 'Vankyo',
1510
+ 'VAL' => 'VALEM',
1511
+ 'VAT' => 'VALTECH',
1079
1512
  'VB' => 'VC',
1080
1513
  'VN' => 'Venso',
1514
+ 'VEN' => 'Venstar',
1081
1515
  'UV' => 'Venturer',
1082
1516
  'VQ' => 'Vega',
1517
+ 'WC' => 'VEON',
1083
1518
  '4V' => 'Verico',
1084
1519
  'V4' => 'Verizon',
1085
1520
  'VR' => 'Vernee',
1086
1521
  'VX' => 'Vertex',
1087
1522
  'VE' => 'Vertu',
1523
+ 'VET' => 'VETAS',
1088
1524
  'VL' => 'Verykool',
1525
+ 'QV' => 'Verssed',
1526
+ 'VER' => 'Versus',
1089
1527
  'V8' => 'Vesta',
1528
+ 'VEK' => 'Vekta',
1090
1529
  'VT' => 'Vestel',
1091
1530
  '48' => 'Vexia',
1092
1531
  'V6' => 'VGO TEL',
1532
+ 'QJ' => 'VDVD',
1533
+ 'VIC' => 'Victurio',
1093
1534
  'VD' => 'Videocon',
1094
1535
  'VW' => 'Videoweb',
1095
1536
  'VS' => 'ViewSonic',
1096
1537
  'V7' => 'Vinga',
1097
1538
  'V3' => 'Vinsoc',
1539
+ 'XD' => 'Vinabox',
1540
+ 'FV' => 'Vios',
1098
1541
  '0V' => 'Vipro',
1099
1542
  'ZV' => 'Virzo',
1543
+ 'VIP' => 'Viper',
1100
1544
  'VI' => 'Vitelcom',
1545
+ 'VIB' => 'ViBox',
1101
1546
  '8V' => 'Viumee',
1102
1547
  'V5' => 'Vivax',
1548
+ 'VIV' => 'VIVIMAGE',
1103
1549
  'VV' => 'Vivo',
1104
1550
  '6V' => 'VIWA',
1551
+ 'VII' => 'VIIPOO',
1552
+ 'VID' => 'VIDA',
1105
1553
  'VZ' => 'Vizio',
1554
+ 'VIZ' => 'Vizmo',
1555
+ 'VIT' => 'Vityaz',
1106
1556
  '9V' => 'Vision Touch',
1557
+ 'VIL' => 'Visual Land',
1107
1558
  'VK' => 'VK Mobile',
1108
1559
  'JM' => 'v-mobile',
1560
+ 'VHO' => 'V-HOPE',
1561
+ 'VHM' => 'V-HOME',
1562
+ 'VGE' => 'V-Gen',
1109
1563
  'V0' => 'VKworld',
1110
1564
  'VM' => 'Vodacom',
1111
1565
  'VF' => 'Vodafone',
1566
+ '7W' => 'VOGA',
1112
1567
  'V2' => 'Vonino',
1113
1568
  '1V' => 'Vontar',
1114
1569
  'VG' => 'Vorago',
1115
1570
  '2V' => 'Vorke',
1571
+ '8U' => 'Vorcom',
1572
+ 'JW' => 'Vortex',
1573
+ 'VOR' => 'Vormor',
1116
1574
  'V1' => 'Voto',
1117
1575
  'Z7' => 'VOX',
1118
1576
  'VO' => 'Voxtel',
1119
1577
  'VY' => 'Voyo',
1578
+ 'VOL' => 'Völfen',
1579
+ 'VO1' => 'Volt',
1120
1580
  'VH' => 'Vsmart',
1121
1581
  'V9' => 'Vsun',
1122
1582
  'VU' => 'Vulcan',
1123
1583
  '3V' => 'VVETIME',
1584
+ 'ZC' => 'VUCATIMES',
1585
+ 'VUE' => 'Vue Micro',
1124
1586
  'WA' => 'Walton',
1587
+ 'WAF' => 'WAF',
1588
+ 'WAL' => 'Waltter',
1589
+ 'WHI' => 'White Mobile',
1125
1590
  'WM' => 'Weimei',
1126
1591
  'WE' => 'WellcoM',
1127
1592
  'W6' => 'WELLINGTON',
1128
1593
  'WD' => 'Western Digital',
1129
1594
  'WT' => 'Westpoint',
1595
+ 'WAN' => 'Wanmukang',
1596
+ 'WA1' => 'WANSA',
1130
1597
  'WY' => 'Wexler',
1131
1598
  '3W' => 'WE',
1599
+ 'WEC' => 'Wecool',
1600
+ 'WEE' => 'Weelikeit',
1132
1601
  'WP' => 'Wieppo',
1133
1602
  'W2' => 'Wigor',
1134
1603
  'WI' => 'Wiko',
@@ -1138,9 +1607,11 @@ class DeviceDetector
1138
1607
  '9W' => 'Winmax',
1139
1608
  'W5' => 'Winnovo',
1140
1609
  'WU' => 'Wintouch',
1610
+ 'WIS' => 'Winstar',
1141
1611
  'W0' => 'Wiseasy',
1142
1612
  '2W' => 'Wizz',
1143
1613
  'W4' => 'WIWA',
1614
+ 'WIZ' => 'WizarPos',
1144
1615
  'WL' => 'Wolder',
1145
1616
  'WG' => 'Wolfgang',
1146
1617
  'WQ' => 'Wolki',
@@ -1148,38 +1619,65 @@ class DeviceDetector
1148
1619
  'W1' => 'Woo',
1149
1620
  'WR' => 'Wortmann',
1150
1621
  'WX' => 'Woxter',
1622
+ 'XQ' => 'X-AGE',
1623
+ 'XEL' => 'XElectron',
1151
1624
  'X3' => 'X-BO',
1625
+ 'XMO' => 'X-Mobile',
1152
1626
  'XT' => 'X-TIGI',
1153
1627
  'XV' => 'X-View',
1154
1628
  'X4' => 'X.Vision',
1629
+ 'X88' => 'X88',
1630
+ 'X96' => 'X96',
1631
+ '96Q' => 'X96Q',
1632
+ 'A95' => 'A95X',
1155
1633
  'XG' => 'Xgody',
1156
1634
  'QX' => 'XGIMI',
1157
1635
  'XL' => 'Xiaolajiao',
1158
1636
  'XI' => 'Xiaomi',
1637
+ 'XW' => 'Xiaodu',
1159
1638
  'XN' => 'Xion',
1160
1639
  'XO' => 'Xolo',
1161
1640
  'XR' => 'Xoro',
1162
1641
  'XS' => 'Xshitou',
1163
1642
  '4X' => 'Xtouch',
1164
1643
  'X8' => 'Xtratech',
1644
+ 'XCR' => 'Xcruiser',
1645
+ 'XCO' => 'XCOM',
1646
+ 'XCL' => 'Xcell',
1647
+ 'XWA' => 'Xwave',
1165
1648
  'YD' => 'Yandex',
1166
1649
  'YA' => 'Yarvik',
1167
1650
  'Y2' => 'Yes',
1651
+ 'YES' => 'Yestel',
1168
1652
  'YE' => 'Yezz',
1653
+ 'YG' => 'YEPEN',
1654
+ 'YEL' => 'YELLYOUTH',
1169
1655
  'YK' => 'Yoka TV',
1170
1656
  'YO' => 'Yota',
1657
+ 'YOU' => 'Youin',
1658
+ 'YO1' => 'Youwei',
1659
+ 'YOO' => 'Yooz',
1171
1660
  'YT' => 'Ytone',
1661
+ 'Y9' => 'YOTOPT',
1172
1662
  'Y1' => 'Yu',
1663
+ 'YF' => 'YU Fly',
1173
1664
  'Y0' => 'YUHO',
1174
1665
  'YN' => 'Yuno',
1666
+ 'YUN' => 'YUNDOO',
1667
+ 'YUS' => 'YunSong',
1668
+ 'YUM' => 'YUMKEM',
1175
1669
  'YU' => 'Yuandao',
1176
1670
  'YS' => 'Yusun',
1177
1671
  'YJ' => 'YASIN',
1178
1672
  'YX' => 'Yxtel',
1179
1673
  '0Z' => 'Zatec',
1180
1674
  '2Z' => 'Zaith',
1675
+ 'ZAM' => 'Zamolxe',
1676
+ 'ZEA' => 'Zealot',
1181
1677
  'PZ' => 'Zebra',
1678
+ 'ZE1' => 'Zeblaze',
1182
1679
  'ZE' => 'Zeemi',
1680
+ 'WZ' => 'Zeeker',
1183
1681
  'ZN' => 'Zen',
1184
1682
  'ZK' => 'Zenek',
1185
1683
  'ZL' => 'Zentality',
@@ -1187,8 +1685,14 @@ class DeviceDetector
1187
1685
  'ZI' => 'Zidoo',
1188
1686
  'FZ' => 'ZIFRO',
1189
1687
  'ZX' => 'Ziox',
1688
+ 'ZIK' => 'ZIK',
1689
+ 'ZIG' => 'Zigo',
1690
+ 'ZIN' => 'Zinox',
1190
1691
  'ZO' => 'Zonda',
1692
+ 'ZW' => 'Zonko',
1191
1693
  'ZP' => 'Zopo',
1694
+ 'ZOO' => 'ZoomSmart',
1695
+ 'ZO1' => 'Zoom',
1192
1696
  'ZT' => 'ZTE',
1193
1697
  'ZU' => 'Zuum',
1194
1698
  'ZY' => 'Zync',
@@ -1196,6 +1700,8 @@ class DeviceDetector
1196
1700
  'ZQ' => 'ZYQ',
1197
1701
  'Z4' => 'ZH&K',
1198
1702
  'OW' => 'öwn',
1703
+ 'WBF' => 'Webfleet',
1704
+
1199
1705
  # legacy brands, might be removed in future versions
1200
1706
  'WB' => 'Web TV',
1201
1707
  'XX' => 'Unknown'
@@ -1218,11 +1724,24 @@ class DeviceDetector
1218
1724
  end
1219
1725
 
1220
1726
  def brand
1221
- regex_meta[:brand]
1727
+ return regex_meta[:brand] if regex_meta[:brand] == 'Sony Ericsson'
1728
+
1729
+ brand = regex_meta[:regex_name] || regex_meta[:brand] || vendor_fragment.name || fix_for_x_music
1730
+ return if brand == 'Unknown'
1731
+
1732
+ brand
1222
1733
  end
1223
1734
 
1224
1735
  private
1225
1736
 
1737
+ def fix_for_x_music
1738
+ user_agent&.include?('X-music Ⅲ') ? 'OneClick' : nil
1739
+ end
1740
+
1741
+ def vendor_fragment
1742
+ ::DeviceDetector::VendorFragment.new(user_agent)
1743
+ end
1744
+
1226
1745
  # The order of files needs to be the same as the order of device
1227
1746
  # parser classes used in the piwik project.
1228
1747
  def filenames