Commit b397edac99f1af0b7a52fbdc0953ebb4ffe4a560

Authored by YangShuai
1 parent 5346c2c5

1 修复用户在首次打开蓝牙后,在设备搜索页,无法显示搜索结果的问题

module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/SearchDevicefragmentView.java
... ... @@ -7,6 +7,7 @@ import android.support.v4.content.ContextCompat;
7 7 import android.support.v7.widget.DefaultItemAnimator;
8 8 import android.support.v7.widget.LinearLayoutManager;
9 9 import android.text.TextUtils;
  10 +import android.util.Log;
10 11 import android.view.View;
11 12  
12 13 import com.clj.fastble.BleManager;
... ... @@ -45,6 +46,12 @@ public class SearchDevicefragmentView implements MvpView {
45 46 if (null == getContext()) {
46 47 return;
47 48 }
  49 + //设置配对按钮不可点击
  50 + setBondDeviceCantClick();
  51 + //隐藏重试
  52 + hideView(fragment.binding.llRetry);
  53 + //显示loading
  54 + showView(fragment.binding.llLoading);
48 55 initWifiDialog();
49 56 wifiUtils = new WifiUtils(getContext());
50 57 //重试按钮点击事件
... ... @@ -114,8 +121,6 @@ public class SearchDevicefragmentView implements MvpView {
114 121 if (null == getContext()) {
115 122 return;
116 123 }
117   - //设置配对按钮不可点击
118   - setBondDeviceCantClick();
119 124 adapter = new BluetoothDeviceAdapter(getContext(), bleDevices);
120 125 adapter.setHasStableIds(true);
121 126 fragment.binding.rvBlueTooth.setLayoutManager(new LinearLayoutManager(getContext()));
... ... @@ -222,10 +227,8 @@ public class SearchDevicefragmentView implements MvpView {
222 227 if (null == getContext()) {
223 228 return;
224 229 }
225   - if (fragment.binding.btnBondDevice.isClickable()) {
226   - fragment.binding.btnBondDevice.setClickable(false);
227   - fragment.binding.btnBondDevice.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.shape_xiaojia_btn_press));
228   - }
  230 + fragment.binding.btnBondDevice.setClickable(false);
  231 + fragment.binding.btnBondDevice.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.shape_xiaojia_btn_press));
229 232 }
230 233  
231 234 /**
... ... @@ -235,9 +238,7 @@ public class SearchDevicefragmentView implements MvpView {
235 238 if (null == getContext()) {
236 239 return;
237 240 }
238   - if (!fragment.binding.btnBondDevice.isClickable()) {
239   - fragment.binding.btnBondDevice.setClickable(true);
240   - fragment.binding.btnBondDevice.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.selector_xiaojia_btn_green));
241   - }
  241 + fragment.binding.btnBondDevice.setClickable(true);
  242 + fragment.binding.btnBondDevice.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.selector_xiaojia_btn_green));
242 243 }
243 244 }
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/SelectWifiFragmentView.java
... ... @@ -271,6 +271,7 @@ public class SelectWifiFragmentView implements MvpView {
271 271 }
272 272 try {
273 273 String result = new String(data, "UTF-8");
  274 + Log.e(TAG, "onCharacteristicChanged: " + result);
274 275 if (result.indexOf(BlufiConstants.WIFI_LINK_OK) != -1) {
275 276 isSetNetSuccess = true;
276 277 BleManager.getInstance().stopNotify(bleDevice, BlufiConstants.UUID_WIFI_SERVICE.toString(), BlufiConstants.UUID_NOTIFY_CHARACTERISTIC.toString());
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/adapter/BluetoothDeviceAdapter.java
... ... @@ -60,10 +60,22 @@ import java.util.List;
60 60 }
61 61  
62 62 public void addListData(BleDevice bleDevice) {
  63 + if (null == bleDevice) {
  64 + return;
  65 + }
63 66 if (null != bluetoothDeviceList) {
64   - bluetoothDeviceList.add(bleDevice);
65   - hashMap.put(bleDevice, false);
66   - notifyDataSetChanged();
  67 + boolean isHave = false;
  68 + for (int i = 0; i < bluetoothDeviceList.size(); i++) {
  69 + if (bleDevice.getName().equals(bluetoothDeviceList.get(i).getName())) {
  70 + isHave = true;
  71 + break;
  72 + }
  73 + }
  74 + if (!isHave) {
  75 + bluetoothDeviceList.add(bleDevice);
  76 + hashMap.put(bleDevice, false);
  77 + notifyDataSetChanged();
  78 + }
67 79 }
68 80  
69 81 }
... ... @@ -91,7 +103,7 @@ import java.util.List;
91 103 //设备名称
92 104 final BluetoothDevice bluetoothDevice = bluetoothDeviceList.get(position).getDevice();
93 105 String deviceName = bluetoothDevice.getName();
94   - binding.tvDeviceName.setText("小家智能音箱" + (position + 1));
  106 + binding.tvDeviceName.setText(deviceName);
95 107 String deviceAddress = bluetoothDevice.getAddress();
96 108 //设备的状态(BOND_BONDED:已绑定 常量值:12, BOND_BONDING:绑定中 常量值:11, BOND_NONE:未匹配 常量值:10)
97 109 binding.tvDeviceAddress.setText(deviceAddress);
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/SearchDevicefragment.java
1 1 package com.cnlive.strike.xiaojiaspeaker.ui.fragment;
2 2  
3 3 import android.os.Bundle;
  4 +import android.os.Handler;
4 5 import android.support.annotation.Nullable;
5 6 import android.support.v4.content.ContextCompat;
6 7 import android.view.View;
... ... @@ -38,11 +39,26 @@ public class SearchDevicefragment extends MvpBindingFragment&lt;SearchDevicefragmen
38 39 EventBusUtil.register(this);
39 40  
40 41 initTopBar();
41   - initBlueToothScanConfig();
  42 + if (BleManager.getInstance().isBlueEnable()) {
  43 + initBlueToothScanConfig();
  44 + if (null != getMvpView()) {
  45 + getMvpView().initListAdapter();
  46 + }
  47 + } else {
  48 + new Handler().postDelayed(new Runnable() {
  49 + @Override
  50 + public void run() {
  51 + initBlueToothScanConfig();
  52 + if (null != getMvpView()) {
  53 + getMvpView().initListAdapter();
  54 + }
  55 + }
  56 + }, 2 * 1000);
  57 + }
42 58 if (null != getMvpView()) {
43 59 getMvpView().initView();
44   - getMvpView().initListAdapter();
45 60 }
  61 +
46 62 }
47 63  
48 64 @Override
... ... @@ -50,6 +66,7 @@ public class SearchDevicefragment extends MvpBindingFragment&lt;SearchDevicefragmen
50 66 super.onActivityCreated(savedInstanceState);
51 67 StatusBarUtil.setStatusBarWrite(getActivity());
52 68 StatusBarUtil2.setColor(getActivity(), ContextCompat.getColor(getActivity(), R.color.white), 0);
  69 +
53 70 }
54 71  
55 72 private void initTopBar() {
... ... @@ -81,8 +98,6 @@ public class SearchDevicefragment extends MvpBindingFragment&lt;SearchDevicefragmen
81 98 .setScanTimeOut(1000 * 60) // 扫描超时时间,可选,默认10秒;小于等于0表示不限制扫描时间
82 99 .build();
83 100 BleManager.getInstance().initScanRule(scanRuleConfig);
84   - //检查蓝牙是否打开
85   -// if (BleManager.getInstance().isBlueEnable())
86 101 }
87 102  
88 103 @Override
... ... @@ -99,7 +114,7 @@ public class SearchDevicefragment extends MvpBindingFragment&lt;SearchDevicefragmen
99 114 public void event(EventMsg msg) {
100 115 if (EventMsg.CLOSE_BLUETOOTH_ACTIVITY == msg.getEventType()) {
101 116 getActivity().finish();
102   - }else if (EventMsg.GO_TO_CHINA_LISTEN_PAGE== msg.getEventType()){
  117 + } else if (EventMsg.GO_TO_CHINA_LISTEN_PAGE == msg.getEventType()) {
103 118 getActivity().finish();
104 119 }
105 120 }
... ...