ios9, xcode7, Objective-C (iPodtouch 第6世代)の初心者です。
自作のアプリにて、画面上「スタート」「ストップ」のボタンを押して動作させているのですが、
そのかわりにイヤフォンのプレイボタンを押して、「スタート」を押したときと同じ動作を
させようとしています。 (加速度センサーから、デバイスの傾斜角を測定)
ネット上のサンプルコードを参考にして、下記のようなプログラムにしたのですが、
プレイボタンに反応してくれません。
ご教授頂けましたら、幸いです。 宜しくお願い致します。
// ViewController.m
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
{
// 変数の宣言、初期化
//メンバ変数として宣言
@public AVAudioPlayer *audio;
//モーションマネージャ
CMMotionManager *motionManager;
}
//メソッド宣言
- (void)startAnimation;
- (void)animation:(CMAccelerometerData *)data;
- (void)remoteControlReceivedWithEvent:(UIEvent *)event;
@end
@implementation ViewController
#pragma mark -
#pragma mark setting for first responder
- (void)viewDidLoad
{ [NSTimer
scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
[super viewDidLoad]; [self startAnimation];
}
// 再生スイッチのファーストレスポンダになる
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
// ビューが表示されたらアニメーションをスタートする
// - (void)viewDidAppear:(BOOL)animated
// {
// [self startAnimation];
// }
// イヤフォンスイッチに対するアクション
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
if (event.type == UIEventTypeRemoteControl) {
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay:
// [start] ボタンを押したときの動作
{
self.judge_Label.textColor = [UIColor blackColor]; // "黒"
self.judge_Label.text = @"";
// 定期的に実行するハンドラを設定
CMAccelerometerHandler handler = ^(CMAccelerometerData *data, NSError *error){
[self animation:data];
};
// 加速度センサーの利用を開始
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:handler];
angle_R = 0; angle_L = 0; // 基準時間のセット NSDate *now =[NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm:ss"]; // self.Time_Label.text = [df stringFromDate:now]; [df setDateFormat:@"ss"]; s = [[df stringFromDate:now] intValue]; [df setDateFormat:@"mm"]; m = [[df stringFromDate:now] intValue]; [df setDateFormat:@"HH"]; s_m =s + 60*m; time_control = s_m; } break; case UIEventSubtypeRemoteControlPause: // 一時停止 break; case UIEventSubtypeRemoteControlStop: // 停止 break; case UIEventSubtypeRemoteControlTogglePlayPause: // 「Now Playing」の再生・一時停止から呼ばれる break; default: // UIEventSubtypeNone と UIEventSubtypeMotionShakeなので来ない break; } }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/01 20:06
2015/10/02 04:06