Skip to content Skip to sidebar Skip to footer

Android Usb Host Mode Service - Start Based On Usb_device_attached

I want to write a service in Android which starts based on USB_DEVICE_ATTACHED intent. So, basically my service should start when a specific USB Device(FT232C - VID:PID 0403:6010)

Solution 1:

From my experience a <service> cannot receive the USB intents. I overcame this by creating a hidden activity to receive the intent and re-broadcast it. Of course this activity could also handle starting/stopping your service.

I have already put up some working code here: https://stackoverflow.com/a/15151075/588476 You will just have to change it so it starts and stops your service automatically.

Solution 2:

I believe the main problem is the number base for the vendor and product id's. The format in the device filter xml should be decimal, so vendor-id="1025" and product-id="24592".

Aside from that, it absolutely should be USB_DEVICE_ATTACHED, rather than UMS_CONNECTED (the latter is not USB host mode at all).

I don't have the authoritative answer as to whether a service could receive a broadcast intent, or whether you have to use an activity for that, but it seems like Wayne Uroda has good experience with this question.

Solution 3:

Yes, it is very well possible, sorry to say that you are using wrong intent-filter in your reveiver tag in AndroidManifest.xml. Let me guide you

AndroidManifest.xml

.
.
.
<receiverandroid:name=".DetactUSB"><intent-filter><actionandroid:name="android.intent.action.UMS_CONNECTED" /><actionandroid:name="android.intent.action.UMS_DISCONNECTED" /></intent-filter></receiver>

BroadcastReceiver file

publicclassDetactUSBextendsBroadcastReceiver
{ 
    privatestaticfinalStringTAG="DetactUSB";
    @OverridepublicvoidonReceive(Context context, Intent intent) 
    {
        // TODO Auto-generated method stubif (intent.getAction().equalsIgnoreCase( "android.intent.action.UMS_CONNECTED"))
        {
                // Fire your Intent to start Activity
                Log.i(TAG,"USB connected..");
        }
        if (intent.getAction().equalsIgnoreCase( "android.intent.action.UMS_DISCONNECTED"))
        {
        }
    } 
}

Post a Comment for "Android Usb Host Mode Service - Start Based On Usb_device_attached"