aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2019-03-24 12:45:52 +0100
committerTeddy Wing2019-03-24 12:50:05 +0100
commitc484af9d5844fa29be77d098542a74e313dad4c6 (patch)
tree35208ff1acad0c5df50a5471fe3d677994e5324a
parent519038bde17082020265d5ae5bda80f493f91b20 (diff)
downloadDomeKey-c484af9d5844fa29be77d098542a74e313dad4c6.tar.bz2
HeadphoneKeyEventBluetooth: Listen for Bluetooth device pairing
Register a delegate that gets called when Bluetooth devices are paired with the Mac. We now need to determine if the paired device is a pair of headphones (ideally if we can figure out media remote control capability that would be helpful), and then connect to them over L2CAP to get AVRCP messages. The `devicePairingFinished:error:` delegate method was a test. Leaving it in as a reminder that we also need to implement functionality that looks for already-connected Bluetooth headphones when DomeKey launches.
-rw-r--r--DomeKey/HeadphoneKeyEventBluetooth.h3
-rw-r--r--DomeKey/HeadphoneKeyEventBluetooth.m27
2 files changed, 19 insertions, 11 deletions
diff --git a/DomeKey/HeadphoneKeyEventBluetooth.h b/DomeKey/HeadphoneKeyEventBluetooth.h
index 86e0ce7..a55a539 100644
--- a/DomeKey/HeadphoneKeyEventBluetooth.h
+++ b/DomeKey/HeadphoneKeyEventBluetooth.h
@@ -7,11 +7,12 @@
//
#import <Foundation/Foundation.h>
+#import <IOBluetooth/IOBluetooth.h>
#import "HeadphoneKeyEventDelegate.h"
#import "dome_key_map.h"
-@interface HeadphoneKeyEventBluetooth : NSObject {
+@interface HeadphoneKeyEventBluetooth : NSObject <IOBluetoothDevicePairDelegate> {
id <HeadphoneKeyEventDelegate> _delegate;
}
diff --git a/DomeKey/HeadphoneKeyEventBluetooth.m b/DomeKey/HeadphoneKeyEventBluetooth.m
index 52e22db..839a4ba 100644
--- a/DomeKey/HeadphoneKeyEventBluetooth.m
+++ b/DomeKey/HeadphoneKeyEventBluetooth.m
@@ -16,20 +16,27 @@
if (self) {
_delegate = delegate;
- MPRemoteCommandCenter *cc = [MPRemoteCommandCenter sharedCommandCenter];
- [cc playCommand];
- [cc pauseCommand];
- [cc stopCommand];
- [cc togglePlayPauseCommand];
- // [cc nextTrackCommand];
- // [cc seekForwardCommand];
- // [cc previousTrackCommand];
- // [cc seekBackwardCommand];
+ IOBluetoothUserNotification *notification = [IOBluetoothDevice
+ registerForConnectNotifications:self
+ selector:@selector(connectNotification:forDevice:)];
+ if (!notification) {
+ // TODO: error
+ NSLog(@"Connection notification error");
+ }
}
return self;
}
-MPRemoteCommandHandler key_pressed(HeadphoneButton button) {
+- (void)devicePairingFinished:(id)sender
+ error:(IOReturn)error
+{
+ NSLog(@"Paired: %@", sender);
+}
+
+- (void)connectNotification:(IOBluetoothUserNotification *)notification
+ forDevice:(IOBluetoothDevice *)device
+{
+ NSLog(@"Paired notification: %@ ; Device: %@", notification, device);
}
@end