我想创建一个允许用户选择音频路由的应用程序。即用户可以选择是通过耳机,扬声器还是蓝牙播放音频。我的应用程序没有播放任何音频,但我想要的是,如果使用内置音乐应用程序或任何其他媒体播放器在iPhone中播放歌曲,当我从我的应用程序中选择扬声器时,即使是耳机也应该通过扬声器播放歌曲已连接。是否可以从另一个应用程序控制系统级音频路由。
答案 0 :(得分:1)
我想在某个方面做出类似的事情。如果我没记错的话......设备中有一个物理开关在插入耳机时会关闭。由于扬声器与设备的其余部分之间不再存在任何连接,因此无法有效地传送声音。
答案 1 :(得分:1)
我没有找到比使用部分媒体播放器音量视图更好的方法。
接下来是一段代码:
// 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];
这不是完美的解决方案,但它可以完成工作。
答案 2 :(得分:0)
显然,用户仅通过设备激活或音量控制来控制音频路由是Apple的预期用户体验。常规开发人员无法使用手机应用程序。
“应用程序实际上并没有随时随地路由音频(甚至不是Apple应用程序!)......我们(在引擎盖下)将音频发送到用户想要的地方。”
http://lists.apple.com/archives/coreaudio-api/2009/Oct/msg00030.html
答案 3 :(得分:0)
从iOS 4.2开始,MPVolumeView有两个 用于禁用不需要的元素的属性:
showsVolumeSlider
showsRouteButton