我正试图让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无法读取设备协议版本
它在插入平板电脑时不断重复。
我意识到我没有更新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"/>
一旦我得到纠正,它似乎没有任何改变。
我已通过电子邮件发送三星支持,正在等待回复。
答案 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" />