BroadcastReceiver 和 ACTION_BOND_STATE_CHANGED 在 Android 9.0 中部分工作

2024-04-08

我试图通过广播接收器捕获与 android 的配对过程中的事件。看起来,BluetoothDevice.BOND_BONDING是有效的,但是BluetoothDevice.BOND_BONDED not.

在旧的 Android 版本中,此功能有效(尝试过 Android 6 和 7),但对于较新的版本(尝试过 Android 9,多种设备),此功能不起作用。为了重现这个问题,我做了一个简单的程序:

Java文件:


package com.example.bluetoothtest;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    BroadcastReceiver receiver;
    BluetoothDevice mDevice;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)){
                    mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    if (mDevice.getBondState() == BluetoothDevice.BOND_BONDED) {
                        //means device paired
                        Log.d("bt", "bonded");
                    }
                    else if(mDevice.getBondState() == BluetoothDevice.BOND_BONDING) {
                        Log.d("bt", "bonding");
                    }
                }
            }
        };
    }

    @Override
    protected void onStart() {
        super.onStart();
        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
        registerReceiver(receiver, filter);
    }

    @Override
    protected void onStop() {
        super.onStop();
        unregisterReceiver(receiver);
    }
}

显现:


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bluetoothtest">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

</manifest>

还有其他人注意到这个问题吗?我是否缺少权限?在网上找不到任何相关内容。


您应该尝试检索EXTRA_BOND_STATE像那样 :

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

BroadcastReceiver 和 ACTION_BOND_STATE_CHANGED 在 Android 9.0 中部分工作 的相关文章

  • SugarORM 错误或缺少数据库

    我尝试让 Android 项目与 SugarORM 一起使用 但是 我遇到了以下错误 引起原因 android database sqlite SQLiteException 没有这样的表 DOCUMENT 代码1 编译时 INSERT O
  • 当用户快速滚动时,如何延迟列表适配器中视图的加载

    我的列表视图中有从互联网下载的图像 我想在 getView 中添加一些内容 以便在用户快速滑动 滚动时它不会下载图像 我怎样才能开始这样做呢 您可以按照以下步骤延迟 ListView 中视图的加载 首先 你应该让你的ListView对象和Y
  • POST 请求出现 500 内部服务器错误

    这是我向服务器发送 POST 请求的代码 要发布到服务器的 JSON User Name dog Password 123 我如何创建 JSON 对象 object new JSONObject JSONObject jsonObject
  • 如何向 ListView 添加粘性标题?

    我有一个 listView 所以我想添加一个粘性标头 以便它粘在 listView 的顶部 当 listView 中开始不同的类别时 不同的标头会取代它 就像联系人一样 其中 a 为粘性标头位于顶部 直到 b 出现 有没有图书馆可以做 我正
  • 如何访问对话框中的 EditText 字段?

    如何访问对话框中的 EditText 字段 将 EditText 小部件放入对话框中
  • SQLite 中的 where 子句在 android 中不起作用:(

    当尝试在 SQLite 中查询某些数据时 我遇到了一个恼人的错误 这是我的代码 Cursor cursor db query TABLE IMAGES new String id name compareToThis null null n
  • 如何修复 Kotlin JobCancellationException?

    由于 Kotlin JobCancellationException 我发生了崩溃 以下是有关崩溃的详细信息 kotlinx coroutines JobCancellationException Job was cancelled job
  • 字符串生成器最大长度

    我想知道字符串生成器 或字符串缓冲区 的最大容量是多少 我的 Android 应用程序中有一个静态变量 它应该保存日志字符串 它最多可以容纳 130 行和大约 10000 个字符 我如果我附加更多内容 但它只是不显示 没有错误 没有例外 所
  • 如何知道 TTS 何时完成?

    我正在 Android 上实现交互式语音响应应用程序 我想知道如何确定何时tts speak 函数已完成通话 因此我可以调用我的语音识别器函数 public class TTSActivity extends Activity implem
  • 如何删除旧版本的Android Studio

    我必须释放硬盘中的一些空间 并寻找要删除的内容 我发现我有许多引用旧版本的 Android Studio AS 文件夹 我发现文件夹的路径是 C Users mysuername 我想要的是删除旧版本并只保留最新版本的方法 当时是 ASPr
  • 如何从我的android联系人列表中的人名获取电话号码

    我想从我的联系人列表中的人名中获取他的电话号码 我已经使用了下面的代码 但它不能正常工作 告诉我我哪里错了 try cursor company getContentResolver query ContactsContract Data
  • 如何在具有多种字体大小的 TextView 中调整行高?

    我有一个包含 Spannable 字符串的 TextView 该字符串包含一堆文本 其中第一个单词的字体大小是字符串其余部分的两倍 问题在于 由于第一个字的大小增加 第一行和第二行之间的行间距比后续行之间的行间距大得多 http img s
  • 如何在 Android 上通过 RTMP 进行流式传输?

    我正在尝试在远程服务器上播放视频文件 视频格式为flv 服务器为Flash Media Server3 5 我将通过 RTMP 连接到服务器并使用 Android Media Player 实现视频文件的播放 真的吗 可能吗 任何帮助都是我
  • 按歌曲获取封面图片

    是否可以按歌曲而不是按专辑获取封面图片 因为我有一张自编的歌曲专辑 而且它们都有不同的封面图片 但是当我想查询它们时 我总是得到相同的图片 String ARG STRING MediaStore Audio Media ALBUM ID
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • Xamarin.Android JmDNS 绑定问题

    我开始研究 Xamarin Android 的 JmDNS 绑定 我设法构建了绑定 但无法从代码中引用它 https github com ytn3rd monodroid bindings tree master JmDNS https
  • 使 autocompletetextview 看起来像 edittext

    我正在使用 AutoCompleteTextView Roboto 自动完成文本视图 https github com johnkil Android RobotoTextView blob master robototextview sr
  • 什么是 Android DecorView?

    http developer android com reference android view Window html getDecorView http developer android com reference android
  • Android:如何获取所有可用意图过滤器的列表?

    我搜索了 Android 文档 但由于某些疯狂的原因 我无法找到所有可用意图过滤器的列表 我正在寻找一个意图过滤器 它可以执行诸如通过广播接收器通知我特定活动 例如浏览器或电子邮件 已启动或位于前台之类的操作 有人能帮我吗 PackageE

随机推荐

  • 如何在pyspark中分解数据框的多列

    我有一个数据框 其中包含类似于以下内容的列中的列表 所有列中列表的长度不相同 Name Age Subjects Grades Bob 16 Maths Physics Chemistry A B C 我想以这样的方式分解数据框 以获得以下
  • Objective-C 和 Cocoa 有什么区别?

    我正在学习 Mac 上的 Objective C Cocoa 编程 我一直使用的所有教程 书籍 博客 播客等实际上都涵盖了这两者 有没有一种简单的方法来区分哪些部分是普通的 Objective C 哪些部分来自 Cocoa Objectiv
  • 从具有不同列数的两个表中选择 *

    我如何从两个不同的表中选择不同的列 例如 SELECT username email FROM table1 UNION SELECT FROM table2 WHERE username user1 我收到错误 1222 The used
  • 在 Mac 上安装 numpy 以在 AWS Lambda 上运行

    有没有办法安装numpy在 Mac 上 以便上传到 AWS Lambda 后可以正常工作 我尝试过各种不同的方法 包括使用不同的方法pip版本 使用easy install 和以下这个帖子 https stackoverflow com q
  • 由于随机给定的字符,我无法从 firebase 更新数据

    这是我的 firebase 我不知道如何在 firebase 中输入或获取该路径 我想更改该随机字符内的密码 要更新数据库中的特定值 您必须知道该值的完整路径 如果您知道电子邮件地址 但不知道该电子邮件地址的键 则可以使用查询来查找该电子邮
  • 如何从div中获取innerHTML?

    我需要保存 div 的 innerHTML 并将其存储在 cookie 中 这是我的基本代码 The div saving function function addStatus sName getElement bottomDiv inn
  • 以编程方式确定远程桌面协议版本?

    远程桌面协议版本 6 1 更改了 RDP 会话的处理方式 将会话 0 以前表示 控制台会话 更改为非交互式会话 我需要能够从我的程序中弄清楚如何确定当前 RDP 会话正在使用哪个版本的 RD 协议 然而 我在 Windows 终端服务 AP
  • 通过 shell 脚本从文件中读取值并将值放入 WHERE 子句中

    外壳脚本 bin bash sqlplus s
  • 如何在 osx 机器上安装要在 php 中使用的“语言环境”?

    我正在开发一个需要多语言支持的网站 我正在尝试在 php 中使用语言环境 但某个语言环境 es CO 在我的开发计算机中不可用 它位于我的托管服务器上 我研究了如何添加新的区域设置 但找不到如何或在哪里获取新的区域设置文件 它应该安装在操作
  • 方法存在时出现 Java NoSuchMethodError

    我正在参考PlayerUtil getMovementSpeed player 在我的 Speed 类和 PlayerUtil 类中 我将方法定义为 public static double getMovementSpeed Player
  • Python pandas 在滚动日期窗口中最常见的值

    我有一个包含以下数据的 pandas 数据框 我想添加一个新列 对于每个日期 返回过去 3 天内最常出现的 weather type 如果结果是平局 我希望返回最近的 weather type d date 17 02 2017 18 02
  • 身份服务器流程

    IdentityServer 支持不同的 OpenId Connect 流 这些流定义在Flows https github com IdentityServer IdentityServer3 blob 4a44a9f03879c85bb
  • 如何在 ASP.NET MVC 4 中使用 Autofac 注入 HttpContextBase

    我在用ASP MVC 4 and Autofac 我已在我的中注册了以下内容global asax cs file ContainerBuilder builder new ContainerBuilder builder Register
  • 使 JButton 重叠

    我正在 Java Swing 中创建一个虚拟钢琴类型程序 我现在的钢琴键区域是一个带有水平 BoxLayout 的 JPanel 其中包含白色 JButton 作为白键 我还想添加黑键 并让它们与白键重叠 我尝试过两种不同的方法 一种是使用
  • 移动产品描述 Div Woocommerce

    我正在寻找一种方法将产品描述 div 移到我的 site inner wrap 下方的 container 之外 我已经取消注册了这些选项卡 并使用这些功能移动了我的描述 Remove all tabs remove action wooc
  • 带秒差距的完整解析器示例?

    我正在尝试为一种简单的函数式语言 有点像 Caml 制作一个解析器 但我似乎只专注于最简单的事情 所以我想知道是否有一些更完整的例子parsec解析器 超越 这就是解析 2 3 的方式 的东西 特别是术语等中的函数调用 我读过 为你写一个方
  • FB.Event.subscribe 不会因某些事件而触发

    所以我试图在用户单击 like 按钮时进行一些事件处理 我的 Facebook 按钮是通过以下方式异步创建的 function var e document createElement script e async true e src d
  • 从批处理文件激活 conda 环境并保持激活状态? [复制]

    这个问题在这里已经有答案了 我正在尝试创建一个 make bat 文件 其功能类似于 nix 系统上的 Makefile 作为 cookiecutter 项目模板的一部分 挑战在于找到一种方法能够激活 conda 环境 并在控制权传回命令提
  • 如何查看解决方案用户选项文件 (.suo) 的内容

    有没有办法查看解决方案用户选项文件 解决方案文件附带的 suo 文件 的内容 我知道它基本上被格式化为文件中的文件系统 但我希望能够查看内容 以便我可以找出解决方案和自定义的哪些方面导致它随着时间的推移变得非常大 对于原始海报来说有点晚了
  • BroadcastReceiver 和 ACTION_BOND_STATE_CHANGED 在 Android 9.0 中部分工作

    我试图通过广播接收器捕获与 android 的配对过程中的事件 看起来 BluetoothDevice BOND BONDING是有效的 但是BluetoothDevice BOND BONDED not 在旧的 Android 版本中 此