print.setOnClickListener ( new View.OnClickListener () {
@Override
public void onClick(View view) {
mUsbManager = (UsbManager) getSystemService ( Context.USB_SERVICE );
mDeviceList = mUsbManager.getDeviceList ();
if (mDeviceList.size () > 0) {
mDeviceIterator = mDeviceList.values ().iterator ();
Toast.makeText (MainActivity. this, "Device List Size: " + String.valueOf ( mDeviceList.size () ), Toast.LENGTH_SHORT ).show ();
TextView textView = (TextView) findViewById ( R.id.usbDevice );
String usbDevice = "";
while (mDeviceIterator.hasNext ()) {
UsbDevice usbDevice1 = mDeviceIterator.next ();
usbDevice += "\n" +
"DeviceID: " + usbDevice1.getDeviceId () + "\n" +
"DeviceName: " + usbDevice1.getDeviceName () + "\n" +
"Protocol: " + usbDevice1.getDeviceProtocol () + "\n" +
"Product Name: " + usbDevice1.getProductName () + "\n" +
"Manufacturer Name: " + usbDevice1.getManufacturerName () + "\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 ( MainActivity.this, "INTERFACE COUNT: " + String.valueOf ( interfaceCount ), Toast.LENGTH_SHORT ).show ();
mDevice = usbDevice1;
Toast.makeText (MainActivity. this, "Device is attached", Toast.LENGTH_SHORT ).show ();
//textView.setText ( usbDevice );
}
mPermissionIntent = PendingIntent.getBroadcast ( MainActivity.this, 0, new Intent ( ACTION_USB_PERMISSION ), 0 );
IntentFilter filter = new IntentFilter ( ACTION_USB_PERMISSION );
registerReceiver ( mUsbReceiver, filter );
mUsbManager.requestPermission ( mDevice, mPermissionIntent );
} else {
Toast.makeText ( MainActivity.this, "Please attach printer via USB", Toast.LENGTH_SHORT ).show ();
}
print ( mConnection, mInterface );
}
} );
}
private void print(final UsbDeviceConnection connection, final UsbInterface usbInterface) {
final String test = ed_txt.getText ().toString () + "\n\n";
testBytes = test.getBytes ();
if (usbInterface == null) {
Toast.makeText ( this, "INTERFACE IS NULL", Toast.LENGTH_SHORT ).show ();
} else if (connection == null) {
Toast.makeText ( this, "CONNECTION IS NULL", Toast.LENGTH_SHORT ).show ();
} else if (forceCLaim == null) {
Toast.makeText ( this, "FORCE CLAIM IS NULL", Toast.LENGTH_SHORT ).show ();
} else {
connection.claimInterface ( usbInterface, forceCLaim );
Thread thread = new Thread ( new Runnable () {
@Override
public void run() {
byte[] cut_paper = {0x1D, 0x56, 0x41, 0x10};
connection.bulkTransfer ( mEndPoint, testBytes, testBytes.length, 0 );
connection.bulkTransfer ( mEndPoint, cut_paper, cut_paper.length, 0 );
}
} );
thread.run ();
}
}
final BroadcastReceiver mUsbReceiver = new BroadcastReceiver () {
@Override
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 ( 1 );// 0 IN and 1 OUT to printer.
mConnection = mUsbManager.openDevice ( device );
}
} else {
Toast.makeText ( context, "PERMISSION DENIED FOR THIS DEVICE", Toast.LENGTH_SHORT ).show ();
}
}
}
}
};
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!";
}
** Вот код, я до сих пор пытался напечатать текст через USB-кабель android studio ... Но я хочу напечатать изображение также вместе с текстом ... Итак, пожалуйста помогите написать код для печати изображения через USB-кабель (Android Studio) **