我正在处理从我的应用程序向热敏打印机发送数据 . 我已经让它在网络上正常工作,我的数据打印正确 . 现在有一个额外的要求,我们也必须能够通过USB打印 .

这是我尝试过的:

private UsbManager mUsbManager;

private UsbDevice mDevice;

private UsbDeviceConnection mConnection;

private UsbInterface mInterface;

private UsbEndpoint mEndPoint;

private PendingIntent mPermissionIntent;

private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";

private static Boolean forceCLaim = true;

HashMap mDeviceList;

Iterator mDeviceIterator;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_my);

mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);

mDeviceList = mUsbManager.getDeviceList();

mDeviceIterator = mDeviceList.values().iterator();

Button print = (Button)findViewById(R.id.print);

Toast.makeText(this, "Device List Size: " + String.valueOf(mDeviceList.size()), Toast.LENGTH_SHORT).show();

TextView textView = (TextView) findViewById(R.id.usbDevice);

String usbDevice = "";

//This is just testing what devices are connected

while (mDeviceIterator.hasNext()) {

UsbDevice usbDevice1 = mDeviceIterator.next();

usbDevice += "\n" +

"DeviceID: " + usbDevice1.getDeviceId() + "\n" +

"DeviceName: " + usbDevice1.getDeviceName() + "\n" +

"DeviceClass: " + usbDevice1.getDeviceClass() + " - " + translateDeviceClass(usbDevice1.getDeviceClass()) + "\n" +

"DeviceSubClass: " + usbDevice1.getDeviceSubclass() + "\n" +

"VendorID: " + usbDevice1.getVendorId() + "\n" +

"ProductID: " + usbDevice1.getProductId() + "\n";

int interfaceCount = usbDevice1.getInterfaceCount();

Toast.makeText(this, "INTERFACE COUNT: " + String.valueOf(interfaceCount), Toast.LENGTH_SHORT).show();

mDevice = usbDevice1;

if (mDevice == null) {

Toast.makeText(this, "mDevice is null", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this, "mDevice is not null", Toast.LENGTH_SHORT).show();

}

textView.setText(usbDevice);

}

if (mDevice == null) {

Toast.makeText(this, "mDevice is null", Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this, "mDevice is not null", Toast.LENGTH_SHORT).show();

}

mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);

IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);

registerReceiver(mUsbReceiver, filter);

mUsbManager.requestPermission(mDevice, mPermissionIntent);

print.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//setup();

print(mConnection, mInterface);

}

});

}

private String translateDeviceClass(int deviceClass){

switch(deviceClass){

case UsbConstants.USB_CLASS_APP_SPEC:

return "Application specific USB class";

case UsbConstants.USB_CLASS_AUDIO:

return "USB class for audio devices";

case UsbConstants.USB_CLASS_CDC_DATA:

return "USB class for CDC devices (communications device class)";

case UsbConstants.USB_CLASS_COMM:

return "USB class for communication devices";

case UsbConstants.USB_CLASS_CONTENT_SEC:

return "USB class for content security devices";

case UsbConstants.USB_CLASS_CSCID:

return "USB class for content smart card devices";

case UsbConstants.USB_CLASS_HID:

return "USB class for human interface devices (for example, mice and keyboards)";

case UsbConstants.USB_CLASS_HUB:

return "USB class for USB hubs";

case UsbConstants.USB_CLASS_MASS_STORAGE:

return "USB class for mass storage devices";

case UsbConstants.USB_CLASS_MISC:

return "USB class for wireless miscellaneous devices";

case UsbConstants.USB_CLASS_PER_INTERFACE:

return "USB class indicating that the class is determined on a per-interface basis";

case UsbConstants.USB_CLASS_PHYSICA:

return "USB class for physical devices";

case UsbConstants.USB_CLASS_PRINTER:

return "USB class for printers";

case UsbConstants.USB_CLASS_STILL_IMAGE:

return "USB class for still image devices (digital cameras)";

case UsbConstants.USB_CLASS_VENDOR_SPEC:

return "Vendor specific USB class";

case UsbConstants.USB_CLASS_VIDEO:

return "USB class for video devices";

case UsbConstants.USB_CLASS_WIRELESS_CONTROLLER:

return "USB class for wireless controller devices";

default: return "Unknown USB class!";

}

//Broadcast receiver to obtain permission from user for connection

private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (ACTION_USB_PERMISSION.equals(action)) {

synchronized (this) {

UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {

if(device != null){

//call method to set up device communication

mInterface = device.getInterface(0);

mEndPoint = mInterface.getEndpoint(0);

mConnection = mUsbManager.openDevice(device);

//setup();

}

}

else {

//Log.d("SUB", "permission denied for device " + device);

Toast.makeText(context, "PERMISSION DENIED FOR THIS DEVICE", Toast.LENGTH_SHORT).show();

}

}

}

}

};

private void print(UsbDeviceConnection connection, UsbInterface intrface){

String test = "THIS IS A PRINT TEST";

byte [] testBytes = test.getBytes();

if(intrface==null){

Toast.makeText(this, "INTERFACE IS NULL", Toast.LENGTH_SHORT).show();

}

if(connection==null){

Toast.makeText(this, "CONNECTION IS NULL", Toast.LENGTH_SHORT).show();

}

if(forceCLaim==null){

Toast.makeText(this, "FORCE CLAIM IS NULL", Toast.LENGTH_SHORT).show();

}

connection.claimInterface(intrface, forceCLaim);

connection.bulkTransfer(mEndPoint, testBytes, testBytes.length, 0);

}

所以设备连接到usb设备,但是当我尝试批量传输没有任何反应时,有人可以解释这个吗? Usb连接对我来说是一个新领域,所以任何提示都值得赞赏

EDIT

So it turns out there were issues with endpoints and no returns from the bulktransfer, however, now those issues are resolved and it returns that the bulk transfer is successful, however, it still doesn't print. Does anyone have any ideas on this please??

java usb小票打印机_通过USB从Android设备向热敏打印机发送数据相关推荐

  1. Java调用小票打印机(型号TM-288B)打印小票 (上)

    Java调用小票打印机(型号TM-288B)打印小票 (上) 项目需求需要用Java调用小票打印机打印小票,网上查了很多资料然后慢慢调试最后算成功了 本地安装小票打印机驱动 根据自己的型号下载驱动(此 ...

  2. usb禁止重定向_谈USB重定向的方式

    在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎 本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程 u ...

  3. JAVA调用小票打印机

    因公司开发需求,需要用到打印机打印彩票投注单,所以要用到小票打印机.小票打印机是SNBC新北洋. 这个类型的打印机可以连接安卓设备,也可以连接电脑主机.我采用的是连接电脑主机进行打印. 1.将打印机连 ...

  4. android连接此设备时打开,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

  5. qt android 设备权限,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

  6. AdB android 投屏 usb,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

  7. qt android wifi,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

  8. esc pos命令 java使用_18、ESC/POS指令集在android设备上使用实例(通过socket)

    网上关于通过android来操作打印机的例子太少了,为了方便更多的开发同仁,将近日所学分享一下. 我这边是通过android设备通过无线来对打印机(佳博58mm热敏式-58130iC)操作,实现餐厅小 ...

  9. Android,使用Json发送数据中,使用的Java转义字符 KanKan原创

    kankan原创 与php后台发送数据的时候.要求用到这样的格式. private void sendJson(){ //初始化自己定义的handler CashHandler handler = n ...

最新文章

  1. 自动驾驶多目视觉感知
  2. 顺序栈实现括号匹配的检验(C语言实现)【栈】
  3. mysql 有十进制类型吗_MySQL数据类型
  4. 从外到内提高SQL Server数据库性能
  5. BASIC-1 闰年判断
  6. Oracle dataGuard专题:Rman通过duplicate创建standby
  7. Linux脚本验证的常见方法,linux shell常用循环与判断语句(for,while,until,if)使用方法...
  8. stl之multiset容器的应用
  9. 进程间通信——系统调用setjmp()与longjmp()
  10. 机房维护 网拷_利用网络还原系统(远志)快速维护机房
  11. c++使用librdkafka kerberos认证
  12. window定时自动关机脚本及问题解决【AT指令和SCHTASKS指令两种方式】
  13. 2022年智能马桶行业发展趋势
  14. 职业倾向测试脸型软件,气质类型测试适合职业
  15. 产品活跃度做好很难?提高用户活跃度用对方法一点也不难
  16. day01 pathon基础
  17. Python男票管理系统
  18. α-IoU | 再助YOLOv5登上巅峰,造就IoU Loss大一统
  19. 我厌倦玩计算机游戏了英语翻译,我喜欢玩电子游戏英文翻译,我喜欢电脑游戏怎么说...
  20. 菜鸡游戏 云游戏平台 低配手机、电视、PCMAC电脑、平板 畅玩大型游戏

热门文章

  1. FPGA蜂鸣器播放音乐
  2. Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态
  3. unity RectTransform的参数设置
  4. 中原工学院第十一届ACM校赛总结
  5. 用计算机唱生日歌,张智霖48岁生日 袁咏仪同床直播为老公唱生日歌超甜蜜
  6. 使用HighCharts绘制bar形柱状图
  7. android 7 屏幕断电,外媒眼中的一加7 Pro:使用过最快的Android手机
  8. python异常值处理实例_Python机器学习:异常值查找和处理
  9. group sparsity
  10. Halcon--破洞检测