From c5bf501d8b507d1e3e79541e7ac9b45910860b4d Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Wed, 29 May 2019 16:17:07 +0800 Subject: [PATCH] 添加新功能 --- app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java | 158 ++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 110 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 d4ded7d..977703d 100644 --- a/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java +++ b/app/src/main/java/com/moral/yunfushao/activity/BLESearchActivity.java @@ -6,14 +6,18 @@ 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.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.View; import android.widget.ImageView; import android.widget.LinearLayout; @@ -21,6 +25,7 @@ import com.clj.fastble.data.ScanResult; import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration; import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter; +import com.moral.andbrickslib.utils.ActivityManager; import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.BleDeviceAdapter; @@ -33,7 +38,6 @@ import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; -import java.util.List; /** * ������������ @@ -60,11 +64,18 @@ bindService(); } + @Override protected void onDestroy() { super.onDestroy(); - if (mBluetoothService != null) + if (mBluetoothService != null) { + mBluetoothService.cancelScan(); unbindService(); + } + + EventMessage msg = new EventMessage(); + msg.setType(AppConfig.SET_MAIN_CALL); + EventBus.getDefault().postSticky(msg); } @Override @@ -97,9 +108,10 @@ /** * ��������������������������������������� */ - if(MainApp.theApp.bleManager!=null&&MainApp.theApp.bleManager.isConnected()){ - mBluetoothService.closeConnect(); + if (MainApp.theApp.bleManager != null) { + MainApp.theApp.bleManager.closeBluetoothGatt(); } + sendEventMessage(AppConfig.BLUETOOCH_CHANGE_CONNECT); mBluetoothService.connectDevice(scanResultList.get(position)); } } @@ -114,6 +126,7 @@ @Override protected void initListener() { iv_search.setOnClickListener(this); + iv_searchpic.setOnClickListener(this); } @Override @@ -124,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(); @@ -156,6 +170,7 @@ } private void unbindService() { +// mBluetoothService.setScanCallback(null); this.unbindService(mFhrSCon); } @@ -164,12 +179,17 @@ public void onServiceConnected(ComponentName name, IBinder service) { mBluetoothService = ((BluetoothService.BluetoothBinder) service).getService(); mBluetoothService.setScanCallback(callback); + mBluetoothService.openBlueTooth(); // mBluetoothService.scanDevice(); } @Override public void onServiceDisconnected(ComponentName name) { - mBluetoothService = null; + if (mBluetoothService != null) { + mBluetoothService.cancelScan(); + mBluetoothService.closeConnect(); + mBluetoothService = null; + } } }; @@ -184,43 +204,69 @@ @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); } @Override public void onConnecting() { - progressDialog.setTitleText("������������..."); - progressDialog.show(); + if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { + progressDialog.setTitleText("������������..."); + progressDialog.show(); + } } @Override public void onConnectFail() { - progressDialog.dismiss(); + if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { + progressDialog.dismiss(); + } mToatUtils.showSingletonToast("������������"); + sendEventMessage(AppConfig.GET_BLE_DISCONNECT); } @Override public void onDisConnected() { - progressDialog.dismiss(); - mToatUtils.showSingletonToast("������������"); + if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { + progressDialog.dismiss(); + } + Log.d("chonglian", "���������������������"); + mToatUtils.showSingletonToast("���������������������"); + } @Override public void onServicesDiscovered() { - progressDialog.dismiss(); - EventMessage msg = new EventMessage(); - msg.setType(AppConfig.GET_BLE_SERVICE); - EventBus.getDefault().post(msg); - finish(); + Log.d("chonglian", "���������������������"); + sendEventMessage(AppConfig.GET_BLE_SERVICE); + if (ActivityManager.getActivityManager().isActivityExist(BLESearchActivity.this.getClass().getName())) { + progressDialog.dismiss(); + finish(); + } + } }; + + private void sendEventMessage(int type) { + EventMessage msg = new EventMessage(); + msg.setType(type); + EventBus.getDefault().postSticky(msg); + } @Override public final void onRequestPermissionsResult(int requestCode, @@ -228,44 +274,60 @@ @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(); } } } -- Gitblit v1.8.0