我有一个使用 Android 2.1 的应用程序,它利用 LocationManager 获取高度。但是现在,我需要使用需要 API 级别 9 (2.3) 的 SensorManager 获取海拔高度。
如何通过放置条件并通过函数名称调用它(可能在普通 Java 中)将 SensorManager.getAltitude(float, float)
放入我的 2.1 android 应用程序?
提前致谢
更新 1 如果您注意到我的应用程序需要使用 Android 2.1 进行编译。这就是为什么我正在寻找一种方法来按名称或以任何其他可以编译的方式调用函数。
最佳答案
您需要针对您需要的最高 API 进行构建,然后有条件地为您想要支持的其他级别编写备用代码路径
要在执行时检查当前 API 级别,Android 文档的最新建议是执行如下操作:
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD)
{
...
不过,一旦引入这种复杂性,就必须非常小心。目前没有自动检查所有代码路径的方法,以确保所有高于 minSdkVersion 的 api 级别调用都有替代调用来支持所有版本。如果存在可以执行类似操作的单元测试工具,也许有人可以插话。
关于Android:如何调用其他 API 级别中存在的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410143/