1

私が働いている会社は、Androidを実行するカスタムハードウェアです。かなりの数の周辺機器に接続されます。重要な点は、このデバイスは別の会社向けであるということです。

ContentProviderを使用すると、アプリケーション間でデータを共有できることを知っています。しかし、私が疑問に思っているのは、ハードウェアと相互作用するメソッド(GPIO相互作用)を、どのアプリケーションでも使用できるように何らかの方法で保存できるかどうかです。

たとえば、デバイスに特定のGPIOピンがLEDにマッピングされているとします。LEDを点滅させるメソッドを作成し、それをアプリケーションで使用してから、デバイスを他の人に渡してコードを非表示にしますが、LEDの点滅方法を再度使用します。これは必須ではありませんが、他社がデバイスで提供しているアプリを補完する別のアプリを作成できる可能性があります。

どんな洞察も役に立ちます。

乾杯

4

1 に答える 1

2

ContentProviderRESTWebインターフェイスのように使用できます

アプリから:

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 に答える