ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android USB主机模式服务 – 基于USB_DEVICE_ATTACHED启动

2019-06-20 18:11:12  阅读:713  来源: 互联网

标签:android usb host


我想在Android中编写一个基于USB_DEVICE_ATTACHED意图启动的服务.因此,基本上我的服务应该在连接特定USB设备(FT232C – VID:PID 0403:6010)时启动,并在分离USB设备时停止.是否可以这样做,还是应该总是有一个Activity来启动这项服务,以防它尚未启动?最终服务的目的是根据从该USB设备提供的位置,使用TEST_PROVIDER更新LocationProvider上的位置.

我已经尝试在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类已重写onStartCommand(),它处理USB_DEVICE_ATTACHED意图

解决方法:

根据我的经验,< service>无法接收USB意图.我通过创建一个隐藏的活动来接收意图并重新广播它来克服这个问题.当然,此活动也可以处理启动/停止服务.

我已经在这里提出了一些工作代码:
https://stackoverflow.com/a/15151075/588476
您只需更改它即可自动启动和停止服务.

标签:android,usb,host
来源: https://codeday.me/bug/20190620/1246838.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有