, ben http://developer.android.com/guide/topics/connectivity/usb/host.html kodlama notu izledi ve ağdaki diğer kodlamalara bakın, Birkaç kez kontrol ettikten sonra, hala sorunu bulamıyorum. Hata ayıklama işleminden sonra, UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED amacının gerçekleşmediği anlaşılıyor, çünkü Context.sendBroadcast() öğesini özelleştirilmiş bir amaç göndermek için kullanmaya çalıştığım ve BroadcastReceiver cihazımın amacını alabiliyor. Ancak USB cihazını taktığımda/çıkarırken BroadcastReceiver çalışmıyor. Kullandığım cep telefonu HTC One-X'tir, eminim ki OTG fonksiyonu, fare fonksiyonu mükemmel çalışıyor. İşte kod parçam.UsbManager.ACTION_USB_DEVICE_ATTACHED yayın Niyet alınamıyor/UsbManager.ACTION_USB_DEVICE_DETACHED Geçenlerde bir USB ana App kodlama, ama ben cihazı ekli/müstakil olay algılayamaz çünkü stucked var
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.launcher);
mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);
if(mUsbManager == null) {
Log.d(TAG, "mUsbManager is null");
}
// listen for new devices
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
// filter.addAction("MyTest");
registerReceiver(mUsbReceiver, filter);
}
BroadcastReceiver
BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "mUsbReceiver.onReceive start");
String action = intent.getAction();
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
setDevice(device);
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
if (mDevice != null && mDevice.equals(device)) {
setDevice(null);
}
}
}
};
Manifest.xml res/xml
<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.USB_PERMISSION" />
<uses-sdk android:minSdkVersion="12" />
<application>
<activity android:name=".USBActivity"
android:label="USBActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- <receiver android:name=".mUsbReceiver"> -->
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="@xml/device_filter" />
<!-- </receiver> -->
</activity>
</application>
device_filter, 3 ayarları denedik ve hiçbir kullanım:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- iCooby mouse -->
<!-- <usb-device vendor-id="15d9" , /> -->
<!-- <usb-device vendor-id="5593" product-id="2637"/> -->
<usb-device />
</resources>
Birisi ne olduğunu biliyorsa? ya da yayın niyetinin aktif olup olmadığını nasıl anlayacağımı söyle, çok teşekkürler.
Bu bana yardımcı oldu: ** [USB bağlantı durumu yayınını nasıl alabilirim?] (Http://stackoverflow.com/questions/39942453/how-to-receive-usb-connection-status-broadcast) ** –