我工作的公司定制了一款运行 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/