Ответ 1
Я боролся с той же проблемой. Чтобы исправить это, вы должны включить "Местоположение" (GPS) в настройках телефона , а также запрашивать разрешение на размещение в приложении во время выполнения. Оба должны быть выполнены для правильной работы сканирования.
Чтобы запросить разрешение на размещение, поместите в диалоговом окне или понравившемся следующее:
yourActivity.requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, yourPermissionRequestCode);
и реализовать:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
if(requestCode == yourPermissionRequestCode)
{
... //Do something based on grantResults
}
}
в yourActivity
и обрабатывать все, что пользователь выбирает. Вам также необходимо сделать следующее, чтобы включить службы определения местоположения вашего устройства:
Intent enableLocationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
yourActivity.startActivityForResult(enableLocationIntent, yourServiceRequestCode);
Вы можете проверить, включил ли пользователь службы определения местоположения, выполнив:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == yourServiceRequestCode)
{
...//Do whatever you need to
}
}
в yourActivity
. Вы также можете вручную включить службы местоположения (GPS), выполнив следующие действия:
Enter phone settings -> Select "Location" -> Then turn it on
В настройках телефона он должен выглядеть так:
Или, как в раскрывающемся списке быстрых настроек:
После того, как пользователь включил разрешение и начал службы определения местоположения, вы должны начать сканирование. Я заметил, что если вы уже сканируете, когда вы включаете разрешение/включаете службу определения местоположения, оно будет все еще не помещают ничего в ваш onScanResults
Я не уверен, что это ошибка или "функция" для рекламы iBeacons/Bluetooth (ПРИМЕЧАНИЕ: реклама как в продаже продуктов, не технической рекламы Bluetooth), чтобы позволить компаниям видеть ваше местоположение и направлять вас туда, где они хотите.
Надеюсь, что эта проблема устранена!
ИЗМЕНИТЬ
Я хотел добавить: вам нужно только это для СКАНИРОВАНИЯ. Когда вы подключитесь к устройству BLE, вы можете отключить службу определения местоположения на своем телефоне, и вы все равно будете подключены к вашим устройствам. Тем не менее, вы не можете обнаружить или подключиться к каким-либо новым устройствам, и все рекламные устройства упадут с onScanResults