连接蓝牙设备时启动应用程序
Posted
技术标签:
【中文标题】连接蓝牙设备时启动应用程序【英文标题】:Start application when bluetooth device is connected 【发布时间】:2017-05-21 22:53:21 【问题描述】:当连接了一些蓝牙设备时,如何在我的安卓手机中启动应用程序?
我正在尝试使用广播接收器执行此操作,但我有一个问题......当我完成活动(退出应用程序)时,广播接收器必须取消注册......所以无法收听连接的设备...
应用程序完成后,如何让这个广播接收器保持活动状态?
谢谢
编辑:
public class AutostartReceiver extends BroadcastReceiver
/**
* @param context Context
* @param intent Intent
* @return void
*/
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getAction();
switch (action)
case BluetoothDevice.ACTION_ACL_CONNECTED:
Log.v("PAREK", "cnn");
break;
case BluetoothDevice.ACTION_ACL_DISCONNECTED:
Log.v("PAREK", "dnn");
break;
我也尝试了清单初始化
<receiver
android:name=".Model.Tools.AutostartReceiver">
<intent-filter>
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED" />
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED" />
</intent-filter>
</receiver>
编辑2:
为什么?因为我希望我的应用程序只能在汽车上运行...所以当应用程序连接到汽车免提时,应用程序将启动...并且在断开连接 5 分钟后,应用程序将“终止”。
【问题讨论】:
【参考方案1】:您将希望在Service 而不是您的活动中注册广播接收器,并在onStartCommand
中返回START_STICKY
以使其即使在活动被终止后仍保持运行。示例:
@Override
public int onStartCommand(Intent intent, int flags, int startId)
return START_STICKY;
【讨论】:
如果我完成活动它不起作用,广播接收器自动什么都不做...... IDK为什么(但gps监听器仍在工作)...... @Dillon Burton 你添加权限<uses-permission android:name="android.permission.BLUETOOTH" />
和<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
了吗?
另外,是广播接收器没有触发还是它没有在你的 switch 语句中遇到 case?
广播接收器工作得很好,但只是在活动未完成时
好的,现在可以了...我只需要重新安装/清理/重建应用程序...谢谢以上是关于连接蓝牙设备时启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章