有沒有辦法檢測耳機的播放/暫停按鈕點擊?檢測耳機按鈕點擊iPhone SDK
我設法檢測音量按鈕點擊使用:
AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume , audioVolumeChangeListenerCallback, self);
但我不能找到中間的按鍵的AudioSessionProperty。有什麼辦法做到這一點?
有沒有辦法檢測耳機的播放/暫停按鈕點擊?檢測耳機按鈕點擊iPhone SDK
我設法檢測音量按鈕點擊使用:
AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume , audioVolumeChangeListenerCallback, self);
但我不能找到中間的按鍵的AudioSessionProperty。有什麼辦法做到這一點?
從您的應用以外完成的所有事情都被視爲「遠程事件」。如果您雙擊主頁按鈕並按下播放/暫停按鈕,則相當於按下耳機上的播放/暫停按鈕(對於下一個雙擊和前一個三拍)。
以下是關於event handling of remote events for iOS的指南。
就個人而言,我喜歡繼承的主窗口(UIWindow
)和重寫sendEvent:
方法,這樣我就可以更直接地管理它:
- (void)sendEvent:(UIEvent *)event
{
if (event.type == UIEventTypeRemoteControl)
{
// Do stuff here
}
else
{
// Not my problem.
[super sendEvent:event];
}
}
希望幫助,枚舉的中央按鈕的事件是UIEventSubtypeRemoteControlTogglePlayPause
。
Can的答案很好,但我認爲它已經過時了。
現在您需要繼承UIApplication。
代碼main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "MyUIApplication.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(
argc,
argv,
NSStringFromClass([MyUIApplication class]),
NSStringFromClass([AppDelegate class]));
}
}
代碼MyUIApplication.m
:
@implementation MyUIApplication
- (void)sendEvent:(UIEvent *)event {
if (event.type == UIEventTypeRemoteControl) {
// Check event.subtype to see if it's a single click, double click, etc.
} else {
// Not my problem.
[super sendEvent:event];
}
}
@end
代碼AppDelegate.m
:中
內- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
通話[application beginReceivingRemoteControlEvents];
謝謝可以。我通過使用方法找到了另一個解決方案:「remoteControlReceivedWithEvent:」。解決方法在這裏討論:http://www.iphonedevsdk.com/forum/iphone-sdk-development/44433-there-way-respond-clicks-headphone-buttons.html – MCO
@我可以試試你的解決方案和當我按下耳機上的按鈕時,不會調用sendEvent UIEventTypeRemoteControl事件類型。是否還有其他一些設置可以幫助你實現這個目標?這個子類正在工作,因爲我確實發現了一些其他事件。 –