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