如何在Google I / O Galaxy Tab 10.1上运行ADK DemoKit示例?

时间:2011-06-15 08:32:09

标签: android adk

我正试图让DemoKit example在ADK板上工作。似乎即使使用3.1更新,Galaxy Tab也没有它需要的一切(或者至少不像宣传的那样工作)。即使通过文档挖掘,似乎三星Kies应用程序可能会阻碍。

如果我按照指示使用API​​级别10库,它将无法运行(单步执行调试器,我看到此异常:java.lang.NoClassDefFoundError: com.android.future.usb.UsbManager)。如果我使用API​​ Level 12 Libraries,也会发生同样的事情。

将目标设置为3.1平台(只需在项目属性中更改它),它将无法编译(由于使用了com.android.future.usb库)。我找到了some changes的一些文档,你需要做的就是在3.1上使用USB包,从中我发现了对DemoKitActivity.java的更改

37,38c37
< import com.android.future.usb.UsbAccessory;
< import com.android.future.usb.UsbManager;
---
> import android.hardware.usb.*;
128c127
< UsbAccessory accessory = UsbManager.getAccessory(intent);
---
> UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
139c138
< UsbAccessory accessory = UsbManager.getAccessory(intent);
---
> UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
152c151
< mUsbManager = UsbManager.getInstance(this);
---
> mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);

即使在做出这些改变之后,我也遇到了问题。它现在安装,DemoKit应用程序的初始屏幕出现“请连接DemoKit板”,但每当我连接ADK板并关闭USB调试(它上面,它什么也没做),我只是得到了三星Kies应用程序说“按主页键退出三星凯斯”,没有其他按钮响应。回家并回到DemoKit应用程序只是再次显示连接屏幕,它从未真正连接到主板。

如何才能成功? ADK是否与Galaxy Tab 10.1(Google I / O版本)配合使用,如果是这样,我是否在正确的轨道上?

更新

无论平板电脑上的调试模式是打开还是关闭(无论是将波特率设置为115200以读取输出),Arduino串行监视器都会显示:

  

设备寻址...请求设备描述符。

     

找到了可能的设备。切换到串行模式

     

数据包错误:5无法读取设备协议版本

它在插入平板电脑时不断重复。

更新2

我意识到我没有更新AndroidManifest.xml文件......更改:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="11" />

<uses-sdk android:minSdkVersion="12" android:targetSdkVersion="12" />

<uses-library android:name="com.android.future.usb.accessory"/>

<uses-feature android:name="android.hardware.usb.accessory"/>

一旦我得到纠正,它似乎没有任何改变。

更新3

我已通过电子邮件发送三星支持,正在等待回复。

4 个答案:

答案 0 :(得分:6)

我很抱歉,配件模式目前不适用于三星Galaxy Tab 10.1。三星意识到了这个问题,正在努力解决它。当设备支持附件模式时,您应该能够使用com.android.future.usb。* API,这将使您更容易编写适用于Android 3.1和2.3.4的应用程序。

答案 1 :(得分:3)

我刚刚获得了新的TouchWiz更新,现在Arduino将其读回串口:

Device addressed... Requesting device descriptor.found possible device. swithcing to serial mode
device supports protcol 1

Device addressed... Requesting device descriptor.found android acessory device
config desc
interface desc
inEp: 1
outEp: 2

这看起来好多了。 Galaxy Tab要求运行DemoKit,我点击OK,它强制退出。这比以前更好。

如果我完全正常工作,我会更新。

答案 2 :(得分:1)

您确定使用的是正确的构建目标吗?您应该使用“Google API”目标,而不是常规的“Android 2.3.3”(级别10)或“Android 3.1”(级别12)。如果你运行“Android SDK和AVD Manager”,你可以在Available Packages&gt;下找到它们。第三方插件&gt; Google Inc&gt; “谷歌公司的谷歌API,Android API 10”(或12)。

答案 3 :(得分:1)

Android 3.1上的我的Galaxy Tab 10.1也没有配件API作为后端。所以我也得到了以下例外:

java.lang.NoClassDefFoundError: com.android.future.usb.UsbManager

使用Android 3.1在Tab 10.1上运行它的一种方法是使用常规附件API。不是后移版本。您可以将DemoKit项目目标SDK设置为常规API级别12(Android 3.1)。

此外,您必须更改DemoKitActivity中的代码段落,以便将UsbManager和UsbAccesory添加到:

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

导入更改为:

import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;

Android清单仍然可以包含以下条目,但不再需要它:

<uses-library android:name="com.android.future.usb.accessory" />