代码之家  ›  专栏  ›  技术社区  ›  Ton

Android wifi和蓝牙定位扫描

  •  0
  • Ton  · 技术社区  · 5 年前

    是否有任何意图打开wifi和蓝牙扫描意图,要求用户提高定位精度?

    Example

    更新:我发现了一个更好的方法,直接要求用户激活Wifi扫描,方法如下:

    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    if (wifiManager.isScanAlwaysAvailable()==false) {
       startActivity(new Intent(WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE));
    }
    

    所以,我现在的问题是:我如何做同样的事情,要求扫描始终可用的蓝牙?我应该使用什么意图?

    进入该屏幕的方法如下:

    对于牛轧糖:打开Android设置,进入位置,右上角3点菜单,扫描。

    对于Oreo:打开Android设置,转到安全和位置、位置、扫描

    对于Pie:打开Android设置,转到Location,Advanced,Scanning。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Arun    5 年前

    你可以用 LocationSettingsRequest 提示用户启用位置。在请求集中 builder.setNeedBle(true); 启用蓝牙扫描。

    如果蓝牙已打开,则不会要求用户启用蓝牙扫描。

        2
  •  0
  •   Irfanuddin    5 年前

    连续扫描蓝牙会影响设备性能 电池寿命。因此,请自行承担风险。

    下面的代码会一直检查设备,即使在发现完成之后。 首先,确保使用

    IntentFilter intentFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
    registerReceiver(myReceiver, intentFilter);
    

    试着运行代码。

    private BluetoothAdapter mBtAdapter;
    mBtAdapter.startDiscovery();
    
    private final BroadcastReceiver mReceiver = new BroadcastReceiver()
    {
            @Override
            public void onReceive(Context context, Intent intent)
            {
                String action = intent.getAction();
    
                // When discovery finds a device
                if (BluetoothDevice.ACTION_FOUND.equals(action))
                {
                //do something
                }
    
                else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action))
                {
                    Log.v(TAG,"Entered the Finished ");
                    mBtAdapter.startDiscovery();
                }