Provo a stabilire una connessione USB tra il mio notebook (win7) e il mio telefono Android (Android 4.2). Il notebook dovrebbe funzionare come host per alimentare il telefono Android. L'obiettivo è che notebook e telefono possano inviare e ricevere stringhe xmlComunicazione USB tra Android (modalità accessorio) e PC Windows (host)
Ho provato a seguire la pagina di Android che spiega la modalità accessorio (http://developer.android.com/guide/topics/connectivity/usb/accessory.html).
1: devo definire un filtro accessorio come hanno fatto qui:
<?xml version="1.0" encoding="utf-8"?> <resources> <usb-accessory model="DemoKit" manufacturer="Google" version="1.0"/> </resources>
Perché io non voglio un hardware speciale per essere riconosciuto. Voglio che tutti i tipi di computer Windows vengano riconosciuti (ad esempio, collego il telefono a un altro pc).
2: Non ho fatto nulla sul lato Windows in questo momento. Ho appena seguito la pagina di Android, collegato il cavo USB e guardato il registro. L'avvio dell'app chiede l'autorizzazione, ma l'accessorio è nullo. Qualche suggerimento perché è nullo? Codice:
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: Ci sono libarys/progetti che posso utilizzare per identificare la connessione USB sul lato di Windows?
- 4: Altre cose a cui dovrei pensare? Cose che non vanno?
- 5: thx per il vostro aiuto :)
Quindi immagino che il # 1 sia più chiaro ora. Intentfilter è necessario solo per il rilevamento automatico – B770