近接センサを使った踏み絵アプリの作り方
iPhoneの上部には近接センサというものがついています。デフォルトの電話アプリで、通話中に端末に耳を近づけると画面が消えるのはこのセンサの働きです。
今回はこの近接センサを使って「踏み絵アプリ」を作ってみます。
アプリの概要
画面
作った画面はこんな感じ。単純にUILabelとUIImageViewを貼っつけただけです。例として隠れApple信者をあぶり出す踏み絵にしてみました。
ソースコード
まずはviewDidAppear
あたりで近接センサをONにします。
// 近接センサをONに - (void)startSensor { // 近接センサをオン [UIDevice currentDevice].proximityMonitoringEnabled = YES; // 近接センサ監視 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximitySensorStateDidchange:) name:UIDeviceProximityStateDidChangeNotification object:nil]; }
この状態で近接センサの値が変わると、以下のメソッドが呼ばれます。
// 近接センサの値が変更 - (void)proximitySensorStateDidchange:(NSNotification *)notification { // センサに近づいたら踏み絵成功 if ([UIDevice currentDevice].proximityState == YES) { // アラート出す NSString *message = @"あなたは隠れapple信者ではありません"; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"踏み絵成功" message:message delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; [alert show]; } }
これだけの記述でカンタンに使うことができます。
後処理も忘れずに行いましょう。
viewDidDisappear
あたりで以下を呼べばOKです。
- (void)stopSensor { // 近接センサオフ [UIDevice currentDevice].proximityMonitoringEnabled = NO; // 近接センサ監視解除 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceProximityStateDidChangeNotification object:nil]; }
以上の実装で、足を近づけるとアラートが表示される踏み絵アプリを作ることができました。非常に簡単ですね!
参考リンク
おわりに
近接センサをアプリで制御できると知ってやってみましたが結構簡単ですね。
しかし通話アプリの省エネ目的の他に何か使い道はあるのでしょうか。