Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to call this android bluetooth printing program from phonegap javascript?
    primarykey
    data
    text
    <p>i was made a bluetooth printer application (android based) for printing some text using datecs DPP-350 printer device. this program use a datecs external library such as bluetoohconnector and RFComm package. it works nicely, here's the code:</p> <pre><code>package com.myapp.MobilePrinter1; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import com.djarum.MobilePrinter1.BluetoothConnector; import com.datecs.api.card.FinancialCard; import com.datecs.api.printer.Printer; import com.datecs.api.printer.PrinterInformation; import com.datecs.api.printer.ProtocolAdapter; import com.datecs.api.printer.ProtocolAdapter.Channel; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MobilePrinter1Activity extends Activity { public static final String CONNECTION_STRING = "connection_string"; private final Handler mHandler = new Handler(); private final Thread mConnectThread = new Thread() { @Override public void run() { String connectionString = "bth://00:01:90:E6:40:52"; showProgress("Connecting"); if (connectionString.startsWith("bth://")) { String address = connectionString.substring(6); connectBth(address); } else { throw new IllegalArgumentException("Unsupported connection string"); } dismissProgress(); } void connectBth(String address) { //setPrinterInfo(R.drawable.help, address); try { mBthConnector = BluetoothConnector.getConnector(MobilePrinter1Activity.this); mBthConnector.connect(address); mPrinter = getPrinter( mBthConnector.getInputStream(), mBthConnector.getOutputStream()); } catch (IOException e) { //error(R.drawable.bluetooth, e.getMessage()); return; } mPrinterInfo = getPrinterInfo(); } Printer getPrinter(InputStream in, OutputStream out) throws IOException { ProtocolAdapter adapter = new ProtocolAdapter(in, out); Printer printer = null; if (adapter.isProtocolEnabled()) { Channel channel = adapter.getChannel(ProtocolAdapter.CHANNEL_PRINTER); InputStream newIn = channel.getInputStream(); OutputStream newOut = channel.getOutputStream(); printer = new Printer(newIn, newOut); } else { printer = new Printer(in, out); } return printer; } PrinterInformation getPrinterInfo() { PrinterInformation pi = null; try { pi = mPrinter.getInformation(); //setPrinterInfo(R.drawable.printer, pi.getName()); } catch (IOException e) { e.printStackTrace(); } return pi; } }; private BluetoothConnector mBthConnector; private Printer mPrinter; private PrinterInformation mPrinterInfo; private ProgressDialog mProgressDialog; private BluetoothConnector mConnector; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { mConnector = BluetoothConnector.getConnector(this); } catch (IOException e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT); finish(); } findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { printText(); } }); findViewById(R.id.button2).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { printBarcode(); } }); findViewById(R.id.button3).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { printImage(); } }); } public void printText() { new Thread() { @Override public void run() { //showProgress(R.string.printing_text); doPrintText2(); dismissProgress(); } }.start(); } public void printBarcode() { new Thread() { @Override public void run() { //showProgress(R.string.printing_text); doPrintBarcode(); dismissProgress(); } }.start(); } public void printImage() { new Thread() { @Override public void run() { //showProgress(R.string.printing_text); doPrintImage(); dismissProgress(); } }.start(); } @Override protected void onStart() { super.onStart(); mConnectThread.start(); } @Override protected void onStop() { super.onStop(); if (mBthConnector != null) { try { mBthConnector.close(); } catch (IOException e) { e.printStackTrace(); } } } private void showProgress(final String text) { mHandler.post(new Runnable() { @Override public void run() { mProgressDialog = ProgressDialog.show( MobilePrinter1Activity.this, "Please wait", text, true); } }); } private void showProgress(int resId) { showProgress(getString(resId)); } private void dismissProgress() { mHandler.post(new Runnable() { @Override public void run() { mProgressDialog.dismiss(); } }); } private void doPrintSelfTest() { try { mPrinter.printSelfTest(); } catch (IOException e) { //error(R.drawable.selftest, getString(R.string.failed_print_self_test) + ". " + //e.getMessage()); } } private void doPrintText2() { EditText EditText1; EditText1=(EditText)findViewById(R.id.editText1); String temp; try { mPrinter.reset(); mPrinter.printTaggedText(EditText1.getText().toString()); //mPrinter.printTaggedText("Testing Testing!!"); mPrinter.feedPaper(110); } catch (IOException e) { //error(R.drawable.text, getString(R.string.failed_print_text) + ". " + //e.getMessage()); } } private void doPrintBarcode() { EditText EditText1; EditText1=(EditText)findViewById(R.id.editText1); try { mPrinter.reset(); mPrinter.setBarcode(Printer.ALIGN_CENTER, false, 2, Printer.HRI_BOTH, 100); mPrinter.printBarcode(Printer.BARCODE_CODE128, EditText1.getText().toString()); mPrinter.feedPaper(38); mPrinter.feedPaper(110); } catch (IOException e) { //error(R.drawable.barcode, getString(R.string.failed_print_barcode) + ". " + //e.getMessage()); } } private void doPrintImage() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo_djarum); final int width = bitmap.getWidth(); final int height = bitmap.getHeight(); final int[] argb = new int[width * height]; bitmap.getPixels(argb, 0, width, 0, 0, width, height); try { mPrinter.reset(); mPrinter.printImage(argb, width, height, Printer.ALIGN_LEFT, true); mPrinter.feedPaper(110); } catch (IOException e) { Toast.makeText(MobilePrinter1Activity.this, e.getMessage(), 1).show(); } } private void dialog(final int id, final String title, final String msg) { mHandler.post(new Runnable() { @Override public void run() { AlertDialog dlg = new AlertDialog.Builder(MobilePrinter1Activity.this) .setTitle(title) .setMessage(msg) .create(); dlg.setIcon(id); dlg.show(); } }); } private void error(final int resIconId, final String message) { mHandler.post(new Runnable() { @Override public void run() { AlertDialog dlg = new AlertDialog.Builder(MobilePrinter1Activity.this) .setTitle("Error") .setMessage(message) .create(); dlg.setIcon(resIconId); dlg.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { MobilePrinter1Activity.this.finish(); } }); dlg.show(); } }); } private void setPrinterInfo(final int resIconId, final String text) { mHandler.post(new Runnable() { @Override public void run() { //((ImageView)findViewById(R.id.icon)).setImageResource(resIconId); //((TextView)findViewById(R.id.name)).setText(text); } }); } } </code></pre> <p>the main problems now is how to call this program from phonegap? i've tried using droidGap but it will give me error when i start the printer's thread. has anyone know how to solved this?? many thanks..</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload