Я хочу, чтобы мое приложение автоматически подключалось к уже подключенному устройству Bluetooth при перезапуске приложения. Ниже приведена процедура, которую я выполняю: -Android: широковещательный приемник не получает BluetoothDevice.ACTION_ACL_CONNECTED при перезапуске приложения
[Изначально] Устройство Bluetooth установлено «ВКЛ»: затем при запуске приложения.
[Поведение] -> устройство Bluetooth получает в паре и подключен успешно (Intent «ACTION_ACL_CONNECTED» получено)устройство Bluetooth является «ON»: Закрыл приложение, а затем начал приложение снова.
[Поведение] -> Несмотря на то, что он подключен, как показано на настройке Bluetooth, а широковещательный приемник не получает Intent 'ACTION_ACL_CONNECTED'.
Примечание: - При закрытии приложения он не отключает соединение Bluetooth. Итак, при успешном подключении приложение сразу переходит на HomeScreen. В противном случае приложение переходит на экран с кнопкой, которая переводит его в настройку Bluetooth (onClickListener присутствует в коде ниже)
Я новичок в разработке Android, поэтому я действительно не знаю, где я буду не так. Я искал решения для подобных вопросов и применял их, но не имел никакого эффекта.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
registerReceiver(mReceiver, filter);
IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
this.registerReceiver(mReceiver, filter1);
m_app = (BtApp) getApplication();
imagebt = (ImageView) this.findViewById(R.id.imagebt);
imagebt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
final Toast tag = Toast.makeText(getApplicationContext(), "Connect to device", Toast.LENGTH_LONG);
tag.show();
new CountDownTimer(1000, 1000)
{
public void onTick(long millisUntilFinished) {tag.show();}
public void onFinish() {
//tag.show();
}
}.start();
if(mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()){
mBluetoothAdapter.startDiscovery();
}
Intent intentBluetooth = new Intent();
intentBluetooth.setAction(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(intentBluetooth);
}
});
}
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
m_app.m_main.setupCommPort();
device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
m_app.m_device = device;
isconnected = true;
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if (m_app.m_main.m_BtService != null && m_app.m_main.m_BtService.getState() != BluetoothRFCommService.STATE_CONNECTED) {
m_app.m_main.m_BtService.connect(device, false);
}
}
}, 3500);
} else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
isconnected = false;
m_app.m_main.tabHost.setCurrentTab(0);
}
}
};
@Override
protected void onStop()
{
unregisterReceiver(mReceiver);
super.onStop();
}