kAudioSessionProperty_AudioRouteChange のオーディオ セッション プロパティ リスナーを追加し、コールバックで UIImagePickerController の takePicture 関数を呼び出したいと考えています。問題は、コールバックでピッカーにアクセスできないことです。
viewDidLoad でピッカーを初期化しています。ピッカーをプライベート オブジェクトとパブリック オブジェクトの両方として宣言し、ピッカーまたは self.picker でアクセスしようとしましたが、常に「宣言されていない識別子の使用」エラーが発生します。このコードを使用してリスナーを追加します。
AudioSessionInitialize(nil, nil, nil, nil);
AudioSessionSetActive(true);
AudioSessionAddPropertyListener(
kAudioSessionProperty_AudioRouteChange,
applicationAudioRouteDidChange,
self);
これは私のコールバックです:
void applicationVolumeDidChange(void *inClientData,
AudioSessionPropertyID inID,
UInt32 inDataSize, const void *inData)
{
NSLog(@"Volume changed");
//[picker takePicture]; Error
}
また、これが UIImagePickerController のみの問題であるかどうかを確認するために NSArray を宣言しましたが、配列でも同じエラーが発生します。