a>

No Description

PrinterSettingPresenter.java 10KB

    package ai.pai.lensman.printer; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.IBinder; import android.text.TextUtils; import android.util.Base64; import android.util.Log; import com.android.common.utils.LogHelper; import com.gprinter.aidl.GpService; import com.gprinter.command.EscCommand; import com.gprinter.command.GpCom; import com.gprinter.io.GpDevice; import com.gprinter.io.PortParameters; import com.gprinter.service.GpPrintService; import org.apache.commons.lang.ArrayUtils; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.Vector; import ai.pai.lensman.App; import ai.pai.lensman.R; import ai.pai.lensman.db.Preferences; public class PrinterSettingPresenter implements PrinterSettingContract.Presenter { private Context context; private PrinterSettingContract.View view; private BluetoothAdapter bluetoothAdapter; private GpService mGpService; private PrinterServiceConnection conn = null; class PrinterServiceConnection implements ServiceConnection { @Override public void onServiceDisconnected(ComponentName name) { Log.i("czy111", "onServiceDisconnected() called"); mGpService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i("czy111", "onServiceConnected() called"); mGpService = GpService.Stub.asInterface(service); } } public PrinterSettingPresenter(Context context, PrinterSettingContract.View view){ this.view = view; this.context = context; bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); } @Override public void start() { registerPrinterBroadcast(); startAndBindPrintService(); if(queryBluetoothStatus()){ view.onBluetoothEnabled(); view.onPairedDeviceDiscovered(queryPairedDevices()); discoverNewDevices(); }else{ view.onBluetoothDisabled(); view.showToast(context.getString(R.string.bt_is_disabled)); } } @Override public void stop() { cancelDiscovery(); if (conn != null) { App.getAppContext().unbindService(conn); } context.unregisterReceiver(PrinterStatusBroadcastReceiver); } @Override public void queryPrinterStatus() { try { int status = mGpService.queryPrinterStatus(0, 10000); String str = new String(); if (status == GpCom.STATE_NO_ERR) { str = "打印机正常"; } else { str = "打印机 "; if ((byte) (status & GpCom.STATE_OFFLINE) > 0) { str += "脱机"; } if ((byte) (status & GpCom.STATE_PAPER_ERR) > 0) { str += "缺纸"; } if ((byte) (status & GpCom.STATE_COVER_OPEN) > 0) { str += "打印机开盖"; } if ((byte) (status & GpCom.STATE_ERR_OCCURS) > 0) { str += "打印机出错"; } if ((byte) (status & GpCom.STATE_TIMES_OUT) > 0) { str += "查询超时"; } } view.onPrinterStatusFetched(str); } catch (Exception e1) { view.showToast(context.getString(R.string.printer_status_query_fail)); } } @Override public void printQR(String qrCodeStr) { if(TextUtils.isEmpty(Preferences.getInstance().getPrinterMac())){ view.showToast(App.getAppContext().getString(R.string.not_set_printer_yet)); return; } EscCommand esc = new EscCommand(); /*打印文字*/ esc.addSelectPrintModes(EscCommand.FONT.FONTA, EscCommand.ENABLE.OFF, EscCommand.ENABLE.OFF, EscCommand.ENABLE.OFF, EscCommand.ENABLE.OFF);//取消倍高倍宽 esc.addSelectJustification(EscCommand.JUSTIFICATION.CENTER);//设置打印左对齐 esc.addText("拍爱\n"); // 打印文字 esc.addPrintAndLineFeed(); /*QRCode命令打印 此命令只在支持QRCode命令打印的机型才能使用。 在不支持二维码指令打印的机型上,则需要发送二维条码图片 */ esc.addSelectErrorCorrectionLevelForQRCode((byte) 0x31); //设置纠错等级 esc.addSelectSizeOfModuleForQRCode((byte)8);//设置qrcode模块大小 esc.addStoreQRCodeData(qrCodeStr);//设置qrcode内容 esc.addSelectJustification(EscCommand.JUSTIFICATION.CENTER);//设置打印中心对齐 esc.addPrintQRCode();//打印QRCode esc.addPrintAndFeedLines((byte) 1); // esc.addSelectJustification(EscCommand.JUSTIFICATION.LEFT);//设置打印左对齐 // esc.addText("拍摄日期 "+new SimpleDateFormat("yyyy/MM/dd HH:mm").format(new Date())); // esc.addPrintAndFeedLines((byte) 2); Vector<Byte> datas = esc.getCommand(); //发送数据 Byte[] Bytes = datas.toArray(new Byte[datas.size()]); byte[] bytes = ArrayUtils.toPrimitive(Bytes); String str = Base64.encodeToString(bytes, Base64.DEFAULT); int rel; try { rel = mGpService.sendEscCommand(0, str); GpCom.ERROR_CODE r = GpCom.ERROR_CODE.values()[rel]; if (r != GpCom.ERROR_CODE.SUCCESS) { view.showToast( GpCom.getErrorText(r)); } } catch (Exception e) { view.showToast(App.getAppContext().getString(R.string.go_check_printer)); } } @Override public boolean queryBluetoothStatus() { if(bluetoothAdapter==null){ return false; } return bluetoothAdapter.isEnabled(); } @Override public List<BluetoothDevice> queryPairedDevices() { ArrayList<BluetoothDevice> pairedDevices = new ArrayList<>(); Set<BluetoothDevice> deviceSet = bluetoothAdapter.getBondedDevices(); for(BluetoothDevice device: deviceSet){ pairedDevices.add(device); } return pairedDevices; } @Override public void discoverNewDevices() { // Register for broadcasts when a device is discovered IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); context.registerReceiver(mFindBlueToothReceiver, filter); // Register for broadcasts when discovery has finished filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); context.registerReceiver(mFindBlueToothReceiver, filter); bluetoothAdapter.startDiscovery(); } @Override public void connectPrinter(BluetoothDevice device) { if(mGpService==null){ view.showToast(context.getString(R.string.printer_service_boot_fail)); return; } try { int code = mGpService.openPort(0, PortParameters.BLUETOOTH, device.getAddress(), 0); if(code==0){ Preferences.getInstance().setPrinterMac(device.getAddress()); } LogHelper.d("czy111","open port return code ="+code); } catch (Exception e) { view.showToast(context.getString(R.string.printer_port_open_fail)); } } @Override public void cancelDiscovery() { try{ bluetoothAdapter.cancelDiscovery(); context.unregisterReceiver(mFindBlueToothReceiver); }catch (Exception e){ e.printStackTrace(); } } private void startAndBindPrintService() { Intent intent = new Intent(App.getAppContext(), GpPrintService.class); App.getAppContext().startService(intent); conn = new PrinterServiceConnection(); App.getAppContext().bindService(intent, conn, Context.BIND_AUTO_CREATE); } // changes the title when discovery is finished private final BroadcastReceiver mFindBlueToothReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // When discovery finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // If it's already paired, skip it, because it's been listed // already if (device.getBondState() != BluetoothDevice.BOND_BONDED) { view.onNewDeviceDiscovered(device); } // When discovery is finished, change the Activity title } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED .equals(action)) { view.showToast(context.getString(R.string.bt_discover_complete)); } } }; private void registerPrinterBroadcast() { IntentFilter filter = new IntentFilter(); filter.addAction(GpCom.ACTION_CONNECT_STATUS); context.registerReceiver(PrinterStatusBroadcastReceiver, filter); } private BroadcastReceiver PrinterStatusBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (GpCom.ACTION_CONNECT_STATUS.equals(intent.getAction())) { int type = intent.getIntExtra(GpPrintService.CONNECT_STATUS, 0); int id = intent.getIntExtra(GpPrintService.PRINTER_ID, 0); Log.d("czy111", "connect status " + type); if (type == GpDevice.STATE_CONNECTING) { view.onPrinterStatusFetched(context.getString(R.string.connecting)); } else if (type == GpDevice.STATE_NONE) { } else if (type == GpDevice.STATE_VALID_PRINTER) { view.onPrinterStatusFetched(context.getString(R.string.printer_is_connected)); } else if (type == GpDevice.STATE_INVALID_PRINTER) { view.onPrinterStatusFetched(context.getString(R.string.printer_is_disconnected)); } } } }; }
pai2 - Gogs: Go Git Service

拍爱

Brightcells: feebb32686 Add pc website 9 anos atrás
..
layout.css feebb32686 Add pc website 9 anos atrás