【问题标题】:How to Toggle Bluetooth in All Android Versions 1.5+ and Upwards如何在所有 Android 版本 1.5+ 及更高版本中切换蓝牙
【发布时间】: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 上使用。

标签: android bluetooth


【解决方案1】:

我相信您正在寻找这个http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html。蓝牙适配器自 Eclair 以来一直存在。但是,除非打开相应设置页面的意图(如下例所示),否则在此之前无法执行此操作:

Intent settingsIntent = new Intent(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(settingsIntent);

我建议您使用“蓝牙设置”页面的意图,因为这更容易实现,并且可以识别设备上是否可以使用蓝牙。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多