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

问题描述

| 我试图让DemoKit示例在ADK板上运行。似乎即使使用3.1更新,galaxy Tab也无法满足它的所有需求(或者至少不能像宣传的那样工作)。即使仔细阅读文档,似乎三星Kies应用也可能会妨碍您。 如果按照说明使用API​​级别10库,它将无法运行(逐步进入调试器,我会看到此异常:“ 0”)。如果我使用API​​级别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调试(在其上执行任何操作)时,我只是获取显示“按主键退出Samsung Kies”的Samsung Kies应用,其他按钮均不响应。打回家然后回到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 我已通过电子邮件发送给三星支持部门,正在等待回复。     

解决方法

        抱歉,附件模式目前不适用于Samsung Galaxy Tab 10.1。三星已意识到此问题,并正在努力解决。当设备确实支持附件模式时,您应该可以使用com.android.future.usb。* API,这将使您更轻松地编写适用于Android 3.1和2.3.4的应用程序。     ,        我刚刚获得了新的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,然后强制退出。这比以前更好。 如果我能完全正常工作,我会进行更新。     ,        您确定使用正确的构建目标吗?您应该使用\“ Google API \”目标,而不是常规的\“ Android 2.3.3 \”(级别10)或\“ Android 3.1 \”(级别12)。如果您运行“ Android SDK和AVD Manager”,则可以在“可用软件包”>“第三方加载项”>“ Google Inc。”>“ Google Inc.的Google API,Android API 10”(或12)下找到它们。     ,        我在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\" />
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...