Je souhaite que mon application se connecte automatiquement au périphérique Bluetooth déjà connecté lors du redémarrage de l'application. Ci-dessous la procédure que j'effectue: -Android: Broadcast Receiver ne reçoit pas BluetoothDevice.ACTION_ACL_CONNECTED lors du redémarrage de l'application
[Initialement] L'appareil Bluetooth est activé (ON): Ensuite, au démarrage de l'application.
[Comportement] -> appareil Bluetooth se jumelé et connecté (intention « ACTION_ACL_CONNECTED » est reçu) avec succèsappareil Bluetooth est « ON »: Fermé l'application, puis a commencé à nouveau l'application.
[Comportement] -> Même s'il est connecté comme indiqué dans le paramètre Bluetooth, et Récepteur de diffusion ne reçoit pas l'intention 'ACTION_ACL_CONNECTED'.
Remarque: - À la fermeture de l'application, il ne déconnecte pas la connexion Bluetooth. Ainsi, en cas de succès, l'application de connexion va directement à l'écran d'accueil. Sinon, l'application va à un écran ayant le bouton qui prend pour paramètre Bluetooth (onClickListener présent dans le code ci-dessous)
Je suis nouveau pour le développement android, donc je ne sais vraiment pas où je vais mal. J'ai recherché les solutions pour des problèmes similaires et les ai appliqués, mais sans résultat.
@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();
}