iPhone – Configuring the AVAudioSession and Output Audio to iPhone Speaker

http://eureka.ykyuen.info/2010/06/02/iphone-configuring-the-avaudiosession-and-output-audio-to-iphone-speaker/


iPhone – Configuring the AVAudioSession and Output Audio to iPhone Speaker

I am working on the AVAudioRecorder and AVAudioPlayer. By default, the output audio is routed to the receiver instead of the iPhone speaker. In order to fulfill my requirement, i have to configure the AVAudioSession in the AppDelegate.

There are 2 ways to route the audio output to speaker.

  • Overriding the output audio route
  • Changing the default output audio route (iPhone OS 3.1 or above)


If you only overriding the output audio route, the audio output will revert to the receiver instead of the speaker when u plugging in and then unplugging the headset. Therefore, it’d be better to change the default output audio route. but please note that it only support iPhone OS 3.1 or above.

Here comes to the codes.
1. Load the AVFoundation and AVToolbox frameworks into your Xcode project.

2. Import the header file in the AppDelegate.h

1 #import <AVFoundation/AVFoundation.h>
2 #import <AudioToolbox/AudioToolbox.h>

 

3. Add the following code in applicationDidFinishLaunching method in AppDelegate.m

01 // Set AudioSession
02 NSError *sessionError = nil;
03 [[AVAudioSession sharedInstance] setDelegate:self];
04 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
05  
06 /* Pick any one of them */
07 // 1. Overriding the output audio route
08 //UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
09 //AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);
10  
11 // 2. Changing the default output audio route
12 UInt32 doChangeDefaultRoute = 1;
13 AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);

 

Then u can try the playback with the AVAudioPlayer
 

Done =)

Reference: Audio Session Cookbook – Redirecting Output Audio


<think>我们被要求解释“Configuring the kernel”的含义,并按照规则输出相关问题。 根据之前的内核编译上下文,“Configuring the kernel”指的是内核配置阶段,即通过设置各种选项来决定内核的功能和模块。 我们将详细解释这一步骤,包括其目的、常用方法和注意事项。 最后,按照要求提出3-5个相关问题,并以“§§相关问题§§”开头,问题之间用换行分隔,但不分散(即连续列出)。</think>### 内核配置(Configuring the kernel)详解 #### 1. **核心概念** 内核配置是通过**选择性地启用/禁用功能模块**来定制Linux内核的过程。主要目标: - 🎯 精简内核体积(移除不需要的驱动/功能) - ⚙️ 优化性能(针对特定硬件) - 🔒 增强安全性(禁用潜在风险功能) - 🔋 减少资源占用(适合嵌入式设备) #### 2. **配置方法(常用命令)** | 命令 | 界面类型 | 适用场景 | |------------------------|---------------|-------------------------| | `make menuconfig` | 文本菜单 | 服务器/无图形界面环境 | | `make xconfig` | Qt图形界面 | 桌面环境(需安装Qt) | | `make gconfig` | GTK图形界面 | GNOME桌面环境 | | `make oldconfig` | 命令行 | 升级内核时保留原配置 | | `make localmodconfig` | 自动配置 | 根据当前加载模块自动精简 | #### 3. **关键配置文件** - `.config`:主配置文件(文本格式) - `arch/*/configs/`:架构默认配置 - `/proc/config.gz`:运行中内核的配置 #### 4. **配置内容示例** ```plaintext CONFIG_LOCALVERSION="-custom" # 自定义内核版本标识 CONFIG_MODULES=y # 启用模块加载功能 CONFIG_BLK_DEV_SD=y # 启用SCSI磁盘支持 CONFIG_USB_HID=n # 禁用USB输入设备(服务器场景) ``` #### 5. **操作流程** ```bash # 1. 进入源码目录 cd ~/linux-4.15.18 # 2. 启动配置界面 make menuconfig # 3. 配置保存路径 [ ] Save Configuration to an Alternate File (.config) # 默认保存为.config ``` #### 6. **配置原则** - ✅ **必选项**:当前硬件所需驱动(如SATA控制器) - ⚠️ **慎选项**:`DEBUG`/`EXPERIMENTAL`(可能降低性能) - ❌ **可禁用**: - 未使用的文件系统(Btrfs/ReiserFS) - 特殊硬件支持(游戏手柄/红外) - 虚拟化组件(非虚拟机环境) #### 7. **配置验证** ```bash # 检查配置完整性 make olddefconfig # 统计配置项 grep "^CONFIG_" .config | wc -l # 典型桌面配置:约5000项 # 精简服务器配置:约2000项 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值