我的应用程序是使用obd扫描仪(提供蓝牙接口)来获取汽车数据。我想在此应用程序中添加一个功能,那就是只要汽车的obd(已配对)在手机的蓝牙范围内,应用程序都应自行打开。
我的实现想法是,如果配对设备中的任何一个包含子字符串obd(小写或大写),则在广播接收器中获取配对设备的列表,然后应用应自行打开。
我所取得的成就: 每当任何包含obd Sub字符串的蓝牙设备与我的手机连接时,我的应用程序便会自行打开。连接过程由我通过设备设置手动完成。
内部广播代码以获取上述结果:
public class BrodcastBlueTooth extends BroadcastReceiver {
public BrodcastBlueTooth() {
}
@Override
public void onReceive(Context context, Intent intent) {
String DeviceName=null;
String action = intent.getAction();
// Log.d("BroadcastActions", "Action "+action+"received");
int state;
BluetoothDevice bluetoothDevice;
switch(action)
{
case BluetoothDevice.ACTION_ACL_CONNECTED:
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(context, "Connected to "+bluetoothDevice.getName(), Toast.LENGTH_SHORT).show();
Log.d("BroadcastActions", "Connected to "+bluetoothDevice.getName());
DeviceName=bluetoothDevice.getName();
if (DeviceName.contains("OBD")){
Intent newIntent = new Intent();
newIntent.setClassName("com.quad14.obdnewtry", "com.quad14.obdnewtry.activity.MainActivity");
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(newIntent);
}else if(DeviceName.contains("obd")){
Intent newIntent = new Intent();
newIntent.setClassName("com.quad14.obdnewtry", "com.quad14.obdnewtry.activity.MainActivity");
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(newIntent);
}
break;
case BluetoothDevice.ACTION_ACL_DISCONNECTED:
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Toast.makeText(context, "Disconnected from "+bluetoothDevice.getName(),
// Toast.LENGTH_SHORT).show();
break;
}
我在清单中声明广播,因此它始终在后台运行。
我通过以下代码获得了配对的设备列表:
public void PairedDevice(){
Set<BluetoothDevice> pairedDevices = BTAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
PaiedDevices.add(device.getName());
Log.e("DeviceName", String.valueOf(PaiedDevices));
PairDeviceFlag=true;
}
}
}
从这一点上我应该怎么做才能获得理想的结果。任何其他方式也欢迎。