androidUSB通信——打印机
本文主要解决一下几个问题:
- usb的基本通信
- usb的基本通信打印文字
- 使用jar包打印一个订单信息
一、usb基础
Android 支持各种 USB 外围设备,通过两种模式来支持 Android USB 外设 (实现了 Android 外设协议的硬件): USB 外设模式和 USB 主机模式。在 USB 外设模式下,外部 USB 硬件(装有 Android 的设备要连接的外部设备)充当 USB 主机。
关于usb的介绍可以查看:
http://www.cnblogs.com/over140/archive/2011/11/03/2234258.html
我们这里面使用的是 usb host方式,关于usb host的介绍可以查看官网文档,也可以查看:
http://blog.csdn.net/yylooker2008/article/details/24378991
二、创建基本usb通信
主要涉及到以下的文件:
- AndroidManifest.xml 清单文件
- UsbDemoActivity.java
- qwm_usb_xml.xml 这个文件放在 res/xml的下面,用来过滤设备
2.1qwm_usb_xml.xml说明
这个文件放在 res/xml的下面,用来过滤设备,满足的设备将会被过滤出来。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1234" product-id="5678"/>
<usb-device vendor-id="1155" product-id="22304" />
</resources>
<!--
参数说明:
vendor-id (VID):产商id
product-id (PID):产品id
class :类
subclass :子类
protocol :协议
-->
2.2AndroidManifest.xml清单文件配置
这里主要用来申明usb的相关信息
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qwm.qwmprinterdemo">
<!--声明使用usb-->
<uses-feature android:name="android.hardware.usb.host"></uses-feature>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity
android:name=".UsbDemoActivity"
android:label="@string/title_activity_usb_demo"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<!--usb设备的动作-->
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- android设备的信息过滤-->
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/qwm_usb_xml" ></meta-data>
</activity>
</application>
</manifest>
2.3UsbDemoActivity.java usb的操作类
这个类用来操作usb,我们主要按一下几个步骤来操作:
- 1.创建UsbManager
- 2.获取满足的设备
- 3.获取满足设备中的“接口”
- 4.获取接口的端点(获取设备endpoint)
- 5.连接设备
- 6.发送数据
package com.qwm.qwmprinterdemo;
import android.content.Context;
import android.hardware.usb.UsbConstants;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbEndpoint;
import android.hardware.usb.UsbInterface;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
import java.util.HashMap;
import java.util.Iterator;
/**
* @author qiwenming
* @date 2016/2/25 0025 上午 10:37
* @Clas