相关疑难解决方法(0)

iOS:AudioSessionInitialize和AudioSessionSetProperty的弃用

我很新的Objective-C中,我试图更新一些代码,是3岁左右的iOS 7有两个或两个实例的工作AudioSessionSetPropertyAudioSessionInitialize出现的代码:

1:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    AudioSessionInitialize(NULL,NULL,NULL,NULL);
    [[SCListener sharedListener] listen];
    timer = [NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(tick:) userInfo:nil repeats: YES];

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)

2:

- (id)init {
    if ([super init] == nil){
        return nil;
    }

    AudioSessionInitialize(NULL,NULL,NULL,NULL);
    Float64 rate=kSAMPLERATE;
    UInt32 size = sizeof(rate); 
    AudioSessionSetProperty (kAudioSessionProperty_PreferredHardwareSampleRate, size, &rate); 
    return self;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这段代码可以在iOS7的模拟器中运行,但不适用于运行iOS7的设备,我怀疑这些弃用是原因.我一直在阅读本网站上的文档和相关问题,似乎我需要使用AVAudioSession.我一直在尝试更新代码很长一段时间,而且我不确定如何正确切换到AVAudioSession.有谁知道上面这两种方法需要看什么?

旁注:我已经设法找到了一篇概述过渡的文章:https: //github.com/software-mariodiana/AudioBufferPlayer/wiki/Replacing-C-functions-deprecated-in-iOS-7 但我可以'似乎将此应用于上面的代码.

我正在尝试更新的代码是来自git的小型频率检测应用程序:https: //github.com/jkells/sc_listener …

objective-c avaudiosession ios7

10
推荐指数
2
解决办法
1万
查看次数

如何获取本机(硬件支持)音频采样率以避免内部采样率转换?

任何人都可以向我指出文档,说明不同iPhone版本的原生采样率,以避免core-audio内部采样率转换?

编辑: 否则,请您指点一个源代码示例,说明如何以编程方式获取这些值?

编辑:Apple文档(第26页)是指Canonical音频格式,但仅提及样本类型(PCM)和位深度(16位).它没有提到捕获硬件直接支持的任何本机采样率.这些是我正在寻找的价值观.

core-audio audio-recording ios

7
推荐指数
1
解决办法
7666
查看次数

路由iPhone音频声音

我有一个应用程序,可以同时收听和播放声音.默认情况下,声音输出通过耳机.所以我使用以下代码通过扬声器进行路由:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
Run Code Online (Sandbox Code Playgroud)

这很好用.但现在,我想在连接耳机或外接扬声器时通过耳机传送声音.我怎么做到这一点?

理想情况下,当应用程序启动时,所有其他声音(即音乐等)应该静音.

谢谢!

iphone objective-c avaudioplayer avaudiorecorder audiosession

5
推荐指数
1
解决办法
4050
查看次数

如何在不使用AudioSessionSetProperty的情况下路由到kAudioSessionProperty_OverrideCategoryEnableBluetoothInput

我的iOS6和工作代码将蓝牙设置为输出:

// create and set up the audio session
AVAudioSession* audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
[audioSession setActive: YES error: nil];

// set up for bluetooth microphone input
UInt32 allowBluetoothInput = 1;
OSStatus stat = 0;
stat = AudioSessionSetProperty (
                                         kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
                                         sizeof (allowBluetoothInput),
                                         &allowBluetoothInput
                                         );
Run Code Online (Sandbox Code Playgroud)

从iOS7开始,不推荐使用AudioSessionSetProperty方法.遵循此主题如何在不使用AudioSessionSetProperty的情况下将音频路由到扬声器?您可以将输出更改为AVAudioSessionPortOverrideSpeaker或AVAudioSessionPortOverrideNone但此处没有蓝牙选项.

我的实际目标是支持不使用A2DP但使用HFP的蓝牙设备.

那么如何在不使用弃用方法的情况下实现这一目标呢?

bluetooth avfoundation ios

3
推荐指数
1
解决办法
4806
查看次数

如何检测设备(iPhone/iPad)中是否有可用的麦克风 - 目标C.

在我的iOS应用程序中,我想显示一个Alert,如果Mic is not available in the device.

我怎么检查这个?

我试过这个 -

 -(void)checkMic
 {
  UInt32 sessionCategory = kAudioSessionCategory_RecordAudio;
   OSStatus status = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);  //..always seems to return OK..
   status = AudioSessionSetActive (true);
   if(status)
   {
      //mic is not available
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是此代码显示错误消息 - 已弃用.

hardware microphone objective-c ios ios7

2
推荐指数
1
解决办法
2784
查看次数