连接蓝牙设备时启动应用程序

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 你添加权限&lt;uses-permission android:name="android.permission.BLUETOOTH" /&gt;&lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /&gt;了吗? 另外,是广播接收器没有触发还是它没有在你的 switch 语句中遇到 case? 广播接收器工作得很好,但只是在活动未完成时 好的,现在可以了...我只需要重新安装/清理/重建应用程序...谢谢

以上是关于连接蓝牙设备时启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙设备连接时 iOS Core 蓝牙通知应用

蓝牙配对请求连接

蓝牙设备连接/断开时广播?

如何自动连接 CBPeripheral(带有 iBeacon + 蓝牙芯片的 BLE 设备)并且应用程序未运行

Mac电脑蓝牙不可用怎么办

手机蓝牙连接其他手机,传输文件时,怎么找到对方设备