안드로이드 TextView에 블루투스의 현재 연결 상태 표시하기

조회수 535회

안녕하세요. Java 를 이용해 안드로이드 개발을 하고 있는 학생입니다. 제가 원하는 건 아래의 이미지처럼 "Bluetooth Conn Stats" TextView 옆에 TextView를 하나 더 만들어서 블루투스의 연결 상태에 따라서 TextView에 연결 상태를 표시해주는 기능입니다. 이미지

그리고 아래 이미지는 이 기능의 UI를 구현한 이미지 입니다.

이미지

XML 코드 입니다 :

(가운데 TextView는 빈 공간을 위한 기능없는 TextView 입니다.)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#c0c5ce"
    android:paddingLeft="5dp"
    android:paddingTop="5dp"
    android:paddingRight="5dp"
    android:paddingBottom="5dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity=""
        android:layout_weight="1"
        android:autoSizeTextType="uniform"
        android:background="@drawable/rounded_corner"
        android:text="Bluetooth Conn Stats"
        android:textAlignment="center"
        android:textColor="#ffffff" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/BTStat"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_weight="1"
        android:autoSizeTextType="uniform"
        android:background="@drawable/rounded_corner"
        android:textAlignment="center"
        android:textColor="#ffffff" />
</LinearLayout>

MainActivity의 코드 입니다 :


private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);

            // 블루투스 상태 변경 시 상단에 표시
            switch (state) {
                case BluetoothAdapter.STATE_OFF:
                    btConStat.setText("Bluetooth Off");
                    break;
                case BluetoothAdapter.STATE_DISCONNECTED:
                    btConStat.setText("Disconnected");
                    break;
                case BluetoothAdapter.STATE_ON:
                    btConStat.setText("Bluetooth On");
                    break;
                case BluetoothAdapter.STATE_CONNECTED:
                    btConStat.setText("Connected");
                    break;
            }
        }
    }
};

onCreate에 다음과 같이 연결을 해주었습니다.


btConStat = (TextView) findViewById(R.id.BTStat);


하지만 실행을 하고 블루투스를 연결할 때 앱에서 연결 기능을 추가하거나 앱 밖에서 연결을 하거나 애초에 연결을 하지 않았을 때에도 상태 표시가 되지 않았습니다. 혹시 제가 놓친 부분이 있을까요? 아니면 TextView로 만든 것이 잘못된 걸까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 매니페스트에서 메인액티비티 부분의 코드와 위 리시버를 register하는 코드도 올려주시기 바랍니다 김은기 2020.2.21 23:14

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)