Я уже более 3 месяцев изо всех сил пытаюсь реализовать печать логотипов / изображений из моего приложения android на моем «MiniPrinter» с поддержкой Bluetooth DP-HT201. После многих модификаций я наконец смог получить эту распечатку, которая должна быть Желаемый вывод введите описание изображения здесь
Это код:
public void IntentPrint (String txtvalue){
byte[] buffer = txtvalue.getBytes();
byte[] PrintHeader = { (byte) 0xAA, 0x55,2,0 };
PrintHeader[3]=(byte) buffer.length;
InitPrinter();
if(PrintHeader.length>128)
{
value+="\nValue is more than 128 size\n";
Toast.makeText(this, value, Toast.LENGTH_LONG).show();
}
else
{
try
{
//Can we get the byte values of the image and output to the stream at this point
//Get image Byte value
IntentPixPrint3();
outputStream.write(txtvalue.getBytes());
outputStream.close();
socket.close();
}
catch(Exception ex)
{
value+=ex.toString()+ "\n" +"Excep IntentPrint \n";
Toast.makeText(this, value, Toast.LENGTH_LONG).show();
}
}
}
public void IntentPixPrint3(){
try {
Uri uri = Uri.parse("android.resource://"+BuildConfig.APPLICATION_ID+"/" +R.drawable.giposprint2);
InputStream in = getContentResolver().openInputStream(uri);
BufferedInputStream bis = new BufferedInputStream(in,1024*8);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len=0;
byte[] buffer = new byte[1024];
while((len = bis.read(buffer)) != -1){
out.write(buffer, 0, len);
}
out.close();
bis.close();
byte[] data = out.toByteArray();
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
print_image2(bitmap);
// Bitmap bm = ((BitmapDrawable) getResources().getDrawable(R.drawable.testlogopng)).getBitmap();
}
catch (IOException e) {
e.printStackTrace();
}
}
private void print_image2(Bitmap bitmap) {
try{
convertBitmap(bitmap);
outputStream.write(PrinterCommands.SET_LINE_SPACING_24);
int offset = 0;
while (offset < bitmap.getHeight()) {
outputStream.write(PrinterCommands.SELECT_BIT_IMAGE_MODE);
for (int x = 0; x < bitmap.getWidth(); ++x) {
for (int k = 0; k < 3; ++k) {
byte slice = 0;
for (int b = 0; b < 8; ++b) {
int y = (((offset / 8) + k) * 8) + b;
int i = (y * bitmap.getWidth()) + x;
boolean v = false;
if (i < dots.length()) {
v = dots.get(i);
}
slice |= (byte) ((v ? 1 : 0) << (7 - b));
}
outputStream.write(slice);
}
}
offset += 24;
outputStream.write(PrinterCommands.FEED_LINE);
}
outputStream.write(PrinterCommands.SET_LINE_SPACING_30);
//Catches
}catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
Это вывод, который я получаю Вывод, который я получаю, показывает несвязанное распространение и разбиение изображения
Я считаю, что моя ошибка исходит из модуля print_image и правильного БИТ инициализация PRINT. Это то, что я сейчас использую publi c stati c byte [] SELECT_BIT_IMAGE_MODE = {0x1B, 0x2A, 33, (byte) 255, 0}; , Не могли бы вы помочь с предложениями, чтобы помочь мне распечатать полное изображение? Спасибо.