为什么我需要一个活动才能使用BluetoothAdapter?

时间:2018-07-14 22:34:50

标签: android android-bluetooth

当我开始使用Android SDK开发移动应用程序时,我想创建一个BluetoothService类,该类可使我连接到配对的设备,并在需要时通过注入服务与之通信。

但是,当我尝试实现服务时,我意识到Android BluetoothAdapter依赖于Activity(又称活动视图)。因此,我放弃了拥有服务的想法,直接在视图中实现了蓝牙。

尽管有效,但我仍然遇到问题。

基本上,我的应用程序是一个遥控器,可用于一次控制关节臂的特定关节/步进电机。

Main activity with buttons to control the articulated arm

无论何时用户想要切换到另一个关节,他们都可以使用右上方的菜单,或者按顶部的图片(显示手臂的图片)以转到另一个视图,在这里可以按零件他们想控制(直接在图片上)。然后,将使用箭头按钮将它们返回到主要活动。

但是,应用程序正在切换到另一个活动这一事实意味着前一个活动已被破坏。就这样,碰巧该应用程序会暂时失去与其他设备的蓝牙连接,而使用可注入的BluetoothService会允许我的应用程序将其携带到其他活动中。

为什么需要使用Activity才能使用BluetoothAdapter?

1 个答案:

答案 0 :(得分:1)

权限和发现需要活动,因为它们需要用户输入。总体而言,其余的蓝牙API不需要活动。特别是,一旦您获得BluetoothDevice,就应该能够在没有任何活动的情况下完成实际的蓝牙I / O。

对于您来说,尚不清楚您是否真的需要在后台执行此工作,因此可能不需要服务。要么:

  • 对所有这些工作使用单个活动,使用片段或其他东西来处理由操作栏项触发的工作;或

  • 是否已通过某个单一实例来管理蓝牙通信,也许使用存储库模式中的一个变体来进行管理,而该变体不在任何活动之内