Jelajahi Sumber

解决PDA更新后无法跳转安装

ChengJH 2 tahun lalu
induk
melakukan
030cc18901
23 mengubah file dengan 566 tambahan dan 52 penghapusan
  1. 4 0
      app/build.gradle
  2. TEMPAT SAMPAH
      app/libs/CPCL_V1.07.jar
  3. 34 26
      app/src/main/AndroidManifest.xml
  4. 1 1
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/BarcodeGenerationFragment.java
  5. 1 1
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/BarcodeSupplePrintFragment.java
  6. 14 7
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/IOCOutMakeMaterialOper.java
  7. 1 1
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/MSDSplitFragment.java
  8. 4 4
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/VersionUpgradeFragment.java
  9. 1 0
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/WHBreakingBatchFragment.java
  10. 1 1
      app/src/main/java/com/uas/pda_smart_com_lg/fragment/WHCombineBatchFragment.java
  11. 124 0
      app/src/main/java/com/uas/pda_smart_com_lg/newbooth/BTActivity.java
  12. 128 0
      app/src/main/java/com/uas/pda_smart_com_lg/newbooth/Bluetooth.java
  13. 26 0
      app/src/main/java/com/uas/pda_smart_com_lg/newbooth/PrintBT.java
  14. 78 0
      app/src/main/java/com/uas/pda_smart_com_lg/newbooth/Utility.java
  15. 3 3
      app/src/main/java/com/uas/pda_smart_com_lg/util/Constants.java
  16. 1 1
      app/src/main/java/com/uas/pda_smart_com_lg/util/PrintUtils.java
  17. 110 0
      app/src/main/java/com/uas/pda_smart_com_lg/util/PrintUtilsCpcl.java
  18. 20 0
      app/src/main/res/layout/activity_btactivity.xml
  19. 8 1
      app/src/main/res/layout/fragment_iocout_make_material_oper.xml
  20. 1 1
      app/src/main/res/values/color.xml
  21. 1 1
      app/src/main/res/values/strings.xml
  22. 3 2
      app/src/main/res/xml/file_paths.xml
  23. 2 2
      build.gradle

+ 4 - 0
app/build.gradle

@@ -60,6 +60,8 @@ android {
 
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
+    implementation 'com.android.support:appcompat-v7:28.0.0'
+    implementation 'com.android.support.constraint:constraint-layout:2.0.1'
     testImplementation 'junit:junit:4.12'
     api files('libs/volley.jar')
     api files('libs/gson-2.2.4.jar')
@@ -83,6 +85,8 @@ dependencies {
     implementation  'com.umeng.umsdk:common:9.4.0'// 必选
     implementation  'com.umeng.umsdk:asms:1.2.3'// 必选
     implementation 'com.umeng.umsdk:apm:1.4.0' // 错误分析升级为独立SDK,看crash数据请一定集成,可选
+    implementation 'com.tbruyelle.rxpermissions:rxpermissions:0.9.3'
+
 }
 
 def getVersionName() {

TEMPAT SAMPAH
app/libs/CPCL_V1.07.jar


+ 34 - 26
app/src/main/AndroidManifest.xml

@@ -5,30 +5,18 @@
     android:versionCode="3"
     android:versionName="v1.3">
 
-    <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.VIBRATE" />
-    <uses-permission android:name="android.permission.CAMERA" />
-
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-
     <application
-        android:name="com.uas.pda_smart_com_lg.application.PdaApplication"
+        android:name=".application.PdaApplication"
         android:allowBackup="true"
         android:icon="@mipmap/icon"
         android:label="@string/my_app_name"
         android:theme="@style/AppTheme"
         android:usesCleartextTraffic="true"
         tools:replace="icon,label,theme">
-
-        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
+        <activity android:name=".newbooth.BTActivity"></activity>
 
         <activity
-            android:name="com.uas.pda_smart_com_lg.activity.SplashActivity"
+            android:name=".activity.SplashActivity"
             android:icon="@mipmap/icon"
             android:screenOrientation="portrait"
             android:theme="@style/NoOverLayStyle">
@@ -40,35 +28,55 @@
         </activity>
 
         <activity
-            android:name="com.uas.pda_smart_com_lg.activity.MainActivity"
+            android:name=".activity.MainActivity"
             android:icon="@mipmap/icon"
             android:label="@string/title_activity_menu"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="adjustPan|stateHidden"></activity>
+            android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity
-            android:name="com.uas.pda_smart_com_lg.activity.IndexActivity"
+            android:name=".activity.IndexActivity"
             android:label="@string/title_activity_menu"
             android:screenOrientation="portrait" />
         <activity
-            android:name="com.uas.pda_smart_com_lg.activity.FunctionActivity"
+            android:name=".activity.FunctionActivity"
             android:label="@string/title_activity_function"
             android:screenOrientation="portrait"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
-
         <activity
-            android:name="com.uas.pda_smart_com_lg.activity.SearchMaterialActivity"
+            android:name=".activity.SearchMaterialActivity"
             android:label="@string/material_number_search"
             android:screenOrientation="portrait" />
-
-        <provider
+        <provider xmlns:tools="http://schemas.android.com/tools"
             android:name="android.support.v4.content.FileProvider"
-            android:authorities="com.uas.pda_smart_com_lg"
+            android:authorities="com.uas.pda_smart_com_lg.fileprovider"
             android:exported="false"
-            android:grantUriPermissions="true">
+            android:grantUriPermissions="true"
+            tools:replace="android:authorities">
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/file_paths" />
         </provider>
+
+        <uses-library
+            android:name="org.apache.http.legacy"
+            android:required="false" />
     </application>
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.CAMERA" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 
-</manifest>
+</manifest>

+ 1 - 1
app/src/main/java/com/uas/pda_smart_com_lg/fragment/BarcodeGenerationFragment.java

@@ -357,7 +357,7 @@ public class BarcodeGenerationFragment extends BaseFragment implements View.OnCl
                                             Intent intent = new Intent(Intent.ACTION_VIEW);
                                             File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(mActivity, "PrinterShare.apk");
                                             if (Build.VERSION.SDK_INT >= 24) {
-                                                Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com", assetsFileToCacheDir);
+                                                Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com_lg", assetsFileToCacheDir);
                                                 //Granting Temporary Permissions to a URI
                                                 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                                 intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

+ 1 - 1
app/src/main/java/com/uas/pda_smart_com_lg/fragment/BarcodeSupplePrintFragment.java

@@ -213,7 +213,7 @@ public class BarcodeSupplePrintFragment extends BaseFragment {
                                             Intent intent = new Intent(Intent.ACTION_VIEW);
                                             File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(mActivity, "PrinterShare.apk");
                                             if (Build.VERSION.SDK_INT >= 24) {
-                                                Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com", assetsFileToCacheDir);
+                                                Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com_lg", assetsFileToCacheDir);
                                                 //Granting Temporary Permissions to a URI
                                                 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                                 intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

+ 14 - 7
app/src/main/java/com/uas/pda_smart_com_lg/fragment/IOCOutMakeMaterialOper.java

@@ -27,6 +27,7 @@ import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.BaseAdapter;
 import android.widget.Button;
+import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -157,7 +158,7 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
     TextView mMaterialInforTextView;
     @Bind(R.id.iocout_collect_result)
     TextView mCollectResultTextView;
-
+    private CheckBox special_check;
     private ImageView mScanImageView;
 
     private JsonObjectRequest jsonRequest;
@@ -455,7 +456,7 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
 //        ((FunctionActivity) getActivity()).fragment = new IOCOutMakeMaterialOper();
         ((FunctionActivity) getActivity()).setMoreBtnVisible(true);
         ((FunctionActivity) getActivity()).setScanIvVisible(true);
-
+        special_check = root.findViewById(R.id.special_check);
         mScanImageView = (ImageView) mActivity.findViewById(R.id.btn_actionbar_scan_iv);
 
         mDbManager = new DBManager(getActivity().getApplicationContext());
@@ -730,13 +731,15 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
      */
     private void barcodeEnterEvent(boolean msdcheck, boolean datecheck) {
         progressDialog.show();
+        boolean checkeds = special_check.isChecked();
 //        currentBarcode = etBarCode.getText().toString().trim();
         String url = (isMultiple ? GloableParams.ADDRESS_OUT_BYBATCH_DEAL : GloableParams.ADDRESS_OUT_BYBATCH_DEAL)
                 + "?barcode=" + currentBarcode
                 + (isMultiple ? "&ids=" : "&ids=")
                 + pi_id + "&whcode=" + pd_whcode
                 + "&type=barcode&msdcheck=" + msdcheck
-                + "&datecheck=" + datecheck;
+                + "&datecheck=" + datecheck
+                +"&ifspecial="+checkeds;
         try {
             if (mProdOutType != null && mCollectType != null) {
                 if (mProdOutType.equals("byProdcode")) {
@@ -746,7 +749,8 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
                                 + (isMultiple ? "&ids=" : "&ids=")
                                 + pi_id + "&whcode=" + pd_whcode
                                 + "&type=barcode&msdcheck=" + msdcheck
-                                + "&datecheck=" + datecheck;
+                                + "&datecheck=" + datecheck
+                                +"&ifspecial="+checkeds;
 
                     } else if (mCollectType.equals("byBatchcode")) {
                         url = (isMultiple ? GloableParams.ADDRESS_OUT_BYBATCH_DEAL : GloableParams.ADDRESS_OUT_BYBATCH_DEAL)
@@ -754,7 +758,8 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
                                 + (isMultiple ? "&ids=" : "&ids=")
                                 + pi_id + "&whcode=" + pd_whcode
                                 + "&type=boxcode&msdcheck=" + msdcheck
-                                + "&datecheck=" + datecheck;
+                                + "&datecheck=" + datecheck
+                                +"&ifspecial="+checkeds;
                     }
                 } else if (mProdOutType.equals("byBatch")) {
                     if (mCollectType.equals("byBarcode")) {
@@ -763,14 +768,16 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
                                 + (isMultiple ? "&ids=" : "&ids=")
                                 + pi_id + "&whcode=" + pd_whcode
                                 + "&type=barcode&msdcheck=" + msdcheck
-                                + "&datecheck=" + datecheck;
+                                + "&datecheck=" + datecheck
+                                +"&ifspecial="+checkeds;
                     } else if (mCollectType.equals("byBatchcode")) {
                         url = (isMultiple ? GloableParams.ADDRESS_OUT_BYBATCH_DEAL : GloableParams.ADDRESS_OUT_BYBATCH_DEAL)
                                 + "?barcode=" + URLEncoder.encode(currentBarcode, "utf-8")
                                 + (isMultiple ? "&ids=" : "&ids=")
                                 + pi_id + "&whcode=" + pd_whcode
                                 + "&type=boxcode&msdcheck=" + msdcheck
-                                + "&datecheck=" + datecheck;
+                                + "&datecheck=" + datecheck
+                                +"&ifspecial="+checkeds;
                     }
 
                 }

+ 1 - 1
app/src/main/java/com/uas/pda_smart_com_lg/fragment/MSDSplitFragment.java

@@ -293,7 +293,7 @@ public class MSDSplitFragment extends BaseFragment implements View.OnClickListen
                                     Intent intent = new Intent(Intent.ACTION_VIEW);
                                     File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(getActivity(), "PrinterShare.apk");
                                     if (Build.VERSION.SDK_INT >= 24) {
-                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com", assetsFileToCacheDir);
+                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com_lg", assetsFileToCacheDir);
                                         //Granting Temporary Permissions to a URI
                                         intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                         intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

+ 4 - 4
app/src/main/java/com/uas/pda_smart_com_lg/fragment/VersionUpgradeFragment.java

@@ -115,10 +115,10 @@ public class VersionUpgradeFragment extends BaseFragment implements ProgressResp
                 JSONObject resultObject = JSON.parseObject(result);
                 JSONObject dataObject = resultObject.getJSONObject("data");
                 if (dataObject != null) {
-                    mNewVersionTv.setText(FastjsonUtil.getText(dataObject, "pp_versionname"));
-                    mMsgTextView.setText(FastjsonUtil.getText(dataObject, "pp_remark"));
+                    mNewVersionTv.setText(FastjsonUtil.getText(dataObject, "PP_VERSIONNAME"));
+                    mMsgTextView.setText(FastjsonUtil.getText(dataObject, "PP_REMARK"));
 
-                    mAttachId = FastjsonUtil.getText(dataObject, "pp_attach");
+                    mAttachId = FastjsonUtil.getText(dataObject, "PP_ATTACH");
                     if (!TextUtils.isEmpty(mAttachId)) {
                         mUpgradeButton.setVisibility(View.VISIBLE);
                     } else {
@@ -185,7 +185,7 @@ public class VersionUpgradeFragment extends BaseFragment implements ProgressResp
                         Intent intent = new Intent(Intent.ACTION_VIEW);
                         if (Build.VERSION.SDK_INT >= 24) {
                             Uri apkUri = FileProvider.getUriForFile(mActivity,
-                                    "com.uas.pda_smart_sa.fileprovider", apk);
+                                    "com.uas.pda_smart_com_lg.fileprovider", apk);
                             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                             intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                             intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

+ 1 - 0
app/src/main/java/com/uas/pda_smart_com_lg/fragment/WHBreakingBatchFragment.java

@@ -149,6 +149,7 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
                 case SPLIT_BARCODE_SUCCESS:
                     try {
                         String s = (String) msg.obj;
+                        Log.e("sssss===",s);
                         WHBreakingBatchBreakingBtnClickEvent wh = JsonTools.parseJsonToBean(s, WHBreakingBatchBreakingBtnClickEvent.class);
                         if (wh.getData() != null) {
                             for (int i = 0; i < wh.getData().size(); i++) {

+ 1 - 1
app/src/main/java/com/uas/pda_smart_com_lg/fragment/WHCombineBatchFragment.java

@@ -347,7 +347,7 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
                                     Intent intent = new Intent(Intent.ACTION_VIEW);
                                     File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(getActivity(), "PrinterShare.apk");
                                     if (Build.VERSION.SDK_INT >= 24) {
-                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com", assetsFileToCacheDir);
+                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.pda_smart_com_lg", assetsFileToCacheDir);
                                         //Granting Temporary Permissions to a URI
                                         intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                                         intent.setDataAndType(apkUri, "application/vnd.android.package-archive");

+ 124 - 0
app/src/main/java/com/uas/pda_smart_com_lg/newbooth/BTActivity.java

@@ -0,0 +1,124 @@
+package com.uas.pda_smart_com_lg.newbooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.DividerItemDecoration;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
+import android.widget.Toast;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.uas.pda_smart_com_lg.R;
+import com.uas.pda_smart_com_lg.tools.SharedPreUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BTActivity extends AppCompatActivity {
+
+    private Context mContext;
+    private ListView list_bt;
+    public BluetoothAdapter myBluetoothAdapter;
+    private Intent intent;
+    private BaseQuickAdapter<PrintBT, BaseViewHolder> baseQuickAdapter;
+    private List<PrintBT> list;
+    private int tag;
+    private Bluetooth bluetooth;
+    private RecyclerView recyHistory;
+    private SwipeRefreshLayout swipeRefresh;
+    private RelativeLayout activityBt;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_btactivity);
+        recyHistory = findViewById(R.id.recy_history);
+        swipeRefresh = findViewById(R.id.swipe_refresh);
+        activityBt = findViewById(R.id.activity_bt);
+        mContext = getApplicationContext();
+        initData();
+    }
+    private void initData() {
+        intent = getIntent();
+        tag = intent.getIntExtra("TAG", RESULT_CANCELED);
+        ListBluetoothDevice();
+    }
+    public void ListBluetoothDevice() {
+        if ((myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()) == null) {
+            Toast.makeText(this, "没有找到蓝牙适配器", Toast.LENGTH_LONG).show();
+            return;
+        }
+
+        if (!myBluetoothAdapter.isEnabled()) {
+            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+            startActivityForResult(enableBtIntent, 2);
+        }
+        list = new ArrayList<PrintBT>();
+        baseQuickAdapter = new BaseQuickAdapter<PrintBT, BaseViewHolder>(android.R.layout.simple_list_item_2, list) {
+
+            @Override
+            protected void convert(BaseViewHolder helper, PrintBT item) {
+                helper.setText(android.R.id.text1, item.getBTname());
+                helper.setText(android.R.id.text2, item.getBTmac());
+            }
+        };
+        recyHistory.setLayoutManager(new LinearLayoutManager(mContext));
+        recyHistory.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL));
+        recyHistory.setAdapter(baseQuickAdapter);
+        bluetooth = Bluetooth.getBluetooth(this);
+        initBT();
+        baseQuickAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                SharedPreUtil.saveString(mContext,"selectedbdaddress",list.get(position).getBTmac());
+                finish();
+            }
+        });
+        swipeRefresh.setColorSchemeResources(R.color.colorPrimary);
+        swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                initBT();
+                if (swipeRefresh.isRefreshing())
+                    swipeRefresh.setRefreshing(false);
+            }
+        });
+    }
+    private void initBT() {
+        Log.d("TAG","initBT:");
+        list.clear();
+        baseQuickAdapter.notifyDataSetChanged();
+        bluetooth.doDiscovery();
+        bluetooth.getData(new Bluetooth.toData() {
+            @Override
+            public void succeed(String BTname, String BTmac) {
+                for (PrintBT printBT : list) {
+                    if (BTmac.equals(printBT.getBTmac())) {
+                        return;
+                    }
+                }
+                //XiangYinBao_X3,ATOL1
+                Log.d("TAG","BTname:"+BTname);
+                PrintBT printBT = new PrintBT();
+                printBT.setBTname(BTname);
+                printBT.setBTmac(BTmac);
+                list.add(printBT);
+                baseQuickAdapter.notifyDataSetChanged();
+            }
+        });
+    }
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        bluetooth.disReceiver();
+    }
+}

+ 128 - 0
app/src/main/java/com/uas/pda_smart_com_lg/newbooth/Bluetooth.java

@@ -0,0 +1,128 @@
+package com.uas.pda_smart_com_lg.newbooth;
+
+import android.Manifest;
+import android.app.Activity;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.tbruyelle.rxpermissions.RxPermissions;
+
+import rx.functions.Action1;
+
+
+/**
+ * Created by NO on 2018/7/24.
+ */
+
+public class Bluetooth {
+    Context context;
+    static Bluetooth bluetooth;
+    private BluetoothAdapter mBluetoothAdapter;
+    toData mTodata;
+    private static RxPermissions rxPermissions;
+
+    private Bluetooth(Context context){
+        this.context=context;
+    }
+    public static Bluetooth getBluetooth(Context context){
+//         if (bluetooth==null){
+             bluetooth= new Bluetooth(context);
+//             rxPermissions = new RxPermissions((Activity)context);
+//         }
+        return bluetooth;
+    }
+    private void registerBroadcast() {
+        IntentFilter intent = new IntentFilter();
+        intent.addAction(BluetoothDevice.ACTION_FOUND);// 用BroadcastReceiver来取得搜索结果
+        intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
+        intent.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
+        context.registerReceiver(mReceiver, intent);
+    }
+    public void doDiscovery(){
+        if (context!=null){
+            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+            if (mBluetoothAdapter == null) {
+                Utility.show(context, "Device does not support Bluetooth");
+                return;
+            } else if (!mBluetoothAdapter.isEnabled()) {
+                mBluetoothAdapter.enable();
+            }
+            registerBroadcast();
+            rxPermissions = new RxPermissions((Activity)context);
+            rxPermissions.request(Manifest.permission.BLUETOOTH_ADMIN,
+                    Manifest.permission.BLUETOOTH,
+                    Manifest.permission.ACCESS_FINE_LOCATION).subscribe(new Action1<Boolean>() {
+                @Override
+                public void call(Boolean aBoolean) {
+                    if (aBoolean) {
+                        if (null == mBluetoothAdapter) {
+                            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+                        }
+                        if (!mBluetoothAdapter.isEnabled()) {
+                            mBluetoothAdapter.enable();
+                        }
+                        if (mBluetoothAdapter.isDiscovering()) {
+                            mBluetoothAdapter.cancelDiscovery();
+                        }
+                        mBluetoothAdapter.startDiscovery();
+                    } else {
+                        Utility.show(context,"no bluetooth permission");
+                    }
+                }
+            });
+        }
+    }
+    public void getData(toData todata){
+        mTodata=todata;
+    }
+    public interface toData{
+        public void succeed(String BTname, String BTmac);
+    }
+    public void disReceiver(){
+        if (mReceiver != null&&context!=null)
+            context.unregisterReceiver(mReceiver);
+        if (mBluetoothAdapter.isDiscovering())
+            mBluetoothAdapter.cancelDiscovery();
+    }
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            BluetoothDevice device = null;
+            switch (action) {
+                case BluetoothDevice.ACTION_FOUND:
+                    device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+                    if(device.getBluetoothClass().getMajorDeviceClass()==1536){
+                        if (mTodata!=null){
+                            mTodata.succeed(TextUtils.isEmpty(device.getName())?"UnKnown":device.getName(),device.getAddress());
+                        }
+                    }
+                    break;
+                case BluetoothDevice.ACTION_BOND_STATE_CHANGED:
+                    device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+                    switch (device.getBondState()) {
+                        case BluetoothDevice.BOND_BONDING:
+                            Log.d("Print", "正在配对......");
+                            break;
+                        case BluetoothDevice.BOND_BONDED:
+                            Log.d("Print", "完成配对");
+                            break;
+                        case BluetoothDevice.BOND_NONE:
+                            Log.d("Print", "取消配对");
+                        default:
+                            break;
+                    }
+                    break;
+                case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:
+                    Log.d("Print", "搜索完成");
+                    break;
+            }
+        }
+    };
+}

+ 26 - 0
app/src/main/java/com/uas/pda_smart_com_lg/newbooth/PrintBT.java

@@ -0,0 +1,26 @@
+package com.uas.pda_smart_com_lg.newbooth;
+
+/**
+ * Created by NO on 2019/3/26.
+ */
+
+public class PrintBT {
+    String BTname;
+    String BTmac;
+
+    public String getBTname() {
+        return BTname;
+    }
+
+    public void setBTname(String BTname) {
+        this.BTname = BTname;
+    }
+
+    public String getBTmac() {
+        return BTmac;
+    }
+
+    public void setBTmac(String BTmac) {
+        this.BTmac = BTmac;
+    }
+}

+ 78 - 0
app/src/main/java/com/uas/pda_smart_com_lg/newbooth/Utility.java

@@ -0,0 +1,78 @@
+package com.uas.pda_smart_com_lg.newbooth;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Rect;
+import android.os.Build;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.widget.Toast;
+
+import java.util.regex.Pattern;
+
+/**
+ * Created by NO on 2017/9/14.
+ */
+
+public class Utility {
+    public  static void checkBlueboothPermission(Activity context, String permission, String[] requestPermissions, Callback callback){
+        if (Build.VERSION.SDK_INT >= 23) {
+            //校验是否已具有模糊定位权限
+            if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
+                ActivityCompat.requestPermissions(context, requestPermissions, 100);
+            } else {
+                //具有权限
+                callback.permit();
+                return;
+            }
+        } else {
+            //系统不高于6.0直接执行
+            callback.permit();
+        }
+    }
+    public interface Callback {
+        /**
+         * API>=23 允许权限
+         */
+        void permit();
+
+
+    }
+    public static Bitmap Tobitmap(Bitmap bitmap, int width, int height) {
+        Bitmap target = Bitmap.createBitmap(width, height, bitmap.getConfig());
+        Canvas canvas = new Canvas(target);
+        canvas.drawBitmap(bitmap, null, new Rect(0, 0, target.getWidth(), target.getHeight()), null);
+        return target;
+    }
+    //width:目标宽度,pageWidthPoint:初始宽度,pageHeightPoint:初始高度
+    public static int getHeight(int width,int pageWidthPoint,int pageHeightPoint){
+        double bili=width/(double)pageWidthPoint;
+        return  (int) (pageHeightPoint*bili);
+    }
+    public static Bitmap Tobitmap90(Bitmap bitmap) {
+        Matrix matrix = new Matrix();
+        // 设置旋转角度
+        matrix.setRotate(90);
+        // 重新绘制Bitmap
+        bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
+        return bitmap;
+    }
+    //判断是否是整数
+    public static boolean isInteger(String str) {
+        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+        return pattern.matcher(str).matches();
+    }
+    public static void show(final Context context, final String message){
+        ((Activity)context).runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(context,message,Toast.LENGTH_SHORT).show();
+            }
+        });
+
+    }
+}

+ 3 - 3
app/src/main/java/com/uas/pda_smart_com_lg/util/Constants.java

@@ -11,9 +11,9 @@ public interface Constants {
         String APP_DIR_NAME = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/";
         String PRINT_SHARE_PACKAGE = "com.dynamixsoftware.printershare";
         String PRINT_FILE_NAME = "print.pdf";
-        String PRINT_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UASPDA/printFile";
-        String APK_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/pda_smart_com/apk";
-        String APK_FILE_NAME = "pda_smart_com.apk";
+        String PRINT_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/UASPDALG/printFile";
+        String APK_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/lg_pda_smart_com/apk";
+        String APK_FILE_NAME = "pda_smart_com_lg.apk";
 
         String APP_ICON_URL = "http://zhbj.qianlong.com/logo.png";
 

+ 1 - 1
app/src/main/java/com/uas/pda_smart_com_lg/util/PrintUtils.java

@@ -24,7 +24,7 @@ public class PrintUtils {
             int offset = 6,
                     h = 400,
                     v = 800,
-                    height = 400,
+                    height = 600,
                     qty = 1;
 //                    h = 200,
 //                    v = 200,

+ 110 - 0
app/src/main/java/com/uas/pda_smart_com_lg/util/PrintUtilsCpcl.java

@@ -0,0 +1,110 @@
+package com.uas.pda_smart_com_lg.util;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.pda_smart_com_lg.tools.SharedPreUtil;
+
+import cpcl.PrinterHelper;
+
+public class PrintUtilsCpcl {
+
+    public static int printBar(Context context, String dataJson, int dpi, String printTemplate) {
+        try {
+            if (dpi <= 0) {
+                dpi = 203;
+            }
+
+            if (TextUtils.isEmpty(printTemplate)) {
+                printTemplate = SharedPreUtil.getString(context, Constants.FLAG.PRINT_TEMPLATE_CACHE, "");
+            }
+
+//            int offset = 6,
+//                    h = 400,
+//                    v = 800,
+//                    height = 600,
+//                    qty = 1;
+//                    h = 200,
+//                    v = 200,
+//                    height = 200,
+//                    qty = 1;
+
+            JSONArray templateArray = JSON.parseArray(printTemplate);
+            if (templateArray != null && templateArray.size() > 0) {
+//                PrintHelper printHelper = new PrintHelper(offset, h, v, height, qty);
+                PrinterHelper.printAreaSize("0", "200", "200", "1400", "1");
+                PrinterHelper.Box("50", "5", "450", "400", "1");
+                for (int i = 0; i < templateArray.size(); i++) {
+                    JSONObject templateObject = templateArray.getJSONObject(i);
+
+                    if (templateObject != null) {
+                        String valuetype = FastjsonUtil.getText(templateObject, "LP_VALUETYPE");
+                        double leftrate = FastjsonUtil.getDouble(templateObject, "LP_LEFTRATE");
+                        int printX = (int) (leftrate * dpi / 25.4);
+                        double toprate = FastjsonUtil.getDouble(templateObject, "LP_TOPRATE");
+                        int printY = (int) (toprate * dpi / 25.4);
+                        double barHeight = FastjsonUtil.getDouble(templateObject, "LP_HEIGHT");
+                        int barHeightInt = (int) (barHeight * dpi / 25.4);
+                        int fontSize = FastjsonUtil.getInt(templateObject, "LP_SIZE");
+                        String printKey = FastjsonUtil.getText(templateObject, "LP_NAME");
+
+                        String printText = FastjsonUtil.getText(dataJson, printKey);
+
+                        if (!TextUtils.isEmpty(printText)) {
+                            switch (valuetype) {
+                                case "barcode":
+//                                    printHelper = printHelper.printBarCode(printText)
+//                                            .setX(printX)
+//                                            .setY(printY)
+//                                            .setHeight(barHeightInt - (int) (2 * dpi / 25.4))
+//                                            .setCodeTextFont(4)
+//                                            .setCodeTextSize(2)
+//                                            .build();
+                                    PrinterHelper.Barcode(PrinterHelper.BARCODE, "128", "2", "1", "50", "0", "100", true, "7", "0", "5", printText);
+                                    break;
+                                case "text":
+                                    int textFont = 7;
+                                    if ("BAR_BATCHCODE".equals(printKey)) {
+                                        textFont = 7;
+                                    }
+                                    if (StringUtil.isEmpty(String.valueOf(fontSize))){
+                                        fontSize=1;
+                                    }
+//                                    printHelper = printHelper.printText(printText)
+//                                            .setX(printX)
+//                                            .setY(printY + (int) ((0.6 * dpi) / 25.4))
+////                                            .setBold(2)
+//                                            .setTextFont(textFont)
+//                                            .setTextFont(fontSize)
+//                                            .build();
+                                    PrinterHelper.Text(PrinterHelper.TEXT, "8", "0", "0", "66", printText);
+                                    break;
+                                case "qrcode"://打印二维码
+//                                    printHelper = printHelper.printQr(printText)
+//                                            .setX(printX)
+//                                            .setY(printY)
+//                                            .setTextSize(fontSize)
+//                                            .setModel(2)
+//                                            .build();
+                                    PrinterHelper.printAreaSize("0", "200","200","500","1");
+                                    PrinterHelper.PrintQR(PrinterHelper.BARCODE,"100", "100","A", "6", printText);
+
+                                    break;
+                            }
+                        }
+                    }
+                }
+//                PrinterHelper.Form();
+                return PrinterHelper.Print();
+            } else {
+                return -1;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return -1;
+        }
+    }
+}

+ 20 - 0
app/src/main/res/layout/activity_btactivity.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/activity_bt"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".newbooth.BTActivity">
+    <android.support.v4.widget.SwipeRefreshLayout
+        android:id="@+id/swipe_refresh"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/recy_history"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+        </android.support.v7.widget.RecyclerView>
+    </android.support.v4.widget.SwipeRefreshLayout>
+
+</RelativeLayout>

+ 8 - 1
app/src/main/res/layout/fragment_iocout_make_material_oper.xml

@@ -109,7 +109,14 @@
                         android:textSize="14sp"
                         tools:text="YS1506002" />
 
-
+                    <CheckBox
+                        android:id="@+id/special_check"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:gravity="center"
+                        android:text="特殊出库">
+                    </CheckBox>
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"

+ 1 - 1
app/src/main/res/values/color.xml

@@ -25,7 +25,7 @@
     <color name="gray_text">#F0FFFF</color>
     <color name="gray_blue">#56abe4</color>
     <color name="gray_light">#c2ccd2</color>
-
+    <color name="colorPrimary">#ffff8933</color>
     <!--ListView Refresh-->
     <color name="white">#FFFFFF</color>
     <color name="black">#000000</color>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -1,5 +1,5 @@
 <resources>
-    <string name="my_app_name">UAS智能终端系统</string>
+    <string name="my_app_name">UAS智能终端系统联淦</string>
     <string name="my_app_name_test">PDA-仓库通用</string>
     <string name="hello_world">Hello world!</string>
     <string name="action_settings">Settings</string>

+ 3 - 2
app/src/main/res/xml/file_paths.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <paths xmlns:android="http://schemas.android.com/apk/res/android">
-    <external-path path="Android/data/com.uas.pda_smart_com/"        name="files_root" />
-    <external-path path="." name="external_storage_root" />
+    <external-path name="files_root" path="Android/data/com.uas.pda_smart_com_lg/"
+         />
+    <external-path  name="external_storage_root" path="."/>
 </paths>

+ 2 - 2
build.gradle

@@ -43,8 +43,8 @@ ext {
             targetSdkVersion : 28,
             compileSdkVersion: 28,
             buildToolsVersion: "28.0.3",
-            versionCode      : 23,
-            versionName      : "v2.3"
+            versionCode      : 24,
+            versionName      : "v2.3.1"
     ]
 
     depsVersion = [