안녕하세요 브로드케스트리시버 때문에 다시 글 올립니다.
앞에 질문하여 답변을 듣긴 햇는데 이해가 되지 않아 글을 올립니다.
지금 현제 불루투스 악세사리를 하나 만들었구요
(이 악세사리는 단순히 스마트폰과 연결만 되는 기능 밖에 없음!!)
폰과 악세사리가 서로 연결이 되면 이를 감지 하여 내가 만든 어플을 자동으로 실행 시키고 싶습니다.
service나 브로드캐스트 리시버를 사용하면 될것 같은데 ㅠㅠ
어플이 죽어 있는 상태에서 브로드캐스트 리시버로 블루투스와 연결이 된 상태를 받아와 어플을 실행 하려고 하는데
브로드캐스트리시버의 경우 구현 방법중 java 코드로 작성시 어플이 실행 되고 있을때만 이벤트를 감지하는 것으로 알고 있습니다.
매니패스트에 바로 등록하면, 어플이 설치하고 어플이 죽어 있어서도 액선이벤트를 받아 올수 있는 것으로 알고 있구요
그리하여 매니페스트에 바로 등록해서 연결된 블루투스의 장치만을 읽어와 어플을 실행 할 수 있는지 궁금합니다.
블루투스와 스마트폰이 연결이 되면, 어플이 실행 후 다시 맥주소를 검사해서 내가 원하는 맥주소가 나오면 어플을 계속 실행 하고 아니면 어플을 종료할건데 이건 차후 문제 이구요
연결된 블루투스의 장치만을 읽어와 어플을 실행 하는 방법 좀 알려주세요
아까 답변을 하나 받긴 했는데 어떻게 해야 할지 모르겠습니다.
답변 :
브로드캐스트 리시버를 상속한 클래스를 하나 만들고, 매니페스트에 블루투스 디바시으 액션을 리시버로 등록하구요.
브로드캐스트 리시버를 상속한 클래스의 onreceive를 재정의해야하는데 여기서 인텐트를 사용해 메인액티비티를 띄우면 됩니다
정말 죄송한데 위의 답변처럼 비슷한 코드라도..예제로 설명해주시면 안될까요?.
비슷한 소스코드나 예제 코드가 있으면 좀 알려주시면 안될까요?
꼭 좀 부탁드리겠습니다. ㅠㅠ
답변감사합니다. ㅠㅠ 이 소스를 조금 응용하면 service를 활용하지 않아도 가능 할 것 같습니다.
자료를 찾아보니 굳이 서비스를 사용하지 않아도 블루투스 연결 상태를 확인할수 있다고 나오네요 ㅠㅠ
이것에 대해 찾는것만 3일째인데 이후.. 답답하네요
여튼 답변은 진심으로 너무 감사합니다^^
혹시 그 방법좀 알 수 있을 까요
저도 블루투스 페어링 상태값을 받아오는 소스가 필요한대
방법을 전혀 모르고있네요
혹시 가능하시다면 ktmdgus@gmail.com 으로 부탁좀 드려도될까요..?




서비스를 돌리셔야 합니다. 타이머를 두시고 주기적으로 startdiscovery 하여 지금 현재 검색되는 블루투스를 감지하고
블루투스 목록 중 연결이 원하시는 기기가 있다면 그 기기의 UID를 통해 connect 하시면 블루투스 리시버에
action ACTION_ACL_CONNECTED 가 오면 startactivity 시켜주시면 됩니당
서비스 내에서 리시버를 등록하는 방법은
IntentFilter filter = new IntentFilter();
//등록될 액션들
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
// 브로드캐스트 리시버를 상속한 리시버 클래스 인스턴스화
if(mBluetoothReceiver == null)
mBluetoothReceiver = new BluetoothReceiver();
registerReceiver(mBluetoothReceiver, filter);
브로드 리시버를 상속한 블루투스 리시버
public class BluetoothReceiver extends BroadcastReceiver{
//블루부스 미지원
public static final int BLUETOOTH_STATE_UNKNOW = -1;
//본기기 블루트스 활성화
public static final int BLUETOOTH_STATE_ON = BluetoothAdapter.STATE_ON;
public static final int BLUETOOTH_STATE_OFF = BluetoothAdapter.STATE_OFF;
//타기기 블루투스 활성화
public static final int BLUETOOTH_STATE_TURNING_ON = BluetoothAdapter.STATE_TURNING_ON;
public static final int BLUETOOTH_STATE_TURNING_OFF = BluetoothAdapter.STATE_TURNING_OFF;
private OnBluetoothChangeListener mBluetoothStateChange = null;
public BluetoothReceiver(OnBluetoothChangeListener listener){
mBluetoothStateChange = listener;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
mBluetoothStateChange.onBluetoothSerchResultDevice(device);
}else if(BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)){
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BLUETOOTH_STATE_UNKNOW);
mBluetoothStateChange.onBluetoothStateChanged(state);
}else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){
mBluetoothStateChange.onBluetoothResultFinished();
}else if(BluetoothAdapter.ACTION_ACL_CONNECTEDequals(action)){
여기서 스타트 액티비티
}
}
}
시간이없어 그냥 붙여넣기햇으니 수정해서 사용하시면 될듯요..