1

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

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

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

任何见解都会有所帮助。

干杯

4

1 回答 1

2

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

从应用程序:

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 是另一个问题,因为它们(AFAIK)只能在内核级别访问。

于 2013-03-26T16:51:05.933 回答