, 내가 http://developer.android.com/guide/topics/connectivity/usb/host.html의 코딩 노트를 따라 네트워크에서 다른 사람의 코딩을 참조하십시오. 여러 번 확인한 후에도 문제를 찾을 수 없습니다. 내 디버깅 후 UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED 의도는 발생하지 않았습니다. Context.sendBroadcast()를 사용하여 사용자 정의 된 Intent를 보내려고하고 내 BroadcastReceiver가 Intent를 수신 할 수 있기 때문입니다. 그러나 USB 장치를 장착/분리 할 때 BroadcastReceiver가 실행되지 않습니다. 내가 사용하는 핸드폰은 HTC One-X입니다. 마우스 기능이 완벽하게 작동하는 것처럼 OTG 기능이 정확하다고 확신합니다. 여기 내 코드 조각입니다.이 UsbManager.ACTION_USB_DEVICE_ATTACHED의 방송 의도를 수신 할 수 없음/UsbManager.ACTION_USB_DEVICE_DETACHED 내가 최근에 USB 호스트 응용 프로그램을 코딩하고,하지만 난 장치 부착/분리 이벤트를 감지 할 수 있기 때문에 stucked의
@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 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 고해상도/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 설정이 시도되지 않고 사용 :
<?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>
어떤 일이 일어 났는지 아는 사람이 있습니까? 또는 방송의 의도가 활성인지 아닌지를 감지하는 방법을 알려주십시오. 대단히 감사합니다.
이 나를 도와 : ** [? 어떻게 USB 연결 상태 방송을 수신하기 위해 (http://stackoverflow.com/questions/39942453/how-to-receive-usb-connection-status-broadcast) ** –