【发布时间】:2010-05-10 12:23:27
【问题描述】:
我正在尝试编写一个简单的 android 应用程序来切换用户的蓝牙连接。我想要一个可以在所有版本的 Android 1.5+ 上运行的应用程序。
我知道 Android 2+ API 正式添加了对蓝牙的支持,但是如果我的目标是 SDK 级别 3 (android 1.5),那么我将无法访问官方的 BluetoothAdapter 类。
我在网上看到了一些使用反射的示例,这适用于 1.5 和 1.6,但不适用于 2.0。
我还看到了以下非官方蓝牙 API,但它们的示例应用程序(在市场上以“蓝牙示例”和“backport-android-bluetooth”的形式提供)都不能在我的 Nexus One 上运行。
http://code.google.com/p/android-bluetooth/ http://code.google.com/p/backport-android-bluetooth/
有没有人有一些适用于所有 Android 版本的示例代码?
我知道可以在单个应用程序和 1.5+ 版本中实现蓝牙切换,因为市场上有许多应用程序,我已经测试并且能够实现这一点。
非常感谢任何帮助并感谢您的阅读。
注意:请不要只建议针对不同版本编写单独的应用程序,这不是我想要实现的目标。
【问题讨论】:
-
您不必使用不同的应用程序,您可以从代码中读取 api 版本并调整您的代码;)
-
感谢您的回复,我知道我可以在运行时确定 API 版本并为每个设备运行特定于版本的代码。不幸的是,我没有可以使用针对 API 级别 3 的本机 API 在版本 2+ 设备上启用/禁用蓝牙的代码。如果您知道如何实现这一点,请分享。
-
是什么阻止您在运行时检查 API 版本,然后确定使用哪种方法?如果您已经获得了适用于旧版本的代码,并且为新版本引入了可以满足您需求的官方 API,那么问题出在哪里?只需将最低 SDK 版本设置为 3,但以新蓝牙类发布时的级别为目标。在尝试使用高于 api-3 的类之前,请检查系统版本。
-
我曾假设将 minSdkVersion 属性设置为低于项目目标 api 会导致问题。不过,我会试一试,让你知道我的进展如何。谢谢史蒂夫。
-
怀疑应用程序在 G1 (v1.6) 上立即强制关闭,并显示“应用程序
已意外停止。请重试。”我所有的代码都被 try catch 块和调试 toast 消息包围,所以我只能假设这是因为它没有针对正确的 API。但是可以在 Nexus 上使用。