com.amanotes.gdk 0.2.65-2 → 0.2.65-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Editor/Extra/GDKLocalBuild.cs +24 -57
- package/Extra/AmaGDKInstaller.unitypackage +0 -0
- package/Extra/CheckDiskSpace.unitypackage +0 -0
- package/Extra/ForceUpdate.unitypackage +0 -0
- package/Extra/GoogleCMP.unitypackage +0 -0
- package/Extra/PostProcessor.unitypackage +0 -0
- package/Extra/SDKVersionTracking.unitypackage +0 -0
- package/Packages/AmaGDKConfig.unitypackage +0 -0
- package/Packages/AmaGDKExample.unitypackage +0 -0
- package/Packages/AmaGDKTest.unitypackage +0 -0
- package/Packages/AppsFlyerAdapter.PurchaseConnector.unitypackage +0 -0
- package/Packages/AppsFlyerAdapter.unitypackage +0 -0
- package/Packages/FirebaseAnalyticsAdapter.unitypackage +0 -0
- package/Packages/FirebaseRemoteConfigAdapter.unitypackage +0 -0
- package/Packages/IronSourceAdapter.unitypackage +0 -0
- package/Packages/RevenueCatAdapter.unitypackage +0 -0
- package/Packages/SqliteAnalyticsAdapter.unitypackage +0 -0
- package/Runtime/AmaGDK.Analytics.cs +10 -4
- package/Runtime/AmaGDK.Mono.cs +0 -2
- package/Runtime/AmaGDK.UserProfile.cs +1 -1
- package/Runtime/AmaGDK.cs +2 -1
- package/Runtime/AudioToolkit/AmaGDK.Audio.Latency.cs +165 -0
- package/Runtime/AudioToolkit/AmaGDK.Audio.Latency.cs.meta +11 -0
- package/Runtime/AudioToolkit/AmaGDK.Audio.cs +158 -0
- package/Runtime/AudioToolkit/AmaGDK.Audio.cs.meta +11 -0
- package/Runtime/AudioToolkit/Plugins/Android/AudioDeviceDetector.java +321 -0
- package/Runtime/AudioToolkit/Plugins/Android/AudioDeviceDetector.java.meta +32 -0
- package/Runtime/AudioToolkit/Plugins/Android.meta +8 -0
- package/Runtime/AudioToolkit/Plugins/AudioDeviceDetector.cs +208 -0
- package/Runtime/AudioToolkit/Plugins/AudioDeviceDetector.cs.meta +3 -0
- package/Runtime/AudioToolkit/Plugins/iOS/AudioDeviceDetector.mm +163 -0
- package/Runtime/AudioToolkit/Plugins/iOS/AudioDeviceDetector.mm.meta +33 -0
- package/Runtime/AudioToolkit/Plugins/iOS.meta +8 -0
- package/Runtime/AudioToolkit/Plugins.meta +8 -0
- package/Runtime/AudioToolkit/Resources/device-latency.txt +256 -0
- package/Runtime/AudioToolkit/Resources/device-latency.txt.meta +7 -0
- package/Runtime/AudioToolkit/Resources.meta +8 -0
- package/Runtime/AudioToolkit.meta +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#import <Foundation/Foundation.h>
|
|
2
|
+
#import <AVFAudio/AVFAudio.h>
|
|
3
|
+
#import <NotificationCenter/NotificationCenter.h>
|
|
4
|
+
|
|
5
|
+
@interface AudioDeviceInfo : NSObject
|
|
6
|
+
|
|
7
|
+
@end
|
|
8
|
+
@implementation AudioDeviceInfo
|
|
9
|
+
|
|
10
|
+
+ (void) registerRouteChanged
|
|
11
|
+
{
|
|
12
|
+
[[NSNotificationCenter defaultCenter] addObserver:(AudioDeviceInfo.self) selector:@selector(onRouteChanged:) name:(AVAudioSessionRouteChangeNotification) object:(nil)];
|
|
13
|
+
[[NSNotificationCenter defaultCenter] addObserver:(AudioDeviceInfo.self) selector:@selector(onAudioInterrupted:) name:(AVAudioSessionInterruptionNotification) object:([AVAudioSession sharedInstance])];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
+ (char*) getAudioInfoCString
|
|
17
|
+
{
|
|
18
|
+
NSString* info =[AudioDeviceInfo getAudioInfo];
|
|
19
|
+
return [AudioDeviceInfo convertNSStringToCString:info];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
+ (NSString*) getAudioInfo
|
|
23
|
+
{
|
|
24
|
+
AVAudioSessionRouteDescription *currentRoute = [[AVAudioSession sharedInstance] currentRoute];
|
|
25
|
+
if (currentRoute.outputs.count > 0) {
|
|
26
|
+
AVAudioSessionPortDescription *portDesc = [currentRoute.outputs objectAtIndex:0];
|
|
27
|
+
NSString* param = [NSString stringWithFormat:@"%@;%@",portDesc.portName,[AudioDeviceInfo getPortString:portDesc.portType]];
|
|
28
|
+
return param;
|
|
29
|
+
}
|
|
30
|
+
return nil;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
+ (NSString*) getPortString:(AVAudioSessionPort) portType
|
|
34
|
+
{
|
|
35
|
+
if (portType == nil) return @"";
|
|
36
|
+
//output
|
|
37
|
+
if ([portType containsString:AVAudioSessionPortAirPlay])
|
|
38
|
+
return @"AVAudioSessionPortAirPlay";
|
|
39
|
+
if ([portType containsString:AVAudioSessionPortBluetoothA2DP])
|
|
40
|
+
return @"AVAudioSessionPortBluetoothA2DP";
|
|
41
|
+
if ([portType containsString:AVAudioSessionPortAirPlay])
|
|
42
|
+
return @"AVAudioSessionPortAirPlay";
|
|
43
|
+
if ([portType containsString:AVAudioSessionPortBluetoothLE])
|
|
44
|
+
return @"AVAudioSessionPortBluetoothLE";
|
|
45
|
+
if ([portType containsString:AVAudioSessionPortBuiltInReceiver])
|
|
46
|
+
return @"AVAudioSessionPortBuiltInReceiver";
|
|
47
|
+
if ([portType containsString:AVAudioSessionPortBuiltInSpeaker])
|
|
48
|
+
return @"AVAudioSessionPortBuiltInSpeaker";
|
|
49
|
+
if ([portType containsString:AVAudioSessionPortHDMI])
|
|
50
|
+
return @"AVAudioSessionPortHDMI";
|
|
51
|
+
if ([portType containsString:AVAudioSessionPortHeadphones])
|
|
52
|
+
return @"AVAudioSessionPortHeadphones";
|
|
53
|
+
|
|
54
|
+
// input/output
|
|
55
|
+
if (@available(iOS 14.0, *)) {
|
|
56
|
+
if ([portType containsString:AVAudioSessionPortAVB])
|
|
57
|
+
return @"AVAudioSessionPortAVB";
|
|
58
|
+
if ([portType containsString:AVAudioSessionPortDisplayPort])
|
|
59
|
+
return @"AVAudioSessionPortDisplayPort";
|
|
60
|
+
if ([portType containsString:AVAudioSessionPortFireWire])
|
|
61
|
+
return @"AVAudioSessionPortFireWire";
|
|
62
|
+
if ([portType containsString:AVAudioSessionPortPCI])
|
|
63
|
+
return @"AVAudioSessionPortPCI";
|
|
64
|
+
if ([portType containsString:AVAudioSessionPortThunderbolt])
|
|
65
|
+
return @"AVAudioSessionPortThunderbolt";
|
|
66
|
+
if ([portType containsString:AVAudioSessionPortVirtual])
|
|
67
|
+
return @"AVAudioSessionPortVirtual";
|
|
68
|
+
}
|
|
69
|
+
if ([portType containsString:AVAudioSessionPortBluetoothHFP])
|
|
70
|
+
return @"AVAudioSessionPortBluetoothHFP";
|
|
71
|
+
if ([portType containsString:AVAudioSessionPortCarAudio])
|
|
72
|
+
return @"AVAudioSessionPortCarAudio";
|
|
73
|
+
if ([portType containsString:AVAudioSessionPortUSBAudio])
|
|
74
|
+
return @"AVAudioSessionPortUSBAudio";
|
|
75
|
+
|
|
76
|
+
return portType;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
+ (void) onRouteChanged: (NSNotification*) notification
|
|
80
|
+
{
|
|
81
|
+
int reason = [notification.userInfo[AVAudioSessionRouteChangeReasonKey] intValue];
|
|
82
|
+
|
|
83
|
+
switch (reason) {
|
|
84
|
+
case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
|
|
85
|
+
{
|
|
86
|
+
AVAudioSessionRouteDescription* lastDevice = notification.userInfo[AVAudioSessionRouteChangePreviousRouteKey];
|
|
87
|
+
if (lastDevice.outputs.count > 0)
|
|
88
|
+
{
|
|
89
|
+
AVAudioSessionPortDescription *portDesc = [lastDevice.outputs objectAtIndex:0];
|
|
90
|
+
NSString* param = [NSString stringWithFormat:@"%@;%@",portDesc.portName,[AudioDeviceInfo getPortString:portDesc.portType]];
|
|
91
|
+
UnitySendMessage("AmaGDK", "OnAudioDeviceRemoved", param.UTF8String);
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
|
|
96
|
+
{
|
|
97
|
+
NSString* info = [AudioDeviceInfo getAudioInfo];
|
|
98
|
+
if (info != nil)
|
|
99
|
+
{
|
|
100
|
+
UnitySendMessage("AmaGDK", "OnAudioDeviceAdded", info.UTF8String);
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
default:
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
+ (void) onAudioInterrupted: (NSNotification*) notification
|
|
110
|
+
{
|
|
111
|
+
int type = [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue];
|
|
112
|
+
switch (type)
|
|
113
|
+
{
|
|
114
|
+
case AVAudioSessionInterruptionTypeBegan:
|
|
115
|
+
UnitySendMessage("AmaGDK", "OnAudioInterrupted", "began");
|
|
116
|
+
break;
|
|
117
|
+
|
|
118
|
+
case AVAudioSessionInterruptionTypeEnded:
|
|
119
|
+
UnitySendMessage("AmaGDK", "OnAudioInterrupted", "ended");
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
+ (char*) convertNSStringToCString: (NSString*) nsString
|
|
125
|
+
{
|
|
126
|
+
if (nsString == NULL)
|
|
127
|
+
return NULL;
|
|
128
|
+
|
|
129
|
+
const char* nsStringUtf8 = [nsString UTF8String];
|
|
130
|
+
//create a null terminated C string on the heap so that our string's memory isn't wiped out right after method's return
|
|
131
|
+
char* cString = (char*)malloc(strlen(nsStringUtf8) + 1);
|
|
132
|
+
strcpy(cString, nsStringUtf8);
|
|
133
|
+
|
|
134
|
+
return cString;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
+ (char*) getCurrentRouteInputs
|
|
138
|
+
{
|
|
139
|
+
AVAudioSession *session = [AVAudioSession sharedInstance];
|
|
140
|
+
NSString* info = [[[session currentRoute] inputs] componentsJoinedByString:@"\n"];
|
|
141
|
+
return [AudioDeviceInfo convertNSStringToCString:info];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@end
|
|
145
|
+
|
|
146
|
+
extern "C"
|
|
147
|
+
{
|
|
148
|
+
|
|
149
|
+
void _RegisterAudioInfoChanged()
|
|
150
|
+
{
|
|
151
|
+
[AudioDeviceInfo registerRouteChanged];
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
char* _GetAudioInfo()
|
|
155
|
+
{
|
|
156
|
+
return [AudioDeviceInfo getAudioInfoCString];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
char* _GetCurrentRouteInputs()
|
|
160
|
+
{
|
|
161
|
+
return [AudioDeviceInfo getCurrentRouteInputs];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 0ac63023c45ca4e1d8b3e887dffc81c4
|
|
3
|
+
PluginImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
iconMap: {}
|
|
7
|
+
executionOrder: {}
|
|
8
|
+
defineConstraints: []
|
|
9
|
+
isPreloaded: 0
|
|
10
|
+
isOverridable: 0
|
|
11
|
+
isExplicitlyReferenced: 0
|
|
12
|
+
validateReferences: 1
|
|
13
|
+
platformData:
|
|
14
|
+
- first:
|
|
15
|
+
Any:
|
|
16
|
+
second:
|
|
17
|
+
enabled: 0
|
|
18
|
+
settings: {}
|
|
19
|
+
- first:
|
|
20
|
+
Editor: Editor
|
|
21
|
+
second:
|
|
22
|
+
enabled: 0
|
|
23
|
+
settings:
|
|
24
|
+
DefaultValueInitialized: true
|
|
25
|
+
- first:
|
|
26
|
+
iPhone: iOS
|
|
27
|
+
second:
|
|
28
|
+
enabled: 1
|
|
29
|
+
settings:
|
|
30
|
+
AddToEmbeddedBinaries: false
|
|
31
|
+
userData:
|
|
32
|
+
assetBundleName:
|
|
33
|
+
assetBundleVariant:
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
Product BLUETOOTH CONNECTION Latency - SBC iOS (ms) BLUETOOTH CONNECTION Latency - SBC Android (ms)
|
|
2
|
+
Anker Soundcore Life Q30 Wireless 256 406
|
|
3
|
+
Anker Soundcore Life Q35 Wireless 256 406
|
|
4
|
+
Anker Soundcore Space Q45 Wireless 264 414
|
|
5
|
+
Audeze Maxwell Wireless 236 386
|
|
6
|
+
Sennheiser Momentum 3 Wireless 245 395
|
|
7
|
+
Sony WI-1000XM2 Wireless 250 400
|
|
8
|
+
Sony WH-1000XM5 Wireless 291 441
|
|
9
|
+
Razer Barracuda Pro Wireless 163 313
|
|
10
|
+
Audio-Technica ATH-M50xBT2 Wireless 262 412
|
|
11
|
+
Sony WH-1000XM4 Wireless 295 445
|
|
12
|
+
Bose QuietComfort 35 II/QC35 II Wireless 2018 289 439
|
|
13
|
+
Razer BlackShark V2 Pro Wireless 2023 276 426
|
|
14
|
+
Razer BlackShark V2 HyperSpeed Wireless 312 462
|
|
15
|
+
Astro A30 Wireless 330 480
|
|
16
|
+
Bose QuietComfort Headphones Wireless 222 372
|
|
17
|
+
Jabra Elite 7 Pro True Wireless 284 434
|
|
18
|
+
Jabra Elite 7 Active True Wireless 288 438
|
|
19
|
+
Bose 700 Headphones Wireless 230 380
|
|
20
|
+
Sony LinkBuds S Truly Wireless 278 428
|
|
21
|
+
Razer Barracuda Wireless 137 287
|
|
22
|
+
Wyze Noise-Cancelling Headphones Wireless 286 436
|
|
23
|
+
Shokz OpenRun Pro Bone Conduction 279 429
|
|
24
|
+
Amazon Echo Buds True Wireless 2023 (3rd generation) 285 435
|
|
25
|
+
Bowers & Wilkins Px7 S2 Wireless 248 398
|
|
26
|
+
OnePlus Buds Pro 2 Truly Wireless 298 448
|
|
27
|
+
Turtle Beach Stealth Pro Wireless 228 378
|
|
28
|
+
Jabra Elite 4 True Wireless 303 453
|
|
29
|
+
Jabra Elite 5 True Wireless 307 457
|
|
30
|
+
Sony INZONE H7 Wireless 260 410
|
|
31
|
+
SteelSeries Arctis 9 Wireless 244 394
|
|
32
|
+
Bose SoundLink 2 Wireless 302 452
|
|
33
|
+
Bose SoundSport Wireless 299 449
|
|
34
|
+
Sony WF-1000XM5 Truly Wireless 276 426
|
|
35
|
+
EPOS GTW 270 Hybrid Truly Wireless 150 300
|
|
36
|
+
Jabra Elite 10 True Wireless 313 463
|
|
37
|
+
Sony WF-1000XM4 Truly Wireless 309 459
|
|
38
|
+
Anker Soundcore Space A40 Truly Wireless 299 449
|
|
39
|
+
Anker Soundcore Space One Wireless 325 475
|
|
40
|
+
Jabra Evolve2 65 Wireless 283 433
|
|
41
|
+
Shokz OpenRun Bone Conduction 279 429
|
|
42
|
+
Anker Soundcore Liberty 4 True Wireless 337 487
|
|
43
|
+
Anker Soundcore Liberty 4 NC Truly Wireless 208 358
|
|
44
|
+
Sennheiser MOMENTUM True Wireless 3 310 460
|
|
45
|
+
Status Between 3ANC True Wireless 298 448
|
|
46
|
+
Sony WH-CH720N Wireless 327 477
|
|
47
|
+
Wyze Wireless Gaming Headset 255 405
|
|
48
|
+
Sony INZONE H9 Wireless 263 413
|
|
49
|
+
AfterShokz Aeropex Bone Conduction 278 428
|
|
50
|
+
AKG N700NC M2 Wireless 247 397
|
|
51
|
+
SteelSeries Arctis Pro Wireless 179 329
|
|
52
|
+
JBL Live 460NC Wireless 208 358
|
|
53
|
+
Skullcandy Riff Wireless 2 297 447
|
|
54
|
+
Logitech G735 Wireless 302 452
|
|
55
|
+
Turtle Beach Stealth 700 Wireless 223 373
|
|
56
|
+
Jabra Elite 75t Truly Wireless 311 461
|
|
57
|
+
JBL CLUB 700BT Wireless 208 358
|
|
58
|
+
Razer Kaira Pro Wireless for Xbox 317 467
|
|
59
|
+
JBL Live 650 BTNC Wireless 236 386
|
|
60
|
+
JBL Tour One Wireless 231 381
|
|
61
|
+
Devialet Gemini II True Wireless 321 471
|
|
62
|
+
Jabra Elite 8 Active True Wireless 308 458
|
|
63
|
+
Shure AONIC 50 Gen 2 Wireless 294 444
|
|
64
|
+
JBL Tune 760NC Wireless 218 368
|
|
65
|
+
Xbox Wireless Headset 306 456
|
|
66
|
+
Jabra Elite 85h Wireless 282 432
|
|
67
|
+
JBL Tune 660NC Wireless 226 376
|
|
68
|
+
Sony WH-XB910N Wireless 251 401
|
|
69
|
+
Bowers & Wilkins Px8 Wireless 228 378
|
|
70
|
+
JBL Tune 510BT Wireless 236 386
|
|
71
|
+
Nothing Ear (2) Truly Wireless 328 478
|
|
72
|
+
JBL Live 660NC Wireless 261 411
|
|
73
|
+
Sony WH-CH520 Wireless 362 512
|
|
74
|
+
SteelSeries Arctis 9X Wireless 299 449
|
|
75
|
+
JBL TUNE 750BTNC Wireless 172 322
|
|
76
|
+
Corsair VIRTUOSO RGB Wireless XT 278 428
|
|
77
|
+
Jabra Evolve2 85 Wireless 283 433
|
|
78
|
+
JBL Live 500BT Wireless 270 420
|
|
79
|
+
Plantronics BackBeat Go 810 Wireless 353 503
|
|
80
|
+
Bose QuietComfort 45/QC45 Wireless 232 382
|
|
81
|
+
Amazon Echo Buds True Wireless 2021 (2nd generation) 398 548
|
|
82
|
+
Bowers & Wilkins PX7 Wireless 279 429
|
|
83
|
+
Anker Soundcore Liberty 3 Pro Truly Wireless 373 523
|
|
84
|
+
Sennheiser PXC 550-II Wireless 214 364
|
|
85
|
+
TREBLAB Z7 Pro Wireless 278 428
|
|
86
|
+
Sennheiser ACCENTUM Wireless 323 473
|
|
87
|
+
Sony LinkBuds Truly Wireless 272 422
|
|
88
|
+
Denon PerL Pro True Wireless 409 559
|
|
89
|
+
Turtle Beach Stealth 700 Gen 2 Wireless 301 451
|
|
90
|
+
OnePlus Buds Pro Truly Wireless 323 473
|
|
91
|
+
Apple AirPods Pro (2nd generation) Truly Wireless 160 360
|
|
92
|
+
Logitech G435 LIGHTSPEED Wireless 163 313
|
|
93
|
+
Focal Bathys Wireless 333 483
|
|
94
|
+
Audeze Penrose Wireless 301 451
|
|
95
|
+
Jabra Elite Active 75t Truly Wireless 312 462
|
|
96
|
+
Drop + THX Panda Wireless 285 435
|
|
97
|
+
Skullcandy Dime 3 True Wireless 288 438
|
|
98
|
+
Sennheiser HD 450BT Wireless 318 468
|
|
99
|
+
SteelSeries Arctis Nova 7 Wireless [7, 7P, 7X] 285 435
|
|
100
|
+
EarFun Air Pro 3 True Wireless 213 363
|
|
101
|
+
Shure AONIC 50 Wireless 226 376
|
|
102
|
+
JBL Live Pro 2 TWS True Wireless 379 529
|
|
103
|
+
Sennheiser HD 4.40 BT Wireless 181 331
|
|
104
|
+
Sony WH-XB700 Wireless 238 388
|
|
105
|
+
Jabra Elite 85t Truly Wireless 318 468
|
|
106
|
+
Sennheiser MOMENTUM 4 Wireless 321 471
|
|
107
|
+
Jabra Elite Active 65t Truly Wireless 251 401
|
|
108
|
+
Sony WH-H910N/h.ear on 3 Wireless 256 406
|
|
109
|
+
Jabra Elite 65t Truly Wireless 252 402
|
|
110
|
+
Bang & Olufsen Beoplay Portal 320 470
|
|
111
|
+
Sony WF-1000XM3 Truly Wireless 277 427
|
|
112
|
+
Cowin E7 Wireless 181 331
|
|
113
|
+
Sony WH-CH710N Wireless 305 455
|
|
114
|
+
Sony WH-CH510 Wireless 260 410
|
|
115
|
+
Bose QuietComfort Earbuds II Truly Wireless 305 455
|
|
116
|
+
Bose QuietComfort Ultra Headphones Wireless 342 492
|
|
117
|
+
Samsung Galaxy Buds FE Truly Wireless 296 446
|
|
118
|
+
Sony WH-CH700N Wireless 232 382
|
|
119
|
+
Google Pixel Buds Pro Truly Wireless 388 538
|
|
120
|
+
Sony WH-XB900N Wireless 304 454
|
|
121
|
+
Sony WH-1000XM2 Wireless 354 504
|
|
122
|
+
Samsung Galaxy Buds2 Truly Wireless 300 450
|
|
123
|
+
Apple AirPods Max Wireless 173 373
|
|
124
|
+
Beats Flex Wireless 223 373
|
|
125
|
+
Corsair HS80 MAX WIRELESS 247 397
|
|
126
|
+
Beats Studio3 Wireless 226 376
|
|
127
|
+
Skullcandy Indy ANC True Wireless 221 371
|
|
128
|
+
Skullcandy Hesh ANC Wireless 219 369
|
|
129
|
+
TaoTronics SoundLiberty 94 Truly Wireless 219 369
|
|
130
|
+
Anker SoundCore Liberty Air 2 Truly Wireless 318 468
|
|
131
|
+
Logitech G PRO X 2 LIGHTSPEED Wireless 189 339
|
|
132
|
+
Razer Hammerhead True Wireless 2021 325 475
|
|
133
|
+
Beats Studio Buds + True Wireless 295 445
|
|
134
|
+
Status Between Pro True Wireless 393 543
|
|
135
|
+
Avantree HT5009 Wireless 167 317
|
|
136
|
+
OnePlus Buds Z Truly Wireless 200 350
|
|
137
|
+
Skullcandy Hesh Evo Wireless 223 373
|
|
138
|
+
Anker Soundcore Liberty 2 Pro Truly Wireless 325 475
|
|
139
|
+
TaoTronics SoundLiberty 79 Truly Wireless 350 500
|
|
140
|
+
Anker SoundCore Life P2 Truly Wireless 385 535
|
|
141
|
+
Skullcandy Smokin' Buds/Buds XT True Wireless 274 424
|
|
142
|
+
Samsung Galaxy Buds2 Pro True Wireless 300 450
|
|
143
|
+
Bose QuietComfort Earbuds Truly Wireless 222 372
|
|
144
|
+
Sony WH-1000XM3 Wireless 275 425
|
|
145
|
+
Beats Studio Pro Wireless 205 355
|
|
146
|
+
Beats Solo3 2019 Wireless 223 373
|
|
147
|
+
Beats Studio Buds True Wireless 333 483
|
|
148
|
+
Dyson Zone Wireless 256 406
|
|
149
|
+
Jabra Elite 3 True Wireless 289 439
|
|
150
|
+
Skullcandy Crusher Evo Wireless 278 428
|
|
151
|
+
Beats Solo Pro Wireless 266 416
|
|
152
|
+
Corsair HS70 Bluetooth 281 431
|
|
153
|
+
JBL CLUB PRO+ TWS True Wireless 229 379
|
|
154
|
+
Razer Opus X Wireless 238 388
|
|
155
|
+
Anker Soundcore Liberty Air 2 Pro Truly Wireless 265 415
|
|
156
|
+
JLab Audio JBuds Air ANC Truly Wireless 206 356
|
|
157
|
+
Skullcandy Indy Fuel Truly Wireless 281 431
|
|
158
|
+
Sony WF-XB700 Truly Wireless 271 421
|
|
159
|
+
Razer Hammerhead Pro HyperSpeed True Wireless 138 288
|
|
160
|
+
Bose QuietComfort Ultra Earbuds Truly Wireless 342 492
|
|
161
|
+
Beats Powerbeats Pro Truly Wireless 228 378
|
|
162
|
+
Google Pixel Buds A-Series Truly Wireless 369 519
|
|
163
|
+
Samsung Galaxy Buds Live Truly Wireless 412 562
|
|
164
|
+
Anker SoundCore Life P3 Truly Wireless 263 413
|
|
165
|
+
Anker Soundcore Life Q20 Wireless 412 562
|
|
166
|
+
Jaybird Vista 2 Truly Wireless 207 357
|
|
167
|
+
Shokz OpenFit True Wireless 415 565
|
|
168
|
+
Nothing Ear (stick) Truly Wireless 378 528
|
|
169
|
+
Razer Opus Wireless 2020 280 430
|
|
170
|
+
Jabra Elite 4 Active True Wireless 290 440
|
|
171
|
+
Skullcandy Sesh ANC True Wireless 282 432
|
|
172
|
+
Sony Float Run Wireless 244 394
|
|
173
|
+
Samsung Galaxy Buds Pro Truly Wireless 387 537
|
|
174
|
+
Anker Soundcore Life A2 NC Truly Wireless 272 422
|
|
175
|
+
FIIL T1X True Wireless 224 374
|
|
176
|
+
Cowin Apex Elite Truly Wireless 294 444
|
|
177
|
+
Mpow X6 Truly Wireless 322 472
|
|
178
|
+
Mpow X5 Truly Wireless 280 430
|
|
179
|
+
JLab Audio JBuds Air Truly Wireless 391 541
|
|
180
|
+
Sennheiser CX True Wireless 427 577
|
|
181
|
+
Audio-Technica ATH-M50xBT 230 380
|
|
182
|
+
Cambridge Audio Melomania 1+ True Wireless 473 623
|
|
183
|
+
Bose QuietComfort 35 II Gaming Headset 285 435
|
|
184
|
+
SteelSeries Arctis Nova Pro Wireless [PC, PS, Xbox] 286 436
|
|
185
|
+
Apple AirPods (3rd generation) Truly Wireless 187 387
|
|
186
|
+
JBL Tune Flex True Wireless 370 520
|
|
187
|
+
Apple AirPods Pro Truly Wireless 188 388
|
|
188
|
+
TOZO NC7 Truly Wireless 312 462
|
|
189
|
+
JBL TUNE 230NC TWS True Wireless 373 523
|
|
190
|
+
JBL Tune 130NC TWS Truly Wireless 363 513
|
|
191
|
+
Sony WF-C500 Truly Wireless 291 441
|
|
192
|
+
Sony WF-C700N Truly Wireless 269 419
|
|
193
|
+
Skullcandy Push Active True Wireless 283 433
|
|
194
|
+
JBL Endurance Peak II True Wireless 347 497
|
|
195
|
+
JBL Endurance Peak 3 True Wireless 344 494
|
|
196
|
+
EarFun Air Pro True Wireless 265 415
|
|
197
|
+
Razer Opus Wireless 2021 236 386
|
|
198
|
+
Raycon E55 Truly Wireless 368 518
|
|
199
|
+
SteelSeries Arctis 3 2019 Edition Wireless 180 330
|
|
200
|
+
JBL Live Pro+ TWS True Wireless 317 467
|
|
201
|
+
Sennheiser MOMENTUM True Wireless 2 445 595
|
|
202
|
+
Sony WF-SP800N Truly Wireless 348 498
|
|
203
|
+
SoundPeats TrueFree 2 Wireless 366 516
|
|
204
|
+
TOZO NC2 Truly Wireless 293 443
|
|
205
|
+
Sony WI-C200 Wireless 256 406
|
|
206
|
+
JBL Live Free NC+ TWS True Wireless 229 379
|
|
207
|
+
JBL TUNE 220TWS Truly Wireless 198 348
|
|
208
|
+
Skullcandy Indy Evo True Wireless 281 431
|
|
209
|
+
Klipsch T5 II True Wireless ANC 280 430
|
|
210
|
+
TOZO NC9 Truly Wireless 280 430
|
|
211
|
+
Sony WI-XB400 EXTRA BASS Wireless 259 409
|
|
212
|
+
JBL Tour Pro+ TWS True Wireless 362 512
|
|
213
|
+
JBL Tune 225TWS True Wireless 375 525
|
|
214
|
+
Razer Hammerhead True Wireless Pro 309 459
|
|
215
|
+
Nothing Ear (1) Truly Wireless 351 501
|
|
216
|
+
JBL Vibe 100TWS True Wireless 346 496
|
|
217
|
+
Beats Fit Pro True Wireless 223 373
|
|
218
|
+
Samsung Galaxy Buds+ Truly Wireless 382 532
|
|
219
|
+
Audeze Mobius 291 441
|
|
220
|
+
Apple AirPods (2nd generation) Truly Wireless 176 376
|
|
221
|
+
Ultimate Ears FITS Truly Wireless 331 481
|
|
222
|
+
JBL Tune 125TWS Truly Wireless 347 497
|
|
223
|
+
JBL Endurance Peak True Wireless 436 586
|
|
224
|
+
Sennheiser CX Plus True Wireless 281 431
|
|
225
|
+
Anker Soundcore Life Dot 2 Truly Wireless 371 521
|
|
226
|
+
Skullcandy Dime 2 True Wireless 292 442
|
|
227
|
+
JBL Vibe Beam True Wireless 448 598
|
|
228
|
+
Bowers & Wilkins Pi7 S2 True Wireless 337 487
|
|
229
|
+
Raycon The Fitness Earbuds (2021 Edition) True Wireless 291 441
|
|
230
|
+
TOZO T6 Truly Wireless 317 467
|
|
231
|
+
Wyze Buds Truly Wireless 310 460
|
|
232
|
+
JLab Audio GO Air POP True Wireless 262 412
|
|
233
|
+
EarFun Air Pro 2 True Wireless 2021 289 439
|
|
234
|
+
JBL LIVE 300TWS Truly Wireless 426 576
|
|
235
|
+
Skullcandy Dime True Wireless 293 443
|
|
236
|
+
Skullcandy Grind Fuel True Wireless 289 439
|
|
237
|
+
Skullcandy Spoke True Wireless 316 466
|
|
238
|
+
SoundPeats TrueFree/True Wireless 333 483
|
|
239
|
+
TOZO T12 Truly Wireless 314 464
|
|
240
|
+
Bose Sport Open Earbuds Truly Wireless 379 529
|
|
241
|
+
Sony WI-C310 Wireless 254 404
|
|
242
|
+
Skullcandy Sesh Evo True Wireless 240 390
|
|
243
|
+
Bowers & Wilkins Pi7 True Wireless 326 476
|
|
244
|
+
Bose Sport Earbuds Truly Wireless 379 529
|
|
245
|
+
Google Pixel Buds 2020 Truly Wireless 420 570
|
|
246
|
+
Wyze Buds Pro Truly Wireless 315 465
|
|
247
|
+
Creative Outlier Air V2 True Wireless 458 608
|
|
248
|
+
TOZO T10 Truly Wireless 372 522
|
|
249
|
+
Skullcandy Jib True Wireless 306 456
|
|
250
|
+
Raycon E25 True Wireless 290 440
|
|
251
|
+
Mpow MDots True Wireless 384 534
|
|
252
|
+
Skullcandy Jib Wireless 302 452
|
|
253
|
+
Bose SoundSport Free Truly Wireless 605 755
|
|
254
|
+
Skullcandy Sesh Truly Wireless 317 467
|
|
255
|
+
Razer Hammerhead True Wireless 2019 321 471
|
|
256
|
+
Sennheiser CX 400BT True Wireless 385 535
|