我使用AVFoundation框架中的AVCamCaptureManager类.同时我想用音量增大按钮拍照.
据我所知,现在唯一可行的解决方案是使用音频会话(打开它并听取音量的变化).我从这里开始使用RBVolumeButtons类https://github.com/blladnar/RBVolumeButtons
当我的应用程序启动时,AVCamCaptureManager初始化音频会话.然后我需要开始收听音量的变化,因此RBVolumeButtons初始化一个新的音频会话,它会中断前一个音频会话.因此,相机停止,但我可以使用音量按钮.
如何避免这种中断,以及如何同时使用音量按钮和相机?也许我可以同时运行两个音频会话?或者也许有办法访问AVCamCaptureManager的音频会话并使用它?
非常感谢你回答我的问题!
PS我使用这一行在RBVolumeButtons类中添加属性监听器:
AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume, volumeListenerCallback, self);
Run Code Online (Sandbox Code Playgroud) 我没有在网上找到任何合适的答案,所以我在这里发布我的问题.
__block int test = 1;
dispatch_async(dispatch_get_main_queue(), ^{
test = 2;
});
NSLog(@"%i",test);
Run Code Online (Sandbox Code Playgroud)
此代码将导致控制台消息"1".
__block NSString *test = @"no";
dispatch_async(dispatch_get_main_queue(), ^{
test = @"yes";
});
NSLog(@"%@",test);
Run Code Online (Sandbox Code Playgroud)
此代码将导致控制台消息"no".
为什么会这样?我认为__block标识符应解决这种情况下的所有问题.我的假设是复制了局部变量,并且块内的代码实际上并没有修改自身之外的任何东西.
如何在dispatch_async中修改局部变量?
对不起,如果这是一个菜鸟问题.