从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明。按照官方指引,如果要提高位置更新频率,需要后台应用提供一个前台服务通知告知。如果您需要自己参考官方指引来完成设置,可以参考之前我们提供的github示例。
从定位SDK v3.8.0版本开始,我们将这一操作封装到了定位SDK中,您在使用过程中只需要调用一个接口就可以为您的应用创建一个前台服务通知,当您的应用切换到后台后仍然有一个前台服务通知存在,以此规避Android 8.0对后台定位的限制。这部分内容将对这一功能进行介绍。
第一步,创建一个通知栏
您需要创建一个通知栏,下面的代码是一个简单示例,具体请您根据自己的业务进行相关修改。
private static final String NOTIFICATION_CHANNEL_NAME = "BackgroundLocation";
private NotificationManager notificationManager = null;
boolean isCreateChannel = false;
@SuppressLint("NewApi")
private Notification buildNotification() {
Notification.Builder builder = null;
Notification notification = null;
if(android.os.Build.VERSION.SDK_INT >= 26) {
//Android O