2016-04-15 17 views
0

我正在使用Android-Bluetooth-Printer。如果我在edittext中鍵入英文文本,但它的工作正常,但問題是如果我從軟鍵盤選擇印地文語言,然後輸入一些印地文文本並嘗試打印,但它在紙張上什麼也不顯示。如何使用藍牙打印機顯示印地文或古吉拉特文字?

public class BlueToothPrinterApp extends Activity  
{  

    EditText message; 
    Button printbtn; 

    byte FONT_TYPE; 
    private static BluetoothSocket btsocket; 
    private static OutputStream btoutputstream; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     message = (EditText)findViewById(R.id.message); 
     printbtn = (Button)findViewById(R.id.printButton); 

     printbtn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       connect(); 
      } 
     }); 
    } 

    protected void connect() { 
     if(btsocket == null){ 
      Intent BTIntent = new Intent(getApplicationContext(), BTDeviceList.class); 
      this.startActivityForResult(BTIntent, BTDeviceList.REQUEST_CONNECT_BT); 
     } 
     else{ 

      OutputStream opstream = null; 
      try { 
       opstream = btsocket.getOutputStream(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      btoutputstream = opstream; 
      print_bt(); 

     } 

    } 


    private void print_bt() { 
     try { 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

      btoutputstream = btsocket.getOutputStream(); 

      byte[] printformat = { 0x1B, 0x21, FONT_TYPE }; 
      btoutputstream.write(printformat); 
      String msg = message.getText().toString(); 
      btoutputstream.write(msg.getBytes()); 
      btoutputstream.write(0x0D); 
      btoutputstream.write(0x0D); 
      btoutputstream.write(0x0D); 
      btoutputstream.flush(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     try { 
      if(btsocket!= null){ 
       btoutputstream.close(); 
       btsocket.close(); 
       btsocket = null; 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     try { 
      btsocket = BTDeviceList.getSocket(); 
      if(btsocket != null){ 
       print_bt(); 
      } 

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

任何人都可以幫助我嗎?

+0

你實現這一點。我也需要同樣的東西。 – Murali

+0

@Murali是的,只是嘗試給定的答案 –

+0

我試圖與圖像打印。但打印機陷入堆棧overflow.Can發佈您的工作代碼,如果有可能。 – Murali

回答

1

打印機具有內置的預定義字符集。這些字符集被稱爲code pages

與大多數POS打印機一樣,您的藍牙打印機似乎不支持Unicode。

爲了解決這個問題,你可以試試你的輸出轉換爲圖像並將其發送到打印機的使用仿真打印機支持字節(PCL,ESC/POS,ZPL等)