From 47f5d71a81a528aff225805d28bf181ce4d6f55d Mon Sep 17 00:00:00 2001
From: 陈奇 <1650699704@qq.com>
Date: Thu, 15 Nov 2018 13:14:43 +0800
Subject: [PATCH] [*]1.0.3.2版本

---
 app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java |  143 +++++++++++++++++++++++++++++++----------------
 1 files changed, 95 insertions(+), 48 deletions(-)

diff --git a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java
index a97f02c..f72d9ed 100644
--- a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java
+++ b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java
@@ -6,15 +6,20 @@
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.pm.PackageManager;
+import android.location.LocationManager;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.support.v4.app.ActivityCompat;
+import android.support.v13.app.ActivityCompat;
+import android.support.v4.app.ActivityOptionsCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -23,6 +28,7 @@
 import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration;
 import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter;
 import com.moral.andbrickslib.utils.ActivityManager;
+import com.moral.yunfushao.MainActivity;
 import com.moral.yunfushao.MainApp;
 import com.moral.yunfushao.R;
 import com.moral.yunfushao.adapter.BleDeviceAdapter;
@@ -35,7 +41,6 @@
 import org.greenrobot.eventbus.EventBus;
 
 import java.util.ArrayList;
-import java.util.List;
 
 /**
  * ������������
@@ -61,6 +66,7 @@
         super.onCreate(savedInstanceState);
         bindService();
     }
+
 
     @Override
     protected void onDestroy() {
@@ -105,9 +111,7 @@
                     if (MainApp.theApp.bleManager != null) {
                         MainApp.theApp.bleManager.closeBluetoothGatt();
                     }
-                    EventMessage eventMessage = new EventMessage();
-                    eventMessage.setType(AppConfig.BLUETOOCH_CHANGE_CONNECT);
-                    EventBus.getDefault().post(eventMessage);
+                    sendEventMessage(AppConfig.BLUETOOCH_CHANGE_CONNECT);
                     mBluetoothService.connectDevice(scanResultList.get(position));
                 }
             }
@@ -122,6 +126,7 @@
     @Override
     protected void initListener() {
         iv_search.setOnClickListener(this);
+        iv_searchpic.setOnClickListener(this);
     }
 
     @Override
@@ -132,7 +137,8 @@
     @Override
     protected void processClick(View view) {
         switch (view.getId()) {
-            case R.id.iv_search:
+            case R.id.iv_searchpic:
+                mBluetoothService.openBlueTooth();
                 if (isScan) {
                     if (mBluetoothService != null) {
                         mBluetoothService.cancelScan();
@@ -147,7 +153,7 @@
                 isScan = !isScan;
                 break;
             case R.id.tv_left:
-                finish();
+                finishA();
                 break;
         }
 
@@ -173,6 +179,7 @@
         public void onServiceConnected(ComponentName name, IBinder service) {
             mBluetoothService = ((BluetoothService.BluetoothBinder) service).getService();
             mBluetoothService.setScanCallback(callback);
+            mBluetoothService.openBlueTooth();
 //            mBluetoothService.scanDevice();
         }
 
@@ -197,12 +204,21 @@
 
         @Override
         public void onScanning(ScanResult result) {
-            scanResultList.add(result);
-            adapter.notifyDataSetChanged();
+            System.out.println("chenqi ScanResule " + result.getDevice().getName());
+            if (!TextUtils.isEmpty(result.getDevice().getName())) {
+                if (result.getDevice().getName().equals("���������") ||
+                        result.getDevice().getName().equals("yunfushao") ||
+                        result.getDevice().getName().equals("7drlb") ||
+                        result.getDevice().getName().contains("FEI-D")) {
+                    scanResultList.add(result);
+                    adapter.notifyDataSetChanged();
+                }
+            }
         }
 
         @Override
         public void onScanComplete() {
+            System.out.println("chenqi onScanComplete ");
             iv_search.setImageResource(R.mipmap.bt_start);
             iv_searchpic.setImageResource(R.mipmap.bg_end);
         }
@@ -220,11 +236,8 @@
             if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) {
                 progressDialog.dismiss();
             }
-//            Log.d("chonglian","������������");
             mToatUtils.showSingletonToast("������������");
-            EventMessage msg = new EventMessage();
-            msg.setType(AppConfig.GET_BLE_DISCONNECT);
-            EventBus.getDefault().postSticky(msg);
+            sendEventMessage(AppConfig.GET_BLE_DISCONNECT);
         }
 
         @Override
@@ -234,17 +247,13 @@
             }
             Log.d("chonglian", "���������������������");
             mToatUtils.showSingletonToast("���������������������");
-            EventMessage msg = new EventMessage();
-            msg.setType(AppConfig.GET_BLE_DISCONNECT);
-            EventBus.getDefault().postSticky(msg);
+
         }
 
         @Override
         public void onServicesDiscovered() {
             Log.d("chonglian", "���������������������");
-            EventMessage msg = new EventMessage();
-            msg.setType(AppConfig.GET_BLE_SERVICE);
-            EventBus.getDefault().postSticky(msg);
+            sendEventMessage(AppConfig.GET_BLE_SERVICE);
             if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) {
                 progressDialog.dismiss();
                 finish();
@@ -253,50 +262,88 @@
         }
     };
 
+    private void sendEventMessage(int type) {
+        EventMessage msg = new EventMessage();
+        msg.setType(type);
+        EventBus.getDefault().postSticky(msg);
+    }
+
     @Override
     public final void onRequestPermissionsResult(int requestCode,
                                                  @NonNull String[] permissions,
                                                  @NonNull int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
         switch (requestCode) {
-            case 12:
-                if (grantResults.length > 0) {
-                    for (int i = 0; i < grantResults.length; i++) {
-                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
-                            onPermissionGranted(permissions[i]);
-                        }
-                    }
-                }
+            case 200:
+                onPermissionGranted();
                 break;
         }
     }
 
     private void checkPermissions() {
-        String[] permissions = {Manifest.permission.ACCESS_COARSE_LOCATION};
-        List<String> permissionDeniedList = new ArrayList<>();
-        for (String permission : permissions) {
-            int permissionCheck = ContextCompat.checkSelfPermission(this, permission);
-            if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
-                onPermissionGranted(permission);
-            } else {
-                permissionDeniedList.add(permission);
+        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+                != PackageManager.PERMISSION_GRANTED) {//���������������������
+            //������������������,200������������
+            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 200);
+        } else {
+            if (!isLocationEnable(this)) {
+                Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+                this.startActivityForResult(locationIntent, 2);
             }
-        }
-        if (!permissionDeniedList.isEmpty()) {
-            String[] deniedPermissions = permissionDeniedList.toArray(new String[permissionDeniedList.size()]);
-            ActivityCompat.requestPermissions(this, deniedPermissions, 12);
+            onPermissionGranted();
         }
     }
 
-    private void onPermissionGranted(String permission) {
-        switch (permission) {
-            case Manifest.permission.ACCESS_COARSE_LOCATION:
-                if (mBluetoothService == null) {
-                    bindService();
-                } else {
-                    mBluetoothService.scanDevice();
-                }
-                break;
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == 2) {
+            if (isLocationEnable(this)) {
+                //������������������������
+                return;
+            } else {
+                Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+                this.startActivityForResult(locationIntent, 2);
+                //���������������������������������
+            }
+        } else super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    /**
+     * ������������������������������������������������
+     *
+     * @param context
+     * @return
+     */
+    public static final boolean isLocationEnable(Context context) {
+        LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+        boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+        boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
+        if (networkProvider || gpsProvider) return true;
+        return false;
+    }
+
+
+    private void onPermissionGranted() {
+        if (mBluetoothService == null) {
+            bindService();
+        } else {
+            mBluetoothService.scanDevice();
         }
     }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            finishA();
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    public void finishA(){
+        Intent i = new Intent(this, MainActivity.class);
+        ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, iv_searchpic, "dddd");
+        startActivity(i, optionsCompat.toBundle());
+        finish();
+    }
 }

--
Gitblit v1.8.0