마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스너 오류가 납니다 ㅠㅠ

0 추천

계속 질문해서 죄송합니다 ㅜㅜ

글에 첨부했던 코드 바로 위 코드 인데

void connectSelectedDevice(String selectedDeviceName) {
        for(BluetoothDevice tempDevice : mPairedDevices) {
            if (selectedDeviceName.equals(tempDevice.getName())) {
                mBluetoothDevice = tempDevice;
                break;
            }
        }
        try {
            mBluetoothSocket = mBluetoothDevice.createRfcommSocketToServiceRecord(BT_UUID);
            mBluetoothSocket.connect();
            mThreadConnectedBluetooth = new ConnectedBluetoothThread(mBluetoothSocket);
            mThreadConnectedBluetooth.start();
            mBluetoothHandler.obtainMessage(BT_CONNECTING_STATUS, 1, -1).sendToTarget();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), "블루투스 연결 중 오류가 발생했습니다.", Toast.LENGTH_LONG).show();
        }

 

mThreadConnectedBluetooth = new ConnectedBluetoothThread(mBluetoothSocket);

이렇게 썼는데 리스너 사용이 가능한가요?

프로젝트에서 작성해주신 코드로 썼더니 오류가 나네요 ㅠㅜ 

related to an answer for: 특정 값 이상이면 소리 울리기
황제 (230 포인트) 님이 2022년 6월 6일 질문
제가 님의   코드를 보고 추측해서 작성할 수 밖에 없는 상태이기 때문에 제 코드에 오류가 있을 수 있습니다. 제 코드를 어떻게 데이터 흐름을 처리하는지에 참조용으로만 사용하세요.
그리고 올리신 코드가 잘려서 보이지가 않아요. 오류일 경우는 오류의 내용도 같이 올리시면 좋을 것 같은데요. 다시 말씀드리지만, 제 쪽에서는 님의 코드를 테스트해볼 수가 없어요.
죄송합니다 ㅠ 제가 이해 없이 바로 과제만 수행하려다보니 이렇게 되네요 .. 이렇게까지 도와주신 것만으로도 너무 감사합니다.
코드는 올린부분이고, 하단에 한줄은 상단 코드 중간에 한줄인데, 뒷부분이 잘렸네요 ㅠㅠ

간단히 if로 조건을 쓰면 될 줄 알았는데 .. 아니군요 ㅠㅠ c로 백준 문제 풀기만 해보다가 뭘 만들어 보려니까 생각처럼 쉽지는 않네요 ㅠㅠ 도움 주셔서 감사합니다. 더 공부 해보겠습니다
오류는 리스너 사용 부분부터 빨간줄로 쭉 오류라고 잡혀서 .. 본문에 코드처럼 스레드를 만들어놓은 것은 리스너로 바꿀 수 없는지 여쭤본것이었습니다

그리고 혹시 몰라 이전에 답변해주신 소리 울리기 질문글에 답변으로 전체 코드를 첨부했습니다.
정확하게 질문의 내용이 이해가 가지않네요. 한가지 말씀드릴 수 있는 건
님의 경우는 디바이스 목록을 선택한 후에 Bluetooth를 연결하기 때문에,  아래처럼 ConnectedBluetoothThread 인스턴스 생성 후에 리스너를 할당하셔야 겠네요.

mThreadConnectedBluetooth = new ConnectedBluetoothThread(mBluetoothSocket);
mThreadConnectedBluetooth.setListener(this);

그리고 onStop, onStart에 사용하는 코드는 사용하시려면 null체크를 하셔야하구요.
if (mThreadConnectedBluetooth != null) mThreadConnectedBluetooth.setListener(this);
if (mThreadConnectedBluetooth != null) mThreadConnectedBluetooth.setListener(null);

윗 부분이 필요한지는, 님의 요구사항에 따라 판단하세요.

추가적으로 mThreadConnecteBlooth가 앱이나 해당 액티비티가 종료된 뒤에도 (예를 들면, taskmanager등에서 앱을 죽이는 경우) 확실하게 닫히는지 잘 확인하셔야 할 것 같아요.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...