【问题标题】:setting up broadcast Receiver to turn on bluetooth设置广播接收器以打开蓝牙
【发布时间】:2012-02-23 20:21:59
【问题描述】:

我是 Java 和 Android 的新手,我正在尝试弄清楚如何执行以下操作。顺便说一句,我发现官方的谷歌 Android 文档不适合新手,并且希望有任何推荐给更多的东西......非本地程序员友好。

好的,开始吧:

我想在插入/拔出手机(电脑或交流电)时自动打开/关闭蓝牙。

所以,我找到了以下组件:

BatteryManager:似乎使用ACTION_BATTERY_CHANGED 意图是要走的路,并在这种情况发生变化时设置广播接收器。对吗?

我还找到了 BluetoothAdapter,其中有 enable() 方法。其中说:“不要在没有明确用户操作的情况下打开蓝牙。” - 插入电话是明确的用户操作吗?这是适合我使用的东西吗?当然,disable() 也是如此。

另外,我在 Internet 上看到的 BroadcastReceivers 示例仅向我展示了如何启动一个意图 - 通常是打开一个新活动。我假设我可以让广播接收器启动一种方法来打开和关闭蓝牙?意图可以是一种方法,而不仅仅是活动吗?

任何帮助将不胜感激!

【问题讨论】:

    标签: android bluetooth broadcastreceiver powermanager


    【解决方案1】:

    BatteryManager:似乎使用 ACTION_BATTERY_CHANGED 意图是要走的路,并在这种情况发生变化时设置广播接收器。对吗?

    是的,这是一种监控诸如何时连接充电器(包括插入具有充电功能的 USB 端口)之类的事情的方法。你也可以使用ACTION_POWER_CONNECTED

    插入电话是一项明确的用户操作吗?

    否 - 除非您创建一个要求用户同意的弹出窗口,否则绝对不会。引用 enable() 方法的文档...

    未经用户直接同意,切勿启用蓝牙。如果您想打开蓝牙以创建无线连接,您应该使用 ACTION_REQUEST_ENABLE Intent,这将引发一个对话框请求用户允许打开蓝牙。 enable() 方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如“电源管理器”应用程序。

    当我插入设备进行充电时,10 次中有 9 次我不希望它做任何事情,只是充电。如果我在手机上安装了您的应用,但发现它在我不知情的情况下静默启用蓝牙,您的应用将被立即卸载。

    蓝牙存在已知的安全问题,根据用户设置,如果在某人不知情的情况下启用它,您可能会使某人的设备处于危险之中。

    意图可以是一种方法,而不仅仅是活动吗?

    不,Intent 是消息传递系统的一部分。见Intents and Intent Filters。是的,我知道它不是很“适合新手”,但 Android 是一个复杂的野兽,如果你真的想成功地为它编程,你必须阅读这类东西。

    【讨论】:

    • 嗨 MisterSquonk,感谢您的回复 :) 我理解您关于不想默默地做这件事的观点,但这不适用于我的应用程序 - 这将是一个非常简单的应用程序 - 全部将做的是打开和关闭蓝牙。所以,如果你下载并安装它,你就会知道你得到了什么。所以,听起来好像没有办法在后台打开/关闭,没有对话框,对吧? Juice Defender 有这个选项,但效果不是很好。另外,要明确的是,我不怕读很多,只是五分之四,我不明白他们的解释;)
    • 我发现“从不”是一个非常强烈的词 :) 我们正在在未经用户直接同意的情况下启用蓝牙,因为我们有一个专业的驱动程序应用程序,并且它需要在所有情况下都保持开启时间,无论用户做什么。我很高兴 Android 设计师允许我们以编程方式强制启用蓝牙,否则我们的应用程序在现实世界中会失败:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多