我尝试在我的笔记本(win7)和我的Android手机(Android 4.2)之间建立USB连接。 笔记本应该作为主机为Android手机供电。目标是笔记本和手机可以发送和接收xml字符串
我尝试按照解释配件模式的安卓页面(http://developer.android.com/guide/topics/connectivity/usb/accessory.html)。
1: 我必须像在此处一样定义附件过滤器:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-accessory model="DemoKit" manufacturer="Google" version="1.0"/>
</resources>
因为我不想要识别特殊硬件。我想要识别所有类型的Windows计算机(例如我将手机插入另一台PC)。
2: 我现在在窗户方面什么也没做。我只是按照android页面,插入USB电缆并观看日志。应用程序startet请求权限,但附件为null。有什么提示为什么它是null? 代码:
public class MainActivity extends Activity {
private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
private static final String TAG = "USB_PERMISSION";
UsbAccessory accessory;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0,
new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
registerReceiver(mUsbReceiver, filter);
accessory = (UsbAccessory) getIntent().getParcelableExtra(
UsbManager.EXTRA_ACCESSORY);
manager.requestPermission(accessory, mPermissionIntent);
}
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
String manufacturer;
Log.d(TAG, "permission accepted for accessory " + accessory);
if (accessory != null) {
manufacturer = accessory.getManufacturer();
Log.d(TAG, "Manufacturer: " + manufacturer); }
} else {
Log.d(TAG, "permission denied for accessory "+ accessory);
}
}
}
}
};
}
3:我是否可以使用任何libarys /项目来识别Windows端的USB连接?
答案 0 :(得分:4)
您应该在主机端(在您的情况下是Windows)上有一个应用程序,它将要求Android进入附件模式。当它询问时,您将获得是否给予许可的选项。您有零配件,因为没有连接配件,已跟随AOAP启动通信。 因此,可以使用未运行Android的附件设备,并使用AOAP与其进行通信。
您可以在Android SDK的示例中找到Android端的示例,在USB文件夹中。
答案 1 :(得分:0)
是的,您需要在Windows端使用WinUSB / libusb API来完成主机工作,将Android变成附件模式,然后互相交谈
答案 2 :(得分:-4)
好的,我想我自己找到了答案。 Android USB配件模式只能在Android手机和运行Android的其他设备(如Arduino)之间使用。 因此,使用此设置无法做到这一点。