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

브로드캐스트로 블루투스 장치검색 리시브하는데 문제가 있습니다

0 추천

블루투스장치가 검색이 되면 적절한 이벤트를 주려고 하는데요

 

bluefilter = new IntentFilter();
bluefilter.addAction(BluetoothDevice.ACTION_FOUND);
 
로 필터등록하고
 
BackGroundReceiver = new BroadcastReceiver() {
 
public void onReceive(Context context, Intent intent){
  String action = intent.getAction();
 
  if(BluetoothDevice.ACTION_FOUND.equals(action)){
   //적절한처리
  }
}

로 브로드캐스트 리시버로 디바이스가 발견되었을때 처리를 하려고하고

쓰레드에서 

mBluetoothAdapter.startDiscovery()

를 실행시키고 있습니다.

 

쓰레드에서 startDiscovery()는 정상적으로 동작하는데 

 

아무리 검색결과에 여러 디바이스들이 검색이 되어도

  if(BluetoothDevice.ACTION_FOUND.equals(action)) 가 브로드캐스트를 못받아들이고 있습니다... 대체문제가 뭘까요?

 

이론적으로 필터에 등록했고 startDiscovery()가 작동하면 브로드캐스트를 받아서 동작을 해야하는 것 아닌가요?

더필요한 소스말씀해주시면 바로 붙혀드리겠습니다 ㅜㅜ 도움이필요합니다

redduck12 (200 포인트) 님이 2014년 1월 7일 질문

1개의 답변

0 추천
registerReceiver는 하셨나요?
Gradler (109,780 포인트) 님이 2014년 1월 7일 답변
this.registerReceiver(BackGroundReceiver, bluefilter);
하였습니다
퍼미션은 주셨겠죠..?
말씀하신 코드만 집어넣어서 테스트 해봤는데 리시버가 잘 작동하네요..

private BroadcastReceiver mBackgroundReceiver = new BroadcastReceiver() {
       
        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals(BluetoothDevice.ACTION_FOUND)) {
                Log.e("TAG", "action found called");
            }
        }
    };
   
    BluetoothAdapter mAdapter;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.activity_main);
    }
   
    @Override
    protected void onStart() {
        super.onStart();
        registerReceiver(mBackgroundReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
        mAdapter = BluetoothAdapter.getDefaultAdapter();
        mAdapter.startDiscovery();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
       
        unregisterReceiver(mBackgroundReceiver);
    }


01-07 17:44:10.438: E/TAG(3697): action found called
01-07 17:44:19.928: E/TAG(3697): action found called
01-07 17:44:22.681: E/TAG(3697): action found called
01-07 17:44:23.141: E/TAG(3697): action found called
정말정말감사드립니다

댓글에 답한대로 this.registerReceiver를 했었던게 문제였네요
말씀해주신대로 registerReceiver로 등록하였더니 정상적으로 작동되었습니다 다시한번 감사드립니다!!
추가로 궁금한점이 있는데 이걸로 검색되는 블루투스 장치들의 블루투스 번호만 추출하여 제가 등록한 것과 비교해서 원하는 장치가 검색되는지 확인하고 싶은데 어떤 방법이 있을까요?
...