0

几天来,我一直在尝试找出一种方法,在使用较新 API 构建的应用程序中使用以前的 Android API 实现方法。

具体来说,我正在使用startBluetoothSco()通过蓝牙 SCO 通道发起虚拟呼叫。在 API 17 中,这可以完美运行,但是,在 API 18 及更高版本中,会startBluetoothSco()打开原始 SCO 通道而不是虚拟调用(如开发人员文档中所述:http: //developer.android.com/reference/android/media/AudioManager. html#startBluetoothSco() )。我正在使用的附件对原始 SCO 频道没有任何作用。

在这种情况下,我不能选择使用 API 17 构建应用程序,因为其他开发人员很可能在不久的将来需要更高版本的 API 的功能。

我确实认为我可以将蓝牙代码包装在一个库项目中,使用 API 17 构建它,然后将其集成到主应用程序中,然后在 API 18 中构建它。不幸的是,这不起作用;操作系统似乎看到了startBluetoothSco()从使用 API 18 构建的应用程序调用的事实,因此使用了该方法的 API 18 实现。

如果有人可以建议我可以强制 API 18 应用程序使用 API 17 实现的任何方式,我将不胜感激。

谢谢

4

1 回答 1

0

在这种情况下,我不能选择使用 API 17 构建应用程序,因为其他开发人员很可能在不久的将来需要更高版本的 API 的功能。

你用什么构建并不重要。你做什么才是最重要的。如果您说从 API 级别 18 开始startBluetoothSco()不适用于您的硬件,那么 Android 4.3+ 设备将不适用于您的硬件。

不幸的是,这不起作用。操作系统似乎看到 startBluetoothSco() 是从使用 API 18 构建的应用程序调用的事实,因此使用该方法的 API 18 实现。

它使用“方法的 API 18 实现”,因为如果它是 Android 4.3 设备,这就是它所拥有的全部。

如果有人可以建议我可以强制 API 18 应用程序使用 API 17 实现的任何方式,我将不胜感激。

在设备上安装基于 Android 4.2 的 ROM mod。

于 2014-07-24T16:20:52.290 回答