5

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

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

将目标设置为 3.1 平台(只需在项目属性中更改它)它不会编译(由于使用com.android.future.usb库)。我找到了一些关于在 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 调试(它在它上面,它什么都不做)时,我只是得到三星凯斯应用程序显示“按主页键退出三星凯斯”,但没有其他按钮响应。回家并返回 DemoKit 应用程序只是再次显示连接屏幕,它从未真正连接到电路板。

如何使它起作用?ADK 是否适用于 Galaxy Tab 10.1(Google I/O 版),如果适用,我是否走在正确的轨道上?

更新

这是 Arduino 串行监视器所说的,无论平板电脑上的调试模式是打开还是关闭(需要将波特率设置为 115200 才能读取输出):

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

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

数据包错误: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

4 回答 4

6

抱歉,三星 Galaxy Tab 10.1 目前无法使用配件模式。三星已经意识到这个问题并正在努力解决它。当设备确实支持附件模式时,您应该能够使用 com.android.future.usb.* API,这将使您更轻松地编写适用于 Android 3.1 和 2.3.4 的应用程序。

于 2011-06-20T22:18:58.973 回答
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,然后它强制退出。这比以前好。

如果我让它完全工作,我会更新。

于 2011-08-10T04:55:39.630 回答
1

您确定您使用的是正确的构建目标吗?您应该使用“Google API”目标,而不是常规的“Android 2.3.3”(10 级)或“Android 3.1”(12 级)。如果您运行“Android SDK 和 AVD 管理器”,您可以在可用软件包 > 第三方插件 > Google Inc > “Google APIs by Google Inc., Android API 10”(或 12)下找到它们。

于 2011-06-19T00:27:02.813 回答
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" />
于 2012-01-06T12:00:22.737 回答