3

AVSystemController_SystemVolumeDidChangeNotificationAVCaptureSession が開始されるたびに、iPhone 5 のイベントがトリガーされるようです。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

これを修正する方法を知っている人はいますか?私はこの Observer を使用して音量ボタンで写真を撮っています (プライベート API であることは知っていますが、デフォルトのカメラアプリと同じ機能です。Apple は通常、目をつぶっています...) 。カメラが起動するたびに撮影されます。

4

2 に答える 2

0

申し訳ありませんが、賢明に機能させることができませんでした。Apple が iPhone 5 でこのような実装を行ったのには十分な理由があると確信していますが、それは非常に厄介なことです。

私が見つけた唯一の方法は、それを使用せず、代わりにオーディオセッションプロパティリスナーメソッドを使用することでした:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //...
    AudioSessionInitialize(nil, nil, nil, nil);
    AudioSessionSetActive(YES);

    AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume, volumeListenerCallbackIPhone, (__bridge void *)(self));
    //...
}

そして、コールバックで:

- (void)volumeChanged:(NSNotification *)notification
{
    NSLog(@"volumeChanged");
    // ...
}

...そして、コンテキストに基づいてイベントをさらにフィルタリングします。

-ケン

于 2013-07-10T11:33:44.383 に答える