- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
altbeacon在 Android 10 上已经停止工作。为了升级到 Android 10,是否需要进行任何更改?
我已将以下权限添加到我的 AndroidManifest.xml
<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"/>
<uses-permission android:name=\"android.permission.BLUETOOTH\"/>
<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>
<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>
<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />
<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>
查看应用程序权限,我的应用程序在运行时授予了位置和 BT 权限。我开始按照 https://altbeacon.github.io/android-beacon-library/samples.html 中的规定在 onBeaconServiceConnect
上寻找信标。 。我错过了什么?
最佳答案
Android 10 添加了执行 BLE 扫描和检测 BLE 信标的新权限要求 - 任何设置 targetSdkVersion 29
或更高版本的应用都需要获取如下所述的权限,否则不需要信标将被检测到。 (如果您设置 targetSdkVersion 28
或更早版本,则在 Android 10 上运行时这些新要求不适用,因为 Android 会自动授予权限。这允许旧应用在升级到 Android 10 后继续运行而不受影响。)
如果您将项目设置为 targetSdkVersion 29
或更高版本,则需要进行以下更改:
除了将这些权限添加到 list 中之外:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
您还必须按照此处所述动态获取用户的位置权限:
private static final int PERMISSION_REQUEST_FINE_LOCATION = 1;
private static final int PERMISSION_REQUEST_BACKGROUND_LOCATION = 2;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
if (this.checkSelfPermission(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (this.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_BACKGROUND_LOCATION)) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("This app needs background location access");
builder.setMessage("Please grant location access so this app can detect beacons in the background.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@TargetApi(23)
@Override
public void onDismiss(DialogInterface dialog) {
requestPermissions(new String[]{Manifest.permission.ACCESS_BACKGROUND_LOCATION},
PERMISSION_REQUEST_BACKGROUND_LOCATION);
}
});
builder.show();
}
else {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Functionality limited");
builder.setMessage("Since background location access has not been granted, this app will not be able to discover beacons in the background. Please go to Settings -> Applications -> Permissions and grant background location access to this app.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
builder.show();
}
}
} else {
if (this.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION},
PERMISSION_REQUEST_FINE_LOCATION);
}
else {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Functionality limited");
builder.setMessage("Since location access has not been granted, this app will not be able to discover beacons. Please go to Settings -> Applications -> Permissions and grant location access to this app.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
builder.show();
}
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_FINE_LOCATION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "fine location permission granted");
} else {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Functionality limited");
builder.setMessage("Since location access has not been granted, this app will not be able to discover beacons.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
builder.show();
}
return;
}
case PERMISSION_REQUEST_BACKGROUND_LOCATION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "background location permission granted");
} else {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Functionality limited");
builder.setMessage("Since background location access has not been granted, this app will not be able to discover beacons when in the background.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
builder.show();
}
return;
}
}
}
如果您没有看到此功能,请转到“设置”->“应用程序”->“您的应用程序”->“权限”并验证是否已授予位置。
关于ibeacon - Altbeacon 在 Android10 上停止工作并且 didEnterRegion 根本没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58059097/
我知道 iBeacons 可以将人们发送到应用程序,据我所知,iOS 设备和 Android 设备(4.3+)都可以运行检测它们的应用程序。我想知道是否不是信标将您发送到商店的特定应用程序,而是它是否
Google 的 Proximity Beacon API 文档到处都以 Eddystone 为例: https://developers.google.com/beacons/proximity/r
我们正在与 iBeaons 在跨国多个地点讨论大规模部署方案。提出的问题是 iBeacons 用来宣传其存在的 ID 是否是唯一的?因为我们的客户想要真正确定应用程序只响应特定的 iBeacons,而
我找到了这个关于使用 iBeacon 开发应用程序的好教程: http://www.appcoda.com/ios7-programming-ibeacons-tutorial/ 但是对于这个实现,正
iOS 设备是否可以作为 iBeacon 进行广播并同时监视 iBeacon?我目前正在使用自定义树莓派解决方案执行此操作,并想知道它是否可以转换到设备。 最佳答案 是的,如果应用程序在前台,您可以执
我在网上看到声称新发布的 iOS 7.1 支持 iBeacon。 具体: 系统应该仍会通知您的应用程序didEnterRegion/didExitRegion 事件,即使用户明确杀死你的应用程序。 d
我想知道 iOS 设备是否可以在监听其他 iBeacon 时充当 iBeacon。根据我的阅读,答案似乎应该是“否”,但我非常感谢您给出明确的答案。我会自己测试一下,但我还没有购买额外的 iOS 设备
我正在为 iOS 编写一个应用程序,该应用程序要求该应用程序同时通告 iOS iBeacon 以及通告外围服务。有必要宣传该服务,而不是简单地在外设上发现该服务,因为用例需要中央(用 BLE 术语)在
我正在开发一个 iOS 应用程序,可以检测我周围的 iBeacon 设备。据我了解,我们需要知道特定的 UUID 才能扫描它们。 这里是前任:Search for all iBeacons and n
我已成功修改 reference implementation app Android Beacon Library的使用以下 beacon layout ,以便它检测到我手边的 iBeacon 设备
我正在尝试将 ibeacon 功能集成到 Ionic 2 应用程序中。 我正在使用 https://ionicframework.com/docs/native/ibeacon/插入。 按照文档中提到
我正在尝试编写一个 Cordova 插件,它与 Android 的 Radius Networks iBeacon 库交互。现在,我知道该库是为与 Activity/Service 一起使用而设计的,
我已经检查了以下信标的规范: Eddystone Protocol Specification AltBeacon Protocol Specification v1.0 ibeacon Payloa
我在控制台中有这条消息,但我已经检查了 locationManager.monitoredRegions 和 locationManager.rangedRegions 我的应用程序没有监控到很多区域
我将使用 iOS 7 和蓝牙 4.0 启动 iBeacon 的项目代码。 http://www.appcoda.com/ios7-programming-ibeacons-tutorial/ 准备好上
这个问题已经有答案了: iBeacon / Bluetooth Low Energy (BLE devices) - maximum number of beacons (5 个回答) 已关闭 8 年
我目前有一个应用程序设置可以使用 Azure 通知中心接收远程通知。现在,我想扫描 iBeacons,看看附近是否有特定的 iBeacons,如果是,则不应向用户显示通知。但是,如果看不到信标,用户应
我正在尝试在没有用于测试的实际信标的开发情况下实现 iBeacon。我正在使用“Beacon Bits”,它是在 iPad 上运行的模拟器。我已经尝试过其他信标模拟器来消除模拟器可能是问题的可能性。所
目前我有 3 个发射器和 1 个接收器(4 个设备是 iPhone)设置允许我进行三边测量。 但是,我发现信号波动很大(即使 4 个设备稳定地放在 table 上)。有什么策略可以稳定信号吗? 我应该
我正在使用 tricekit,在他们的示例 sdk 中,我看到了这些背景模式。 我只需要 ibeacon 来触发对我的设备的通知,我应该允许哪些权限? 上次,我允许“充当蓝牙乐配件”,应用商店拒绝了我
我是一名优秀的程序员,十分优秀!