Estimote iBeacon:后台监控(Android)

2023-12-12

我希望当我的应用程序打开但处于后台时收到推送通知。现在我已经更改了 Estimote 演示,当我的应用程序位于前台时,我的应用程序会向我发出通知,但没什么用处。 我在这里发布了我的 NotifyDemoActivity 类的代码,该代码在我打开应用程序时立即被调用

public class NotifyDemoActivity extends Activity {
  private static final String TAG = NotifyDemoActivity.class.getSimpleName();
  private static final int NOTIFICATION_ID = 123;
  private BeaconManager beaconManager;
  private NotificationManager notificationManager;
  private Region region;
  private long[] mVibratePattern = { 0, 200, 200, 300 };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notify_demo);
    getActionBar().setDisplayHomeAsUpEnabled(true);

    beacon.getMinor());
    region = new Region("rid", null, null, null);
    notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    beaconManager = new BeaconManager(this);

    beaconManager.setBackgroundScanPeriod(TimeUnit.SECONDS.toMillis(1), 0);

    beaconManager.setMonitoringListener(new MonitoringListener() {
      @Override
      public void onEnteredRegion(Region region, List<Beacon> beacons) {
        postNotification("Entered region");
      }

      @Override
      public void onExitedRegion(Region region) {
        postNotification("Exited region");
      }
    });
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
      finish();
      return true;
    }
    return super.onOptionsItemSelected(item);
  }

  @Override
  protected void onResume() {
    super.onResume();
    notificationManager.cancel(NOTIFICATION_ID);
    beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
      @Override
      public void onServiceReady() {
        try {
          beaconManager.startMonitoring(region);
        } catch (RemoteException e) {
          Log.d(TAG, "Error while starting monitoring");
        }
      }
    });
  }

  @Override
  protected void onDestroy() {
    notificationManager.cancel(NOTIFICATION_ID);
    beaconManager.disconnect();
    super.onDestroy();
  }

  private void postNotification(String msg) {
    Intent notifyIntent = new Intent(NotifyDemoActivity.this, NotifyDemoActivity.class);
    notifyIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivities(
      NotifyDemoActivity.this,
      0,
      new Intent[]{notifyIntent},
      PendingIntent.FLAG_UPDATE_CURRENT);
    Notification notification = new Notification.Builder(NotifyDemoActivity.this)
    .setSmallIcon(R.drawable.beacon_gray)
    .setContentTitle("Notify Demo")
    .setContentText(msg)
    .setAutoCancel(true)
    .setContentIntent(pendingIntent)
    .setVibrate(mVibratePattern)
    .build();
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.defaults |= Notification.DEFAULT_LIGHTS;
    notificationManager.notify(NOTIFICATION_ID, notification);

    TextView statusTextView = (TextView) findViewById(R.id.status);
    statusTextView.setText(msg);
  }
}

你应该持有BeaconManager在您的应用程序类中而不是在活动中。

活动将被停止、销毁并BeaconManager将停止监控。另一方面,应用仍将具有参考性,并将继续监测。

当在监视应用程序时发现信标时,类可以发布通知。当用户决定点击它时,它会触发一些活动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Estimote iBeacon:后台监控(Android) 的相关文章

  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • CookieManager.getInstance().removeAllCookie();不删除所有cookie

    我在应用程序的 onCreate 中调用 CookieManager getInstance removeAllCookie 我遇到了一个奇怪的问题 我看到 GET 请求中传递了意外的 cookie 值 事实上 cookie 值是一个非常非
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项

随机推荐

  • iOS 中是否可以根据 RGB 值获取颜色名称?

    我想根据一些 RGB 值获取颜色名称 我怎样才能做到这一点 有可能的 准备一个用 RGB 名称标记的颜色列表就足够了 然后找到按某种度量最接近的颜色 欧几里得距离就可以了 有一篇文章来自xkcd进行色彩调查 他们甚至为您提供调查数据库供您摆
  • 无法获取在 include_once 中运行的参数

    当我在没有任何 GET 参数的情况下调用 include 一次时 它可以工作 但是在trackinglogs php 上设置 GET 参数时 没有任何反应 请建议我做什么 我的 php 代码是 firstfile php include o
  • 如何从 Vaadin/Spring 应用程序提供静态资源?

    我有 Vaadin Web 应用程序与 spring security 集成进行身份验证 Vaadin servlet 的配置非常简单
  • PHP / MySQL 中的简单递归树

    我在 MySQL 中有这个表 id name mother 1 grandma 0 2 myuncle 1 3 mymom 1 4 me 3 5 mysister 3 6 myson 4 7 new grandma son 1 我将此信息放
  • 如何在我的代码中使用 Matlab 引擎(用于调用 `engOpenSingleUse()`)?

    我正在尝试向 Matlab 引擎发送简单的字符串命令 这是我的代码 我的代码中其他任何地方都没有与 Matlab API 相关的代码 除了 include engine h line void MatlabPlotter DrawInMat
  • 当使用MOV助记符将字符串加载/复制到MASM中的内存寄存器时,字符是否以相反的顺序存储?

    我想知道使用 MOV 指令将字符串复制到寄存器中是否会导致字符串以相反的顺序存储 我了解到 当 MASM 将字符串存储到定义为单词或更高级别 dw 和更大尺寸 的变量中时 字符串将以相反的顺序存储 当我将字符串复制到寄存器时 是否会发生同样
  • 将 0 转换为 DATE 和 DATETIME

    我只是偶然发现了这一点 找不到任何技术解释 在 SQL Server 2014 中 SELECT CAST AS DATETIME 1900 01 01 00 00 00 000 SELECT CAST 0 AS DATETIME 1900
  • 通过多处理获取函数的标准输出

    我有一个 Python 函数 它接受一个参数并将许多文本行打印到标准输出 我获取该函数的标准输出并提取相关信息 对该函数的调用成本非常高 需要几分钟才能完成 为了加快计算速度 我使用 Python 多处理来并行运行该函数 现在的问题是如何区
  • 使用 arrayFilters 更新 MongoDB 中的嵌套子文档

    我需要修改另一个数组内的数组内的文档 我知道 MongoDB 不支持多个 同时迭代多个数组 但他们引入了数组过滤器为了那个原因 看 https jira mongodb org browse SERVER 831 MongoDB的示例代码
  • [未处理的承诺拒绝:错误:位置“imageURL”不可读 - Expo React Native

    我正在尝试使用 expo FileSystem 将 firebase 图像 URL 转换为 base64 但出现以下错误 未处理的承诺拒绝 错误 位置 https pngimg com uploads birds small birds P
  • 我可以根据另一个关联添加一个关联吗?

    我的用户模型如下所示 User habtm Roles Role habtm Users RoleExtension belongs to Role mysql 表 users id roles id roles users user id
  • 通过httpd.conf将http重定向到https

    需要把http改成https http myServerName itf sheldon imex ajax share details v1 CH0012221716 issuer contact json Should change t
  • .NET 到远程 SQL Server 在一台计算机上速度较慢,在另一台计算机上则不然

    我正在新设置的 Windows 7 桌面上开发 NET 4 0 应用程序 在该应用程序中 对远程数据库的查询非常慢 相同的应用程序在我到目前为止一直使用的笔记本电脑上运行得非常快 我现在使用的台式机比笔记本电脑快很多 我正在使用 VPN 连
  • 使用 Apache POI 在受保护的工作表中启用过滤和排序

    我创建了一个包含受保护工作表的工作簿 因为我只需要极少数可编辑的列 虽然我想让用户能够对列进行排序和过滤 谷歌搜索到目前为止还没有成功 任何形式的帮助将不胜感激 如果它是一个XSSFSheet then XSSFSheet lockAuto
  • eclipse 库包 - 无法从某些库导出包

    我在 eclipse 3 5 中创建了一个简单的插件项目 它只存储第三方库 供 eclipse RCP 应用程序中的其他包使用 按预期工作 我编辑了清单 导出了所需的包并将库添加到构建路径 项目构建路径以及清单构建路径 几天后 我向该项目添
  • NetBeans 8.1 中没有 Tomcat?

    我刚刚安装NetBeans 8 1 RC 我找不到任何阿帕奇雄猫 小服务程序容器 在以前的版本中 它包含在Java EE 下载捆绑包NetBeans IDE 的 现在可选 As of NetBeans 8 1 RC NetBeans 安装程
  • QWebEngineView - Javascript 回调

    我最终想要完成的是捕获用户在网站中输入的用户名和密码 例如 如果用户输入 电子邮件受保护 作为 Facebook 登录的电子邮件地址 然后单击提交 我想将该电子邮件地址存储在我的 PyQt 应用程序中 我最接近实现这一目标的方法是使用一系列
  • R:在向量模式下使用mgsub时如何防止内存溢出?

    我有一个很长的字符向量 例如 Hello World 等 170 万行 我需要使用两个向量之间的映射来替换其中的单词 并将结果保存在同一个向量中 这是一个简单的例子 library qdap line c one two one four
  • 在 C 中处理多字节(非 ASCII)字符

    我正在尝试做我自己的 wc unix 过滤器 版本 但我遇到了非 ASCII 字符的问题 我对一个文本文件进行了十六进制转储 发现这些字符占用了多个字节 所以它们不适合炭化 有什么方法可以从文件中读取这些字符并像 C 中的单个字符一样处理它
  • Estimote iBeacon:后台监控(Android)

    我希望当我的应用程序打开但处于后台时收到推送通知 现在我已经更改了 Estimote 演示 当我的应用程序位于前台时 我的应用程序会向我发出通知 但没什么用处 我在这里发布了我的 NotifyDemoActivity 类的代码 该代码在我打