我想知道是否有一个单触针工作样本,它显示了接收远程控制事件的工作示例,例如来自耳机按钮的事件。
我已经实现了一个单一的iphone应用程序,实现了CanBecomeFirstResponder,名为BecomeFirstResponder,还有UIApplication.SharedApplication.BeginReceivingRemoteControlEvents(),但我没有得到任何事件。
这是我的SingleViewController的代码。
public partial class SingleViewViewController : UIViewController
{
public SingleViewViewController () : base ("SingleViewViewController", null)
{
}
public override void DidReceiveMemoryWarning ()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning ();
// Release any cached data, images, etc that aren't in use.
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
AVAudioSession audioSession = AVAudioSession.SharedInstance();
NSError error;
audioSession.SetCategory(AVAudioSession.CategoryPlayback, out error);
audioSession.SetActive(true,out error);
this.BecomeFirstResponder();
UIApplication.SharedApplication.BeginReceivingRemoteControlEvents();
}
public override void ViewDidUnload ()
{
base.ViewDidUnload ();
// Clear any references to subviews of the main view in order to
// allow the Garbage Collector to collect them sooner.
//
// e.g. myOutlet.Dispose (); myOutlet = null;
ReleaseDesignerOutlets ();
}
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
// Return true for supported orientations
return (toInterfaceOrientation != UIInterfaceOrientation.PortraitUpsideDown);
}
public override bool CanBecomeFirstResponder {
get {
return true;
}
}
public override bool CanResignFirstResponder {
get {
return false;
}
}
public override void RemoteControlReceived (UIEvent theEvent)
{
base.RemoteControlReceived (theEvent);
}
}
答案 0 :(得分:1)
我花了一点时间在这上面,我想我可能会找到你的答案。我的第一个错误假设是遥控器(耳机)上的音量增大和减小控制将注册,但他们没有。
除非通过反复试验,否则我无法确认以下内容,但您似乎需要让AVAudioPlayer播放某些内容,或者至少在启动AVAudioSession时播放内容。如果不播放内容,播放/停止事件将传递给处理它的音乐应用。
在你的代码中,在调用base之后的ViewDidLoad方法中,我添加了
AVAudioPlayer player = new AVAudioPlayer(new NSUrl("Music/test.m4a", false), null);
player.PrepareToPlay();
player.Play();
如果您在GitHub上查看这些示例的第27章,您将看到一个播放音频并处理遥控事件的示例。
https://github.com/mattneub/Programming-iOS-Book-Examples
我无法在没有播放器播放的情况下使远程控制事件正常工作,您的示例匹配了大量的Obj-C示例,但我也无法在Xcode中使用它。
希望这有帮助。