Android - 是否可以有硬件交互方法的内容提供者?

标签 android embedded hardware reusability

我工作的公司定制了一款运行 Android 的硬件。它将连接到相当多的外围组件。关键是这个设备是为另一家公司准备的。

我知道使用 ContentProvider,可以在应用程序之间共享数据。然而,我想知道的是,与硬件交互的方法(GPIO 交互)是否可以以某种方式存储,以便它们可以被任何应用程序使用。

例如,假设设备有一个映射到 LED 的特定 GPIO 引脚。您创建了一种使 LED 闪烁的方法,在您的应用程序中使用它,然后将设备交给其他人并希望隐藏代码,但再次使用 LED 闪烁方法。这不是必需的,但可以让其他公司构建另一个应用程序来补充我们随设备提供的应用程序。

任何见解都会有所帮助。

干杯

最佳答案

您可以像使用 REST 网络界面一样使用 ContentProvider

来自应用:

Uri ledUri = Uri.parse("content://your.app/led");
ContentResolver cr = getContentResolver();

// "write" data
ContentValues cv = new ContentValues();
cv.put("state", 1);
cr.insert(ledUri, cv);

// read data
int newState = 0;
Cursor c = cr.query(ledUri, new String[] { "state" }, null, null, null);
if (c.moveToFirst()) {
    newState = c.getInt(0);
}

在您的提供者内部,您无需将数据写入数据库,只需设置/读取 GPIO 状态即可。大致像

@Override
public Uri insert(Uri uri, ContentValues values) {
    if (uri.toString().equals("content://your.app/led")) {
        int requestedState = values.getAsInteger("state");
        set_gpio_state(requestedState);
    }
}

如何从 Java 访问 GPIO 是另一个问题,因为它们(据我所知)只能在内核级别访问。

关于Android - 是否可以有硬件交互方法的内容提供者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642387/

相关文章:

javascript - 有没有办法通过网络编程来检测鼠标滚轮硬件?

android - 如何使用android在没有用户交互的情况下从相机捕获图像

embedded - 在STM32上编程NVIC(无库)

java - 具体来说,.setWidth 或 .setHeight 使用哪种 Integer?

mono - 为专有 ARM 设备交叉编译单声道

c - 与外部 SPI 闪存通信时是否应该禁用中断?

hardware - Google Colaboratory 的硬件规范是什么?

hardware - 你能推荐一个vhdl源代码的网站吗?

java - JRE 或 JDK 必须... Java - Eclipse 问题

Android 相机预览在预览中拉伸(stretch),而不是在拍照后