USB_DEVICE_ATTACHED インテントに基づいて開始するサービスを Android で作成したいと考えています。したがって、基本的に、私のサービスは特定の USB デバイス (FT232C - VID:PID 0403:6010) が接続されたときに開始され、その USB デバイスが取り外されると停止します。それを行うことは可能ですか、それともまだ開始されていない場合に備えて、このサービスを開始するアクティビティを常に持つ必要がありますか? サービスの最終的な目的は、この USB デバイスから提供される場所に基づいて、LocationProvider の場所を TEST_PROVIDER で更新することです。
AndroidManifest.xml でこの構成でサービスを作成しようとしました
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.testlocservice"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" android:targetSdkVersion="15" />
<uses-feature android:name="android.hardware.usb.host"/>
<supports-screens android:resizeable="true" android:smallScreens="true" android:anyDensity="true" android:largeScreens="true" android:xlargeScreens="true" android:normalScreens="true"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
<service android:name="com.testlocservice.LocationService" android:process=":LocService" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</service>
</application>
</manifest>
xml/device_filter.xml にはこれが含まれています
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="0403" product-id="6010"/>
</resources>
私の LocationService クラスは、USB_DEVICE_ATTACHED インテントを処理する onStartCommand() をオーバーライドしました