onCreate()
메소드 레지스터 BroadcastReceiver
에서 서비스를 시작하고 onDestroy()
에서 BroadcastReceiver
의 등록을 취소하는 문제가 있습니다. 방법 onHandleIntent()
에서 블루투스 장치 검색을 시작합니다. 문제는 모든 장치가 발견되기 전에 내 BroadcastReceiver
이 파괴되어 실제로 BluetoothDevice.ACTION_FOUND
인 텐트로 수행 할 수 없다는 것입니다. startDiscovery()
을 onCreate()
으로 옮기려고 시도했지만 결과가 없습니다. 내 코드는 다음과 같습니다 1. 방금 만든있어 2. 발견이 막 시작 가 3가 그냥 파괴있어 :블루투스 스캔이 끝나기 전에 안드로이드 서비스의 메서드 onDestroy가 호출됩니다.
public class BluetoothService extends IntentService{
private BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
private final String SMART_TOKEN_ADDRESS = "F0:E7:7E:5F:63:70";
private final BroadcastReceiver receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.v("BLUETOOTH","found it!");
}
};
public BluetoothService() {
super("BluetoothService");
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(){
super.onCreate();
Log.v("SERVICE", "Just got created");
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
btAdapter.startDiscovery();
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
Log.v("BLUETOOTH", "Discovery just started");
//btAdapter.startDiscovery();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.v("BLUETOOTH","Just got destroyed!");
unregisterReceiver(receiver);
}
}
로그는 다음과 같습니다! 4.받은 android.bluetooth.device.action.FOUND
도움 주셔서 감사합니다! T.