2016-02-26 2 views
-7

У меня есть планшет Android, в котором есть встроенный принтер и сканер. Теперь моя задача - распечатать пропуск ворот. Макет Gate pass содержит много текстовых полей и редактирует текст. Мне нужен мой планшетный принтер для печати всей этой страницы. Мне нужен код в java.Распечатайте полный графический макет с планшета со встроенным принтером android

Я хотел бы знать, можно ли печатать напрямую без каких-либо PDF или Bluetooth. Потому что я могу напечатать только одно поле с помощью кнопки печати, так как у меня есть все sdk относительно этого принтера. Теперь моя проблема в том, что я хочу распечатать весь макет.

+1

'.I нужен код в java.': s – Dhina

+0

принтер есть Bluetooth? –

+0

вы можете попробовать какую-то логику, например, когда вы заполняете данные, затем нажмите для печати, чтобы вы могли попробовать несколько вещей, например, сначала сохранить свою страницу в pdf, а затем напечатать ее. –

ответ

0

попробовать этот код надеюсь, это поможет вам

openButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    try { 
     findBT(); 
     openBT(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
}}); 

Найти BT Метод

// this will find a bluetooth printer device 


void findBT() {try { 
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    if(mBluetoothAdapter == null) { 
     myLabel.setText("No bluetooth adapter available"); 
    } 

    if(!mBluetoothAdapter.isEnabled()) { 
     Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     startActivityForResult(enableBluetooth, 0); 
    } 

    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); 

    if(pairedDevices.size() > 0) { 
     for (BluetoothDevice device : pairedDevices) { 

      // RPP300 is the name of the bluetooth printer device 
      // we got this name from the list of paired devices 
      if (device.getName().equals("RPP300")) { 
       mmDevice = device; 
       break; 
      } 
     } 
    } 

    myLabel.setText("Bluetooth device found."); 

}catch(Exception e){ 
    e.printStackTrace(); 
}} 

Open BT метод

// tries to open a connection to the bluetooth printer device 


    void openBT() throws IOException { 
try {// Standard SerialPortService ID 
    UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); 
    mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); 
    mmSocket.connect(); 
    mmOutputStream = mmSocket.getOutputStream(); 
    mmInputStream = mmSocket.getInputStream(); 

    beginListenForData(); 

    myLabel.setText("Bluetooth Opened"); 

} catch (Exception e) { 
    e.printStackTrace(); 
}} 

Нам нужен метод beginListenForData(), чтобы метод openBT() работал.

После открытия соединения с устройством принтера Bluetooth, мы должны прослушать и проверить, были ли отправлены данные для печати.

void beginListenForData() { 
try {final Handler handler = new Handler(); 

    // this is the ASCII code for a newline character 
    final byte delimiter = 10; 

    stopWorker = false; 
    readBufferPosition = 0; 
    readBuffer = new byte[1024]; 

    workerThread = new Thread(new Runnable() { 
     public void run() { 

      while (!Thread.currentThread().isInterrupted() && !stopWorker) { 

       try { 

        int bytesAvailable = mmInputStream.available(); 

        if (bytesAvailable > 0) { 

         byte[] packetBytes = new byte[bytesAvailable]; 
         mmInputStream.read(packetBytes); 

         for (int i = 0; i < bytesAvailable; i++) { 

          byte b = packetBytes[i]; 
          if (b == delimiter) { 

           byte[] encodedBytes = new byte[readBufferPosition]; 
           System.arraycopy(
            readBuffer, 0, 
            encodedBytes, 0, 
            encodedBytes.length 
           ); 

           // specify US-ASCII encoding 
           final String data = new String(encodedBytes, "US-ASCII"); 
           readBufferPosition = 0; 

           // tell the user data were sent to bluetooth printer device 
           handler.post(new Runnable() { 
            public void run() { 
             myLabel.setText(data); 
            } 
           }); 

          } else { 
           readBuffer[readBufferPosition++] = b; 
          } 
         } 
        } 

       } catch (IOException ex) { 
        stopWorker = true; 
       } 

      } 
     } 
    }); 

    workerThread.start(); 

} catch (Exception e) { 
    e.printStackTrace(); 
}} 

Мы сделаем onClickListener для кнопки «Отправить». Поместите следующий код после onClickListener кнопки «Открыть» внутри метода onCreate(). Метод

// send data typed by the user to be printed 
sendButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    try { 
     sendData(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
}}); 

SendData() необходимо, чтобы кнопка «Открыть» будет работать. Поместите его ниже блока кода метода beginListenForData().

// this will send text data to be printed by the bluetooth printer 

void sendData() throws IOException {try { 

    // the text typed by the user 
    String msg = myTextbox.getText().toString(); 
    msg += "\n"; 

    mmOutputStream.write(msg.getBytes()); 

    // tell the user data were sent 
    myLabel.setText("Data sent."); 

} catch (Exception e) { 
    e.printStackTrace(); 
}} 

Мы будем кодировать onClickListener для кнопки «закрыть», таким образом, мы можем закрыть подключение к принтеру Bluetooth и экономии заряда батареи. Поместите следующий код после onClickListener кнопки «Отправить» внутри метода onCreate().

// close bluetooth connection 
closeButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    try { 
     closeBT(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
}}); 

closeBT() в шаге 12 не будет работать без следующего кода. Поместите его ниже блока кода метода sendData().

// close the connection to bluetooth printer. 
void closeBT() throws IOException { 
try { 
    stopWorker = true; 
    mmOutputStream.close(); 
    mmInputStream.close(); 
    mmSocket.close(); 
    myLabel.setText("Bluetooth Closed"); 
} catch (Exception e) { 
    e.printStackTrace(); 
}} 

Убедитесь, что разрешение BLUETOOTH был добавлен в ваш файл манифеста. Он находится в манифесте/AndroidManifest.xml, код внутри должен выглядеть следующим образом.

<uses-permission android:name="android.permission.BLUETOOTH" /> 
+0

Спасибо за код, но мы не хотим использовать bluetooth, вместо этого мы должны использовать принтер, встроенный в планшет. Информация об устройстве: планшет Android с встроенным тепловым 2-дюймовым принтером и сканером отпечатков пальцев. – Mounika

+0

проверить эту ссылку http://stackoverflow.com/questions/20717189/how-to-print-pdf-using-android-4-4-printing-framework/20719729#20719729 –

+0

Спасибо большое! Я это проверю – Mounika

Смежные вопросы