首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android wifi和蓝牙扫描定位

Android wifi和蓝牙扫描定位
EN

Stack Overflow用户
提问于 2019-03-08 17:56:38
回答 2查看 1.1K关注 0票数 3

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

更新:我找到了一种更好的方法,可以直接要求用户激活Wifi扫描,这样做:

代码语言:javascript
复制
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isScanAlwaysAvailable()==false) {
   startActivity(new Intent(WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE));
}

所以,我现在的问题是:我怎样才能做同样的事情来请求扫描总是可用的蓝牙?我应该使用什么意图?

进入屏幕的方法如下:

对于Nougat:打开Android设置,进入位置,右上角的3个点菜单,扫描。

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

对于Pie:打开Android设置,进入位置,高级,扫描。

EN

回答 2

Stack Overflow用户

发布于 2019-05-20 14:01:15

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

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

票数 1
EN

Stack Overflow用户

发布于 2019-03-09 13:54:46

连续扫描蓝牙会影响你的设备性能和电池寿命。所以考虑一下这是你自己的风险。

下面的代码一直在检查设备,即使在发现完成之后也是如此。首先,确保通过以下方法注册接收方

代码语言:javascript
复制
IntentFilter intentFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
registerReceiver(myReceiver, intentFilter);

试着运行代码。

代码语言:javascript
复制
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();
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55068549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档