私は、Bluetooth Leデバイスの起動時にユーザがBluetooth Leデバイスの状態を知ることができ、接続状態が次のように更新されるアプリケーションを開発しようとしています。私は、BleサービスからBroadcastを送信し、それをonResume of Homeフラグメントにキャッチし、その後ステータステキストビューでそれを更新することによって、それを実装しようとしました。ステータスは更新されますが、フラグメントを変更してホームフラグメントに戻った場合、Bluetooth Leデバイスが接続されているにもかかわらず、ステータスを表示するためのテキストビューが空白になります。この問題を解決して、デバイスが接続されていて切断されている場合は切断されていますか?Bluetooth Leデバイスの接続/切断状態を常に表示する方法
どのような指導も高く評価されます。ここ
は、私はあなたのBleServiceにBleservice.java HomeFragment.java
public class HomeFragment extends Fragment
{
private BroadcastReceiver mReceiver;
@Override
protected void onResume() {
super.onResume();
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Bleservice.ACTION_GATT_CONNECTED.equals(action)) {
mConnected = true;
updateConnectionState(R.string.connected);
} else if (Bleservice.ACTION_GATT_DISCONNECTED.equals(action)) {
mConnected = false;
updateConnectionState(R.string.disconnected);
}
}
};
getActivity().registerReceiver(mReceiver,makeGattUpdateIntentFilter());
}
private void updateConnectionState(final int resourceId) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
tv_connected_disconnected.setText(resourceId);
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
getActivity().unregisterReceiver(mReceiver);
}
private static IntentFilter makeGattUpdateIntentFilter() {
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Bleservice.ACTION_GATT_CONNECTED);
intentFilter.addAction(Bleservice.ACTION_GATT_DISCONNECTED);
return intentFilter;
}