How to print data on a new line and set page layouts to print data from android

I am creating an Android application that consists of printing data from a usb connected printer. This is where I want to set page layouts like new line prints when they are reached at the end of the page and page border, etc. Is this possible with software processing. Please help me how to do this.

This is what I did to print the data:

public class DemoPrinter extends Activity {

    private final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
    Button create_file;
    PendingIntent mPermissionIntent;
    UsbManager usbManager;
    UsbDevice device;
    EditText print_text;
    UsbDevice printer = null;
    private static final int PRINTER_VENDOR_ID = 1256;
    private String filename = "MySampleFile.txt";
    private String filepath = "PanelFilesstorage";
    File myInternalFile;

    String data= "This is a sample text";

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        try 
        {
            setContentView(R.layout.activity_demo_printer);
            ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
            File directory = contextWrapper.getDir(filepath, Context.MODE_PRIVATE);
            myInternalFile = new File(directory , filename);



            print_text = (EditText)findViewById(R.id.editText_printer);

            usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
            HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();

            if (deviceList.size() <= 0) 
            {
                Toast.makeText(getApplicationContext(), "Info: No device found", Toast.LENGTH_SHORT).show();
            }
            else 
            {
                Toast.makeText(getApplicationContext(), "No of devices"+deviceList.size(), Toast.LENGTH_SHORT).show();
                ((TextView) findViewById(R.id.textView_devices))
                        .setText("No of device : " + deviceList.size());
            }
            Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
            int count = 0;
            mPermissionIntent = PendingIntent.getBroadcast(getBaseContext(), 0,
                    new Intent(ACTION_USB_PERMISSION), 0);
            while (deviceIterator.hasNext()) {
                count++;
                device = deviceIterator.next();
                Log.i("info", "Device No " + count + "........");
                Log.i("info", "Vendor id : " + device.getVendorId());
                Log.i("info", "Product id : " + device.getProductId());
                Log.i("info", "Device  name : " + device.getDeviceName());
                Log.i("info", "Device class : " + device.getClass().getName());
                Log.i("info", "Device protocol: " + device.getDeviceProtocol());
                Log.i("info", "Device subclass : " + device.getDeviceSubclass());
                if (device.getVendorId() == PRINTER_VENDOR_ID) {
                    printer = device;
                    break;
                }
            }

            findViewById(R.id.button_print).setOnClickListener(
                    new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Log.i("Info", "Print command given");
                            IntentFilter filter = new IntentFilter(
                                    ACTION_USB_PERMISSION);
                            registerReceiver(mUsbReceiver, filter);
                            if (printer != null) {
                                usbManager.requestPermission(printer,
                                        mPermissionIntent);
                            } else {
                                Log.e("Exception", "Printer not found");
                            }
                        }
                    });

        } catch (Exception e) {
            Log.e("Exception", "Exception in onCreate " + e.getMessage());
            e.printStackTrace();
        }
        findViewById(R.id.button_create_file).setOnClickListener(new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {

                try
                {
                    FileOutputStream fos = new FileOutputStream(myInternalFile+"\n");
                    fos.write(data.toString().getBytes());
                    fos.close();
                } 
                    catch (IOException e) 
                    {
                    e.printStackTrace();
                    }
            }
        });

    }

    private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver()
    {

        @Override
        public void onReceive(Context context, Intent intent) 
        {
            try {
                String action = intent.getAction();
                if (ACTION_USB_PERMISSION.equals(action)) 
                {
                    synchronized (this)
                    {
                        final UsbDevice printerDevice = (UsbDevice) intent
                                .getParcelableExtra(UsbManager.EXTRA_DEVICE);
                        if (intent.getBooleanExtra(
                                UsbManager.EXTRA_PERMISSION_GRANTED, false)) 
                        {
                            if (printerDevice != null) {
                                Log.i("Info", "Device permission granted");
                                startPrinting(printerDevice);
                            }
                        } 
                        else
                        {
                            Log.d("Debug", "permission denied for device "
                                    + printerDevice);
                        }
                    }
                }
            } catch (Exception e) 
            {
                Log.e("Exception", "Exception in onRecieve " + e.getMessage());
                e.printStackTrace();
            }
        }

    };

    public void startPrinting(final UsbDevice printerDevice)
    {
        new Handler().post(new Runnable() 
        {
            UsbDeviceConnection conn;
            UsbInterface usbInterface;

            @Override
            public void run() 
            {
                try 
                {
                    Log.i("Info", "Bulk transfer started");
                    usbInterface = printerDevice.getInterface(0);
                    UsbEndpoint endPoint = usbInterface.getEndpoint(0);
                    conn = usbManager.openDevice(printer);
                    conn.claimInterface(usbInterface, true);

                    String myStringData = print_text.getText().toString();
                    myStringData+="\n";
                    byte[] array = myStringData.getBytes();
                    ByteBuffer output_buffer = ByteBuffer
                            .allocate(array.length);
                    UsbRequest request = new UsbRequest();
                    request.initialize(conn, endPoint);
                    request.queue(output_buffer, array.length);
                    if (conn.requestWait() == request) 
                    {
                        Log.i("Info", output_buffer.getChar(0) + "");
                        Message m = new Message();
                        m.obj = output_buffer.array();
                        // handler.sendMessage(m);
                        output_buffer.clear();
                    } 
                    else 
                    {
                        Log.i("Info", "No request recieved");
                    }
                     int transfered = conn.bulkTransfer(endPoint,
                     myStringData.getBytes(),
                     myStringData.getBytes().length, 5000);
                     Log.i("Info", "Amount of data transferred : " +transfered);

                } catch (Exception e) 
                {
                    Log.e("Exception", "Unable to transfer bulk data");
                    e.printStackTrace();
                } finally
                {
                    try
                    {
                        conn.releaseInterface(usbInterface);
                        Log.i("Info", "Interface released");
                        conn.close();
                        Log.i("Info", "Usb connection closed");
                        unregisterReceiver(mUsbReceiver);
                        Log.i("Info", "Brodcast reciever unregistered");
                    } 
                    catch (Exception e) 
                    {
                        Log.e("Exception",
                                "Unable to release resources because : "
                                        + e.getMessage());
                        e.printStackTrace();
                    }
                }

            }
        });
    }

    }

      

+3


source to share





All Articles