繁体   English   中英

安装后允许我的 Android 应用程序使用第三方扩展程序/插件 - 低功耗蓝牙

[英]Allow third party extensions/plugins for my Android app after installation - Bluetooth Low Energy

我查看了与此主题相关的堆栈溢出中的几篇文章,我能得到的最接近的是使用内容提供程序在 APK 之间共享数据。

我想要做的是首先安装我的应用程序,该应用程序扫描并连接到遵循 BT SIG 标准的低功耗蓝牙健康设备。 我试图支持的是添加处理第三方专有健康设备的插件。

我将需要能够查询此类已安装的插件或扩展。 我需要从插件中获取一些信息,例如他们专有服务的 UUID,以便我可以从该设备上获取广告。

然后我需要将广告传递给该插件。 该插件将连接并处理设备,并将某些信息返回给我的应用程序,包括测量数据。 请注意,该插件必须使用多个 Android 特定的 BTLE API; 它不会是基本的 Java 代码!

这些第三方插件将独立开发,用户可以在它们可用时下载它们,从而增加对专有设备的支持。

可以清楚地为 Windows 或 Linux 上的 Java 应用程序添加插件。 然而,这甚至可以在 Android 上做到吗? 如果有人能指出我正确的文档、教程等,我将不胜感激。 我一直无法在我的谷歌搜索中将正确的词放在一起来找到它。

也许唯一的解决方案是创建第二个 APK 并通过“私有化”广播接收器进行通信? 如果有某种类型的插件支持,我相信它会让生活更轻松。

====================== 进一步的考虑 ========================== = 这里的目标是拥有可添加的专有服务来处理我的处理程序没有的专有蓝牙健康设备(它只处理标准)。 专有服务从我的应用程序中获取广告信息,连接到设备,获取数据,然后在回调中将其发送回。

问题是:可以有多个这样的服务,我不知道它们的名字,也不知道有多少。 但是,都实现了相同的 IPC 接口(通用 AIDL 文件)。 我怎样才能知道有多少这样的服务? 这是只有 BroadcastReceiver 才能处理的工作吗?

我怎样才能知道有多少这样的服务?

您可以使用PackageManager进行那种自省。 鉴于Android R 在这方面的一些变化,您可能希望这样做:

  1. <intent-filter>添加到<service> ,宣传您将用于所有此类服务的自定义Intent操作。

  2. 使用PackageManagerqueryIntentServices()来查找实现该<intent-filter>所有服务。

您可以在这个示例应用程序中看到它的基本机制。 就我而言,我碰巧选择了IDownload接口的完全限定类名作为我的自定义操作字符串,但这当然不是必需的。 就我而言,我只期待一项这样的服务。

检查服务是否由预期的签名密钥签名的奖励积分,因此恶意软件不会尝试提供服务并诱骗您使用它。 此示例应用程序在前一个应用程序的基础上进行了扩展并进行了处理。 但是,这些示例有点旧,因此更新的 Android 版本可能需要额外的工作。

FWIW,这两个示例都包含在本书中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM