Question:
Is it possible for me to detect a USB connection in my Android application and how do I do it?
I have a sync menu that is done via USB and FTP, however I want to make the USB option accessible only when the device is connected to the PC via USB.
I saw something about USBManager, but I couldn't find anything that could help me.
Answer:
In the Activity that has this menu, do the following:
Declare a class derived from BroadcastReceiver
public class UsbDeviceDetect extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase( "android.intent.action.UMS_CONNECTED")) {
//Aqui torne enable o seu item de menu
}
if (intent.getAction().equalsIgnoreCase( "android.intent.action.UMS_DISCONNECTED")) {
//Aqui torne disable o seu item menu
}
}
}
Declare two attributes, one for BroadcastReceiver
and one for IntentFilter
private UsbDeviceDetect usbDeviceDetect;
private IntentFilter filter;
In the onCreate
method create an instance of BroadcastReceiver
and its IntentFilter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
----------
UsbDeviceDetect usbDeviceDetect = new UsbDeviceDetect();
filter = new IntentFilter();
filter.addAction("android.intent.action.UMS_CONNECTED");
filter.addAction("android.intent.action.UMS_DISCONNECTED");
}
In the method onResume
register the BroadcastReceiver
@Override
protected void onResume(){
super.onResume();
registerReceiver(usbDeviceDetect, filter));
}
In the onPause
method unregister the BroadcastReceiver
@Override
protected void onPause() {
unregisterReceiver(usbDeviceDetect);
super.onPause();
}