BluezoneGlobal / react-native-bluetooth-scan

Bluezone - Bảo vệ mình, bảo vệ cộng đồng
https://bluezone.ai
GNU General Public License v3.0
54 stars 41 forks source link

Tự động tắt Bluetooth discoverable mode #13

Open thaidn opened 4 years ago

thaidn commented 4 years ago

Như đã nói ở https://github.com/BluezoneGlobal/react-native-bluetooth-scan/issues/4#issuecomment-620741016, trên một số dòng điện thoại có xuất xứ từ Trung Quốc, Bluetooth sẽ luôn ở chế độ discoverable khi được bật lên. Khi ở chế độ này, điện thoại sẽ phát đi một địa chỉ Bluetooth cố định.

Tôi đề nghị Bluezone cài đặt một daily job để tự động tắt discoverable mode. Android không cung cấp API chính thức để làm việc này, nhưng Bluezone có thể sử dụng một undocumented API như sau (đây cũng là cách mà các app như https://play.google.com/store/apps/details?id=com.minol.miuibluetoothfix dùng).

  public static void downgradeToConnectable() {
    BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
    int currentScanMode = adapter.getScanMode();
    if (currentScanMode == SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
       setScanMode(adapter, SCAN_MODE_CONNECTABLE);
    }
  }

public static void setScanMode(BluetoothAdapter adapter, int scanMode) {
   Class<BluetoothAdapter> cls = BluetoothAdapter.class;
   try {
     cls.getMethod("setScanMode", new Class[]{Integer.TYPE}).invoke(adapter, new Object[]{Integer.valueOf(scanMode)});
   } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
      Log.w("Failed to set scan mode to %s.", scanMode);
   }
 }
BkavMS17 commented 4 years ago

Cảm ơn ThaiDN, team phát triển cũng đã nghiên cứu về vấn đề bạn nêu, nhưng hiện tại team đang ưu tiên hàng đầu về tính ổn định cho các dòng điện thoại. Việc này sẽ cần 1 nghiên cứu kỹ lưỡng và đánh giá về mức độ ảnh hưởng đến hoạt động của điện thoại nếu có phần mềm/tác vụ nào đó khác có thể đã được thiết kế trên các dòng điện thoại này.

thaidn commented 4 years ago

Cảm ơn bạn đã trả lời. Tôi đồng ý nên thận trọng.

Một data point bạn có thể cân nhắc: khi người dùng mở Exposure Notification API trên Android thì Android cũng sẽ tắt discoverable mode. Chúng tôi triển khai cái này cũng được vài tháng rồi, cho đến giờ không gặp vấn đề gì.

dshongphuc commented 4 years ago

@nhantr bạn không làm thì để yên cho người khác làm, người ta đang muốn contribute cho project này, còn bạn thì ngồi đó kêu người ta rãnh. Bớt vớ vẩn đi giùm cái !

vmgnud commented 4 years ago

contribute là bảo mọi người xung quanh cài đặt nó. bới móc chống phá gọi là contribute🤔

@nhantr phần kêu gọi người xung quanh cài đặt tôi nghĩ đã có đội truyền thông, còn về khía cạnh kỹ thuật tôi chưa thấy anh thaidn hay bất kỳ ai trên này đáng bị gán cái mác "bới móc chống phá".

hoanglap commented 3 years ago

@nhantr bạn không làm thì để yên cho người khác làm, người ta đang muốn contribute cho project này, còn bạn thì ngồi đó kêu người ta rãnh. Bớt vớ vẩn đi giùm cái !

contribute là bảo mọi người xung quanh cài đặt nó. bới móc chống phá gọi là contribute🤔

bạn có thể ra facebook, zalo hay insta gì đó để kêu gọi mọi người cài đặt còn đây là chỗ để mọi người góp ý về kĩ thuật chứ không phải vô công kích cá nhân.