1

我试图弄清楚如何将当前呼叫切换为通过扬声器输出音频(就好像该人要在电话应用程序上按“扬声器”一样。理想情况下,我想接受扬声器上的呼叫;但是一步一次!

我已经搜索了各种标题,包括私有和非私有框架,但我找不到合适的方法来调用以切换到扬声器。

最初,我预计它会出现在 CTCall.h 中,但那里没有任何有用的东西(在这方面)..

有谁知道在哪里找到合适的方法?

非常感谢 :)

4

1 回答 1

2

几个想法:

1)查看系统范围的事件生成。您可以以编程方式单击所需按钮(“扬声器”或“应答”按钮)。这里有几个关于这个的问题:

在 iOS 上模拟系统范围的触摸事件

在不越狱设备的情况下在 iOS 中模拟系统范围的触摸事件

如何向 iPhone OS 发送触摸事件?

您可能有兴趣在 GSEvent 上搜索更多内容,这是模拟的关键。

2)转到模拟器文件夹(/Application/XCode/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk

做这样的事情

grep -R "演讲者" ./

这个想法是在二进制文件(与头文件)中搜索扬声器。大多数私有 API 没有记录在头文件中(这是它们私有的部分原因)。

我相信几个有趣的热门歌曲是:

  • TelephoneUI私有框架
  • AudioToolbox框架(顺便说一句。它甚至在 .h 文件中包含以下内容:kAudioSessionOverrrideAudioRoute_Speaker)
  • AVFoundation框架
  • IOKit*框架(它在 .h 文件中有 kIOAudioOutputPortSubTypeExternalSpeaker)

等等。

下一步将是拆卸它们。这些框架中的大多数都有很多有趣的 API,这些 API 没有在 .h 文件中定义。浏览它们以检查您是否会发现有关此主题的任何有趣内容,这很有用。

如果您不想打扰反汇编,可以从此处获取提取的标头: https ://github.com/nst/iOS-Runtime-Headers/tree/master/PrivateFrameworks

于 2013-02-22T22:30:22.347 回答