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

안드로이드 블루투스 재연결 처리 부분

0 추천

서로 블루투스로 연결되어 있는 안드로이드 단말기가 한쪽이 연결이 끈켰을 시에 재연결 처리 부분을 구현하고 싶은데요 어떻게 구현을 시작해야 될지 감이 안잡힙니다. 대략 적인 핵심구현 부분만 알려주실수 있을까요?

try()catch 문을 통해서 연결이 끈겼을 시를 처리 하는 부분을 connectionLost();를 통해서 구현 해봤습니다.

 private class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;

        public ConnectedThread(BluetoothSocket socket, String socketType) {
            Log.d(TAG, "create ConnectedThread: " + socketType);
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;

            // BluetoothSocket 입력 및 출력 스트림을 가져옵니다
            try {
                tmpIn = socket.getInputStream();
                tmpOut = socket.getOutputStream();
            } catch (IOException e) {
                Log.e(TAG, "temp sockets not created", e);
            }

            mmInStream = tmpIn;
            mmOutStream = tmpOut;
        }

        public void run() {
            Log.i(TAG, "BEGIN mConnectedThread");
            byte[] buffer = new byte[1024];
            int bytes;

            // 연결 상태에서 의 InputStream 을 듣고 계속
            while (true) {
                try {
                    // InputStream 인 에서 읽기
                    bytes = mmInStream.read(buffer);

                    // 사용자 인터페이스 활동에 얻어진 바이트 보내기
                    mHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer)
                            .sendToTarget();
                } catch (IOException e) {
                    Log.i(TAG, "---------------disconnected");
                    connectionLost();
                }
            }
        }

빨간줄이 실행 되었을 시에 

private void connectionLost() {

        final ProgressDialog dialog = ProgressDialog.show(this, "Title",
                "Message", true);
        final Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                dialog.dismiss();
            }
        };
        Thread t = new Thread() {
            public void run() {
// write process code here.

                handler.sendEmptyMessage(0);
            }
        };
        t.start();
    }

이 구문이 실행 되도록 해놨는데요 

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference

이런 오류가 뜹니다 도와주세요

 

리스타트 (1,790 포인트) 님이 2016년 7월 11일 질문
리스타트님이 2016년 7월 11일 수정

답변 달기

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