BroadcastReceiver是一个响应系统范围广播公告的Android组件。
如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <receiver android:name=".MediaButtonReceiver" android:exported="true" android:priority="10000" > <intent-filter > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> public class MediaButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { android.util.Log.d("TAG", "Bluetooth onPlay: "+intent.getAction()); if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event != null && event.getAction() == KeyEvent.ACTION_DOWN) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { // Handle play/pause event } } } } } 并像这样注册到调用活动 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); 并且还在应用程序中的广播接收器下面实现了 public class BluetoothHeadsetReceiver extends BroadcastReceiver implements BluetoothProfile.ServiceListener { private static final String TAG = "BluetoothHeadsetReceiver"; private BluetoothHeadset bluetoothHeadset; @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; Log.d(TAG, "Bluetooth Headset connected"); } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; Log.d(TAG, "Bluetooth Headset disconnected"); } } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "Bluetooth Headset onReceive : "+action); if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_DISCONNECTED); if (state == BluetoothHeadset.STATE_CONNECTED) { Log.d(TAG, "Bluetooth Headset connected"); } else if (state == BluetoothHeadset.STATE_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset disconnected"); } } else if (BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_AUDIO_DISCONNECTED); if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) { Log.d(TAG, "Bluetooth Headset audio connected"); // Handle button click events or other actions here } else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset audio disconnected"); } }else{ Log.d(TAG, "Bluetooth Headset onReceive else : "); } } public void register(Context context) { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { bluetoothAdapter.getProfileProxy(context, this, BluetoothProfile.HEADSET); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); filter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); context.registerReceiver(this, filter); } else { Log.e(TAG, "Bluetooth is not supported on this device"); } } public void unregister(Context context) { context.unregisterReceiver(this); if (bluetoothHeadset != null) { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset); } } } 在调用 Activity OnCreate() 方法中注册以下代码。 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); if(gc.hasBTPermission(this, ConstantStrings.BLUETOOTH_PERMISSION)) { if (BluetoothManager.getInstance().isBluetoothHeadsetAvailable()) { headsetReceiver = new BluetoothHeadsetReceiver(); headsetReceiver.register(this); BluetoothManager.getInstance().initBluetooth(); } } 但不接收蓝牙耳机播放,暂停点击事件仅接收应用程序中的蓝牙连接和断开事件。 我想基于蓝牙点击事件呼叫接受和挂断呼叫,但不在应用程序中接收事件。 蓝牙 HID 配置文件/服务始终由设备的底层操作系统处理。只需订阅操作系统的关键事件即可。在 Android 中,应用程序可以通过覆盖 MediaSession.Callback.onMediaButtonEvent(Intent) 来覆盖默认行为。在这种情况下,应用程序可以/需要自行处理所有 API 细节。
Android 蓝牙适配器未发出 ACTION_DISCOVERY_FINISHED
我有一个带有广播接收器设置的课程。接收器侦听以下操作: ACTION_FOUND ACTION_DISCOVERY_STARTED ACTION_DISCOVERY_FINISHED 找到并启动的操作将被...
不确定这是否与我尝试在react-native模块中使用它有关,它或多或少是一样的——除非在ReactContextBaseJavaModule中初始化它是一个问题。 一切似乎...
为什么我的应用程序没有出现在打开txt文件的应用程序列表中?
我有一个文本阅读器应用程序,旨在当我单击文本文件打开它时接收来自 Android 系统的意图。但我的应用程序不在系统弹出的列表中。下面是我的代码:
Android 13 RECEIVER_EXPORTED 的解释正确吗?
这是谷歌对RECEIVER_EXPORTED、RECEIVER_NOT_EXPORTED的解释: 选择广播接收器是否应导出并可见 到设备上的其他应用程序。如果这个接收器是
我正在使用 Firebase 创建一个习惯跟踪器,它可以选择记住一天中的一小时和一分钟来显示您创建的习惯的通知,问题是当您创建一个新习惯时...
Android BroadcastReceiver 无法接收短信广播
在我的Android应用程序中,我尝试使用BroadcastReceiver来收听传入的短信。 但由于某种原因,onReceive方法从未被调用,而且似乎连构造函数都没有运行......
我本来应该开发一个 IPTV 系统,现在我必须弄清楚提供商如何同时从卫星广播多个频道 是不是像特殊接收那样由硬件管理...
我想在手机关机时在sharedPreferences上存储一些数据。 我有一个用于关闭操作的广播接收器。问题是它有时有效,有时则无效。 ...
所以这是我的广播接收器 公共类 IncomingSMSListener 扩展 BroadcastReceiver { 私有静态最终字符串 SMS_EXTRA_NAME = "pdus"; @覆盖 公共无效onReceive(上下文上下文,...
因此,对于 Android 13,我们在使用以下方法时会收到以下警告: 上下文.registerReceiver( /* 接收器 = */ 接收器, /* 过滤器 = */ 意图过滤器, ) 接收器丢失
val IntentFilter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { ContextCompat.registerReceiver(
在警报管理器应用程序中。 这是我的调度程序类: 类 AndroidAlarmScheduler(val context: Context) : AlarmScheduler { val AlarmManager = context.getSystemService(Context.ALARM_SERVICE)...
在Android 14/SDK 34中使用registerReceiver的正确方法是什么?
我在下面的代码中收到以下警告 对于为 IntentFilter 注册的不受保护的广播,hardwareScanBroadcastReceiver 缺少 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED 标志
BroadcastReceiver 中 onReceive 方法中的意图 null 的额外内容
我有一个问题,我正在尝试设置 Android 通知,但是当我安排带有额外内容的意图时,额外内容会显示为空。 我创建意图和待处理意图的代码...
mainTest(ru.myitschool.lab23.InstrumentedTestLab46)中的错误: java.lang.RuntimeException: java.lang.Throwable: ' android.widget.TextView 和 view.getText() 的实例,带或不带
我是android开发新手,我在这个问题上挣扎了一段时间,如果你能帮助我,那就太好了。 :) 我尝试构建一个可以在手机之间传输数据的应用程序(我...
Ionic Android 广播事件从 javascript 到本机
我正在尝试通过广播插件将事件从javascript(具体来说是角度)发送到android:https://github.com/bsorrentino/cordova-broadcaster 在用户界面中,我使用以下命令触发本机事件:
如何在不使用 MediaSessionConnector 的情况下以和平且兼容的方式手动处理 Media3 的媒体按钮操作? 以前,我曾经使用
尝试实现Android共享表,并遵循官方文档。该表出现并且共享按预期进行。然而,广播接收器永远不会触发。这是代码: 在...