package com.sunmi.printerhelper.activity;
import android.content.ComponentName;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
import com.sunmi.peripheral.printer.SunmiPrinterService;
import com.sunmi.printerhelper.R;
import com.sunmi.printerhelper.utils.BluetoothUtil;
import com.sunmi.printerhelper.utils.ESCUtil;
import com.sunmi.printerhelper.utils.SunmiPrintHelper;
import java.security.cert.Certificate;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.security.auth.login.LoginException;
public class SimpleActivity extends BaseActivity implements View.OnClickListener {
SunmiPrinterService sunmiPrinter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
boolean result = InnerPrinterManager.getInstance().bindService(this, new InnerPrinterCallback() {
@Override
protected void onConnected(SunmiPrinterService service) {
Toast.makeText(SimpleActivity.this, "Printer Connected", Toast.LENGTH_SHORT).show();
sunmiPrinter = service;
}
@Override
protected void onDisconnected() {
}
});
Log.e("SUNMIDEMO", "Result" + result);
} catch (InnerPrinterException e) {
e.printStackTrace();
}
setContentView(R.layout.activity_simple);
setMyTitle("Simple Activity");
Button simpleBut = findViewById(R.id.btn_simple);
Button exampleBut = findViewById(R.id.btn_example);
Button reportBut = findViewById(R.id.btn_report);
simpleBut.setOnClickListener(this);
exampleBut.setOnClickListener(this);
reportBut.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_simple:
Toast.makeText(this, "Print Simple Example Clicked ", Toast.LENGTH_SHORT).show();
onSimpleButtonClicked();
break;
case R.id.btn_example:
Toast.makeText(this, "Print Complex Example Clicked", Toast.LENGTH_LONG).show();
onComplexButtonClicked();
break;
case R.id.btn_report:
Toast.makeText(this, "Print Simply Report Clicked ", Toast.LENGTH_SHORT).show();
onSimplyReportButtonClicked();
break;
}
}
int ALIGN_LEFT = 0;
int ALIGN_CENTER = 1;
int ALIGN_RIGHT = 2;
public void onSimpleButtonClicked() {
Toast.makeText(this, "INSIDE SIMPLE BUTTON!!!!", Toast.LENGTH_SHORT).show();
if (sunmiPrinter == null) {
Toast.makeText(this, "SunmiPrinter is Null SIMPLE BUTTON!!!!", Toast.LENGTH_SHORT).show();
return;
}
try {
sunmiPrinter.printerInit(null);
Toast.makeText(this, "TRY BLOCK SIMPLE BUTTON!!!!", Toast.LENGTH_SHORT).show();
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText("LEFT_ALIGNMENT\n", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText("RIGHT_ALIGNMENT\n", null);
sunmiPrinter.setAlignment(ALIGN_CENTER, null);
sunmiPrinter.printText("CENTER_ALIGNMENT\n", null);
sunmiPrinter.printText("ALIGNMENT is not Changed\n", null);
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText("NOTICE: ALIGNMENT is Changed\n", null);
sunmiPrinter.sendRAWData(ESCUtil.boldOn(), null);
sunmiPrinter.printText("Bold Feature is ON\n", null);
sunmiPrinter.sendRAWData(ESCUtil.boldOff(), null);
sunmiPrinter.printText("Bold Feature is OFF\n", null);
sunmiPrinter.printText("FONT size is increased to 40\n", null);
sunmiPrinter.printTextWithFont("ITEM: MEET", null, 40, null);
sunmiPrinter.printTextWithFont("PRICE: $59\b", null, 40, null);
sunmiPrinter.setFontSize(36, null);
sunmiPrinter.printText("--------------------------------\n", null);
String[] txts = new String[]{"LEFT", "RIGHT"};
int[] width = new int[]{1, 1};
int[] align = new int[]{0, 2};
sunmiPrinter.printColumnsString(txts, width, align, null);
sunmiPrinter.printText("--------------------------------\n", null);
sunmiPrinter.printText("--------------------------------\n", null);
sunmiPrinter.sendRAWData(ESCUtil.boldOn(), null);
String txts2[] = new String[]{"LEFT", "CENTER", "RIGHT"};
int width2[] = new int[]{1, 1, 1};
int align2[] = new int[]{0, 1, 2};
sunmiPrinter.printColumnsString(txts2, width2, align2, null);
sunmiPrinter.sendRAWData(ESCUtil.boldOff(), null);
sunmiPrinter.printText("--------------------------------\n", null);
sunmiPrinter.printText("Slash N VS LineWrap()\n", null);
sunmiPrinter.printText("Slash N VS LineWrap()", null);
sunmiPrinter.lineWrap(1, null);
sunmiPrinter.setAlignment(ALIGN_CENTER, null);
sunmiPrinter.printText("END OF PRINT", null);
sunmiPrinter.autoOutPaper(null);
} catch (RemoteException e) {
Toast.makeText(this, "CATCH BLOCK SIMPLE BUTTON!!!!", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
private void onComplexButtonClicked() {
if (!BluetoothUtil.isBlueToothPrinter) {
SunmiPrintHelper.getInstance().printExample(this);
} else {
Toast.makeText(this, "Is Bluetooth is on ???", Toast.LENGTH_SHORT).show();
}
}
private void onSimplyReportButtonClicked() {
if (sunmiPrinter == null) {
Toast.makeText(this, "SunmiPrinter is Null REPORT!!!!", Toast.LENGTH_SHORT).show();
return;
}
String transactionsLabel = "Transaction";
String turnoverLabel = "TurnOver";
String netSaleLabel = "NetSale";
String salesVatLabel = "Sales VAT";
String returnsLabel = "Returns";
String returnsVatLabel = "Returns VAT";
String str_breakdown_by_payment_type = "Breakdown by payment type";
String str_sales_totals_by_department = "Sales totals by department";
String str_total_sales = "Total sales:";
String str_net_sales = "Net sales:";
String str_vat_ = "VAT:";
String str_breakdown_by_vat_rate = "Breakdown by VAT Rate";
String str_breakdown_by_invoice_type = "Break down by Invoice type";
try {
sunmiPrinter.printerInit(null);
Toast.makeText(this, "TRY BLOCK REPORT!!!!", Toast.LENGTH_SHORT).show();
// itemsString.append("[C]<font size='tall'>Report</font>").append("\n");
// itemsString.append(getLineSeparator()).append("\n");
sunmiPrinter.setAlignment(ALIGN_CENTER, null);
sunmiPrinter.printTextWithFont("Report\n", null, 40, null);
sunmiPrinter.setFontSize(30, null);
sunmiPrinter.printText(getLineSeparator() + "\n", null);
// itemsString.append("[L]Date From").append("[R]" + invoiceReport.getDateFrom()).append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText("Date From", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText("Monday, August 8, 2022\n", null);
// itemsString.append("[L]Date To").append("[R]" + invoiceReport.getDateTo()).append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText("Date To", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText("Monday, August 8, 2022\n", null);
// itemsString.append(getLineSeparator()).append("\n");
// itemsString.append("\n");
sunmiPrinter.printText(getLineSeparator() + "\n\n", null);
// itemsString.append("[L]<b>" + "Total" + "</b>").append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.sendRAWData(ESCUtil.boldOn(), null);
sunmiPrinter.printText("Total", null);
sunmiPrinter.sendRAWData(ESCUtil.boldOff(), null);
// itemsString.append("[L]" + transactionsLabel + "").append("[R]" + invoiceReport.getTransactions()).append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText(" " + transactionsLabel + " ", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText(" " + transactionsLabel + " \n", null);
// itemsString.append("[L]" + turnoverLabel + "").append("[R]" + invoiceReport.getTurnOver()).append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText(" " + turnoverLabel + " ", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText(" " + turnoverLabel + " \n", null);
// itemsString.append("[L]" + netSaleLabel + "").append("[R]" + invoiceReport.getNetSales()).append("\n");
sunmiPrinter.setAlignment(ALIGN_LEFT, null);
sunmiPrinter.printText(" " + netSaleLabel + " ", null);
sunmiPrinter.setAlignment(ALIGN_RIGHT, null);
sunmiPrinter.printText(" " + netSaleLabel + " \n", null);
String txts[] = new String[]{salesVatLabel, salesVatLabel + "\n"};
int width[] = new int[]{1, 1};
int align[] = new int[]{0, 2};
sunmiPrinter.printColumnsString(txts, width, align, null);
// itemsString.append("[L]" + salesVatLabel + "").append("[R]" + invoiceReport.getSalesVAT()).append("\n");
// itemsString.append("[L]" + returnsLabel + "").append("[R]" + invoiceReport.getReturns()).append("\n");
String txts2[] = new String[]{returnsLabel, returnsLabel + "\n"};
sunmiPrinter.printColumnsString(txts2, width, align, null);
// itemsString.append("[L]" + returnsVatLabel + "").append("[R]" + invoiceReport.getReturnVAT()).append("\n");
// itemsString.append("\n");
String txts3[] = new String[]{returnsVatLabel, returnsVatLabel + "\n"};
sunmiPrinter.printColumnsString(txts3, width, align, null);
// itemsString.append(getLineSeparator()).append("\n");
// itemsString.append("[C]").append("End of Report").append("\n");
// itemsString.append(getLineSeparator()).append("\n");
sunmiPrinter.printText(getLineSeparator() + "\n", null);
sunmiPrinter.setAlignment(ALIGN_CENTER, null);
sunmiPrinter.printText("End of Report\n", null);
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy HH:mm");
String currentDateandTime = sdf.format(new Date());
//itemsString.append("[L]" + "Printed on:" + "").append("[R]" + currentDateandTime).append("\n");
String txts4[] = new String[]{"Printed on:", currentDateandTime + "\n"};
sunmiPrinter.printColumnsString(txts4, width, align, null);
// itemsString.append("\n");
// itemsString.append("\n");
// itemsString.append("\n");
sunmiPrinter.lineWrap(3, null);
} catch (RemoteException e) {
Toast.makeText(this, "CATCH BLOCK REPORT!!!!", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
public static String getLineSeparator() {
StringBuilder str = new StringBuilder();
for (int i = 0; i < 32; i++) {
str.append("-");
}
return str.toString();
}
}