5

実証済みの ADK アクセサリを Nexus 7 と Galaxy Nexus に接続したところ、「デバイス プロトコル バージョンを読み取れませんでした」というメッセージが表示されて接続できませんでした。ICSでNexus Sに接続されたボードが死んだと思った-うまくいった。Jelly Bean のアップグレード前にも Galaxy Nexus で作業したため、ハードウェアの障害は除外できます。

私は ADK の発表をかなり注意深く見てきましたが、この特定の変更について読んだり聞いたりした覚えはありません。また、ADK 2.0 をサポートする Android デバイスの下位互換性についても覚えていません。

アクセサリ開発キット 2011ガイドには、「プロトコル バージョン 1 は Android 2.3.4 (API レベル 10) 以降でサポートされています。プロトコル バージョン 2 は Android 4.1 (API レベル 16) 以降でサポートされています」と記載されていますが、バージョン 1 とは記載されていません。は4.1 でサポートされておらず、既存のハードウェアがそのように放棄されるのはかなり奇妙です。

ここで何が欠けていますか?これはバグですか、それとも機能ですか?

4

4 に答える 4

5

昨年リリースされた古い ADK1 ライブラリは、JellyBean デバイス (Android 4.1 以降) が話す新しい AOA v2 プロトコルを認識しません。これは、更新された ADK1 ライブラリ リリースで修正されました。

新しい ADK1 ライブラリを取得します。

ADK ライブラリを更新し、ADK1 スケッチをアップロードします。新しいライブラリは Arduino 1.0 以降で動作するように更新されているため、おそらく Arduino IDE も更新する必要があることに注意してください。

于 2012-07-23T23:41:58.157 に答える
2

@Chris Stratton への返信で、問題は元のライブラリが将来の互換性を考慮して作成されていないことです。

元のライブラリは、(protocol == 1チェックインによりswitchDevice()) 将来のプロトコル バージョンには下位互換性がないことを前提としています。20120606 ライブラリ バージョンから ( のprotocol >= 1チェックの改訂の暗示によりswitchDevice()) 将来のライブラリ バージョンには後方互換性が期待されるという意図があるようです。

残念ながら、これはライブラリの元のバージョンでコンパイルされた既存のファームウェアが Jelly Bean デバイスと互換性がないことを意味します。ファームウェアを新しいライブラリ バージョンで再コンパイルし、アクセサリに再アップロードする必要があります。

また、これを書いているときに、サイド バーの「ADK パッケージ」リンクが、本文にリンクされている新しいバージョンではなく、古いライブラリ バージョンにリンクしているドキュメントにエラーがあることにも注意してください。(これにバグを追加しました: https://code.google.com/p/android/issues/detail?id=35463 )

追加情報:

  • http://developer.android.com/tools/adk/aoa2.html#detecting「プロトコルのバージョン 2.0 は上位互換性があるため、元のアクセサリ プロトコル用に設計されたアクセサリは、新しい Android デバイスでも動作します。」しかし、これは元のライブラリの問題を無視しています。

  • http://developer.android.com/tools/adk/adk.html#start-adk http://developer.android.com/tools/adk/aoa2.html#detectingの両方のコードがprotocol >= 1呪文を使用していることにも注意してください。(これを確認することはできませんが、元のライブラリがこのバージョンのチェックを使用していなかったことを考えると、ADK2011 のドキュメントは新しいチェックを使用するように更新されていると思います。)

于 2012-07-25T00:12:31.583 に答える
1

Jelly Beans デバイスで古い ADK を実行することができました。詳細は次のとおりです。

  • Mac OS Mountain Lion での実行
  • Arduino メガ ADK で
  • 4.1.1 を搭載した Samsung Galaxy S3

手順:

  1. darduino-1.0.1-macosx をダウンロード
  2. Documents/Arduino フォルダを空にする
  3. その中にフォルダライブラリを作成します
  4. labs.arduino.cc/uploads/ADK/GettingStarted/ArduinoADK-beta-001.zip から USB 互換ファイルをダウンロードします。
  5. 解凍後、ArduinoADK-beta-001/libraries/UsbHost フォルダを上記のライブラリ フォルダにコピーします。
  6. AndroidAccessory フォルダーを取得し、ライブラリにコピーします。スーリー、どこから手に入れたか思い出せます。コードがコンパイルできるようにするために必要です。このフォルダーには、特に AndroidAccessory.cpp と AndroidAccessory.h が含まれています。
  7. Ardoinu を起動し、たとえばボードにコードをアップロードします (インクルードと定義の前に # を挿入してください。コード形式では表示されません):

    include < Max3421e.h > include < Usb.h > include < AndroidAccessory.h > define ARRAY_SIZE 12;

    AndroidAccessory acc("メーカー", "モデル", "説明", "バージョン", "URI", "シリアル");

    char hello[12] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'} ;

    void setup() { Serial.begin(115200); // acc.powerOn(); acc.begin(); }

    ボイドループ() {

    if (acc.isConnected()) { for (int i=0; i < 12; i++) { Serial.print(hello[i]); 遅延(250); }

    Serial.println(); 遅延(250); } }

    1. S3 を USB 経由で接続すると、シリアル モニターに出力が表示されます。

よろしくフロリダ

于 2012-12-04T22:42:36.517 に答える