-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCCNoiseControlNormal.m
63 lines (54 loc) · 1.83 KB
/
CCNoiseControlNormal.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#import "CCNoiseControlNormal.h"
#import <ControlCenterUIKit/CCUICAPackageDescription.h>
#import <objc/runtime.h>
@interface BluetoothDevice : NSObject
-(unsigned)listeningMode;
-(BOOL)setListeningMode:(unsigned)arg1 ;
@end
@interface BluetoothManager : NSObject
+(id)sharedInstance;
-(id)connectedDevices;
@end
@implementation CCNoiseControlNormal
- (instancetype)init{
self = [super init];
if(self){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(listeningModeUpdated:) name:@"BluetoothAccessorySettingsChanged" object:nil];
}
return self;
}
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)listeningModeUpdated:(id)arg1{
[super refreshState];
}
- (NSString*)glyphState{
return _selected?@"on":@"off";
}
- (CCUICAPackageDescription *)glyphPackageDescription{
NSBundle* bundle=[NSBundle bundleForClass:[self class]];
CCUICAPackageDescription*description=[objc_getClass("CCUICAPackageDescription") descriptionForPackageNamed:@"CCNoiseControlNormal" inBundle:bundle];
return description;
}
// 2 AVOutputDeviceBluetoothListeningModeActiveNoiseCancellation
// 1 AVOutputDeviceBluetoothListeningModeNormal
// 3 AVOutputDeviceBluetoothListeningModeAudioTransparency
- (BOOL)isSelected
{
NSArray*connectedDevices=[[objc_getClass("BluetoothManager") sharedInstance] connectedDevices];
if(![connectedDevices count]) return (_selected=NO);
_selected = ([connectedDevices[0] listeningMode]==2);
return _selected;
}
- (void)setSelected:(BOOL)selected
{
NSArray*connectedDevices=[[objc_getClass("BluetoothManager") sharedInstance] connectedDevices];
if(![connectedDevices count]) return;
unsigned listeningMode=selected?2:1;
BOOL success=[connectedDevices[0] setListeningMode:listeningMode];
if(!success) return;
_selected = selected;
[super refreshState];
}
@end