我想创建一个允许用户选择音频路由的应用程序 . 即用户可以选择是通过耳机,扬声器还是蓝牙播放音频 . 我的应用程序没有播放任何音频,但我想要的是,如果使用内置音乐应用程序或任何其他媒体播放器在iPhone中播放歌曲,当我从我的应用程序中选择扬声器时,即使是耳机也应该通过扬声器播放歌曲已连接 . 是否可以从另一个应用程序控制系统级音频路由 .
我想在某一点做出类似的东西 . 如果我没记错的话......设备中有一个物理开关在插入耳机时会关闭 . 有效地使得无法传送声音,因为扬声器和设备的其余部分之间不再有任何连接 .
我没有找到比使用媒体播放器卷视图的一部分更好的方法 .
接下来是代码片段:
// Display the audio route button (Bluetooth / Speaker / iPhone) UIView *mpVolumeViewParentView = [[UIView alloc] initWithFrame:CGRectMake(5, 50, 50, 40)]; mpVolumeViewParentView.backgroundColor = [UIColor clearColor]; mpVolumeViewParentView.clipsToBounds = YES; MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame:CGRectMake(-290, 0, 320, 40)]; [mpVolumeViewParentView addSubview:systemVolumeSlider]; [systemVolumeSlider release]; [self.view addSubview:mpVolumeViewParentView]; [mpVolumeViewParentView release];
这不是完美的解决方案,但它可以完成工作 .
显然,用户仅通过设备激活或音量控制来控制音频路由是Apple的预期用户体验 . 常规开发人员无法使用手机应用程序执行的操作 .
“应用程序实际上并没有随时随地传送音频(甚至不是Apple应用程序!)......我们(引擎盖下)将音频发送到用户想要的位置 . ”
http://lists.apple.com/archives/coreaudio-api/2009/Oct/msg00030.html
从iOS 4.2开始MPVolumeView有两个属性来禁用不需要的元素:
showsVolumeSlider showsRouteButton
4 回答
我想在某一点做出类似的东西 . 如果我没记错的话......设备中有一个物理开关在插入耳机时会关闭 . 有效地使得无法传送声音,因为扬声器和设备的其余部分之间不再有任何连接 .
我没有找到比使用媒体播放器卷视图的一部分更好的方法 .
接下来是代码片段:
这不是完美的解决方案,但它可以完成工作 .
显然,用户仅通过设备激活或音量控制来控制音频路由是Apple的预期用户体验 . 常规开发人员无法使用手机应用程序执行的操作 .
“应用程序实际上并没有随时随地传送音频(甚至不是Apple应用程序!)......我们(引擎盖下)将音频发送到用户想要的位置 . ”
http://lists.apple.com/archives/coreaudio-api/2009/Oct/msg00030.html
从iOS 4.2开始MPVolumeView有两个属性来禁用不需要的元素: