Jelajahi Sumber

打印机交互

zhenghao 1 tahun lalu
induk
melakukan
2604fd0286

+ 0 - 45
app/src/main/java/com/naz/sdkdemo/BaseApplication.java

@@ -59,31 +59,6 @@ public class BaseApplication extends Application {
         });
     }
 
-    private IConnectListener connectListener = new IConnectListener() {
-        @Override
-        public void onStatus(int code, String connInfo, String msg) {
-            switch (code){
-                case POSConnect.CONNECT_SUCCESS:
-                    Log.e("-------->","------>CONNECT_SUCCESS");
-                    break;
-                case POSConnect.CONNECT_FAIL:
-                    Log.e("-------->","------>CONNECT_FAIL");
-                    break;
-                case POSConnect.CONNECT_INTERRUPT:
-                    break;
-                case POSConnect.SEND_FAIL:
-                    break;
-                case POSConnect.USB_DETACHED:
-                    Log.e("-------->","------>USB_DETACHED");
-                    break;
-                case POSConnect.USB_ATTACHED:
-                    Log.e("-------->","------>USB_ATTACHED");
-                    break;
-            }
-        }
-    };
-
-    IDeviceConnection curConnect = null;
     @Override
     public void onCreate() {
         super.onCreate();
@@ -95,7 +70,6 @@ public class BaseApplication extends Application {
         initWebview();
         POSConnect.init(this);
 
-        connectUSB(searchUsb());
         MultiDex.install(this);
         BleManager.getInstance().init(getApplication());
         BleManager.getInstance()
@@ -122,25 +96,6 @@ public class BaseApplication extends Application {
         QbSdk.initX5Environment(getApplicationContext(), cb);
     }
 
-    private String searchUsb() {
-        List<String> usbNames = POSConnect.getUsbDevices(this);
-//        XToast.showToast("usbNames="+usbNames.size());
-        String ret = "";
-        if (usbNames.size()>0) {
-            ret = usbNames.get(0);
-        }
-        Log.e("-------->","------>ret="+ret);
-        return ret;
-    }
-
-    private void connectUSB(String pathName){
-        if (curConnect!=null){
-            curConnect.close();
-        }
-        curConnect = POSConnect.createDevice(POSConnect.DEVICE_TYPE_USB);
-        curConnect.connect(pathName, connectListener);
-    }
-
     private void initHttp() {
         HttpHeaders headers = new HttpHeaders();
         headers.put("platform", "android");

+ 82 - 2
app/src/main/java/com/naz/sdkdemo/MainActivity.java

@@ -48,6 +48,9 @@ import com.tencent.smtt.sdk.WebSettings;
 import com.tencent.smtt.sdk.WebView;
 import com.tencent.smtt.sdk.WebViewClient;
 
+import net.posprinter.IConnectListener;
+import net.posprinter.IDeviceConnection;
+import net.posprinter.POSConnect;
 import net.posprinter.TSPLConst;
 import net.posprinter.TSPLPrinter;
 
@@ -84,6 +87,7 @@ public class MainActivity extends BaseActivity {
     private LinearLayout ll_web;
 
     private Button printBtn;
+    private Button connectBtn;
 
     private TSPLPrinter printer;
 
@@ -102,8 +106,6 @@ public class MainActivity extends BaseActivity {
 
     @Override
     protected void initView() {
-        printer = new TSPLPrinter(BaseApplication.getApplication().curConnect);
-
         ll_nonet = findViewById(R.id.ll_nonet);
         ll_web = findViewById(R.id.ll_web);
         mWebView = findViewById(R.id.webview);
@@ -247,6 +249,13 @@ public class MainActivity extends BaseActivity {
                 startPrint2(data);
             }
         });
+        connectBtn = findViewById(R.id.connect);
+        connectBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                connectUSB(searchUsb());
+            }
+        });
 
         findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener(){
             @Override
@@ -366,6 +375,18 @@ public class MainActivity extends BaseActivity {
             Log.e(TAG, "closeCamera");
             toCloseCamera();
         }
+
+        @JavascriptInterface
+        public void openPrinter() {
+            Log.e(TAG, "openPrinter");
+            connectUSB(searchUsb());
+        }
+
+        @JavascriptInterface
+        public void closePrinter() {
+            Log.e(TAG, "closePrinter");
+            closeUSB();
+        }
     }
 
     private void toCloseCamera() {
@@ -1008,6 +1029,65 @@ public class MainActivity extends BaseActivity {
         }
     }
 
+    IDeviceConnection curConnect = null;
+    private void connectUSB(String pathName){
+        if (curConnect!=null){
+            curConnect.close();
+        }
+        curConnect = POSConnect.createDevice(POSConnect.DEVICE_TYPE_USB);
+        curConnect.connect(pathName, connectListener);
+        printer = new TSPLPrinter(curConnect);
+    }
+
+    public String searchUsb() {
+        List<String> usbNames = POSConnect.getUsbDevices(this);
+//        XToast.showToast("usbNames="+usbNames.size());
+        String ret = "";
+        if (usbNames.size()>0) {
+            ret = usbNames.get(0);
+        }
+        Log.e("-------->","------>ret="+ret);
+        return ret;
+    }
+
+    private void closeUSB() {
+        if (curConnect!=null){
+            curConnect.close();
+        }
+    }
+
+    private IConnectListener connectListener = new IConnectListener() {
+        @Override
+        public void onStatus(int code, String connInfo, String msg) {
+            switch (code){
+                case POSConnect.CONNECT_SUCCESS:
+                    Log.e("-------->","------>CONNECT_SUCCESS");
+                    mWebView.loadUrl("javascript:printerCode('1')");
+                    break;
+                case POSConnect.CONNECT_FAIL:
+                    Log.e("-------->","------>CONNECT_FAIL");
+                    mWebView.loadUrl("javascript:printerCode('2')");
+                    break;
+                case POSConnect.CONNECT_INTERRUPT:
+                    Log.e("-------->","------>CONNECT_INTERRUPT");
+                    mWebView.loadUrl("javascript:printerCode('3')");
+                    break;
+                case POSConnect.SEND_FAIL:
+                    Log.e("-------->","------>SEND_FAIL");
+                    mWebView.loadUrl("javascript:printerCode('4')");
+                    break;
+                case POSConnect.USB_DETACHED:
+                    Log.e("-------->","------>USB_DETACHED");
+                    mWebView.loadUrl("javascript:printerCode('5')");
+                    break;
+                case POSConnect.USB_ATTACHED:
+                    Log.e("-------->","------>USB_ATTACHED");
+                    mWebView.loadUrl("javascript:printerCode('6')");
+                    break;
+            }
+        }
+    };
+
     @Override
     protected void onDestroy() {
         super.onDestroy();

+ 11 - 1
app/src/main/res/layout/activity_home_web.xml

@@ -55,7 +55,17 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         android:text="打印"
-        android:visibility="gone"/>
+        />
+
+    <Button
+        android:id="@+id/connect"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/print"
+        android:text="连接"
+        android:layout_marginTop="20dp"/>
 
     <Button
         android:id="@+id/take_photo"