2012-11-23 6 views
4

내 응용 프로그램은 다른 장치가 파일을 연결하고 전송할 수 있도록 특정 UUID의 열린 Bluetooth 서버 소켓을 보유하고 있습니다. 나는 BroadcastReceiver에 관해 약간 혼란 스럽다.Bluetooth 서버 및 BroadCastReceiver

Activity을 확장하는 클래스에서 블루투스 어댑터의 상태를 확인하고 싶습니다. 그러나 내 BroadcastReceiver는 실행되지 않습니다. 나는 상태에 대한 질문이

public class MainClass extends Activity { 
    public void onCreate(Bundle b) { 
    super.onCreate(b); 
    IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); 
    registerReceiver(mReceiver, filter); 
} 

private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      final String action = intent.getAction(); 

      Log.w("BroadcastReceiver: ", "Inside!"); 

      if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { 
       final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR); 
       switch (state) { 
       case BluetoothAdapter.STATE_OFF: 
        Log.d("Bluetooth Receiver", "State-off"); 
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
        break; 
       case BluetoothAdapter.STATE_TURNING_OFF: 
        Log.d("Bluetooth Receiver", "State turning off"); 
        break; 
       case BluetoothAdapter.STATE_ON: 
        Log.d("Bluetooth Receiver", "State-on"); 
        btCom = new BluetoothCommunicator(MainClass.this, lastCases, nist); 
        btCom.startServer(); 
        break; 
       case BluetoothAdapter.STATE_TURNING_ON: 
        Log.d("Bluetooth Receiver", "State turning on"); 
        break; 
       } 
      } 
     } 
    }; 

} 

: 나는 브로드 캐스트 리시버이 방법을 사용하여 시도

  • 상태 STATE_ON는 블루투스가 런타임 동안 켜져있을 때 이것은 단지 떨어져 해고입니까? 또는 블루투스를 켠 상태에서 애플리케이션을 시작할 수 있습니까?이 이벤트는 시작됩니다. 블루투스는 내가 그렇게 할 수있는 방법을
  • 나는 또한 내 매니페스트 파일에 방송 수신기를 등록 할 필요가 읽어

, 켜져있는 경우 내가 방법 btCom.startServer()을 시작하려는 왜냐면 브로드 캐스트 리시버는 활동을 확장하는 클래스에있는 경우 ? 내가 별도의 클래스에서이 브로드 캐스트 리시버를 가지고 있다면 내 패키지 이름이였습니다 instace이

말처럼 할 것 com.workbench 내 클래스 이름 BluetoothReceiver

매니페스트 다음과 같이 보일 것이었다

<receiver android:name="com.workbench.BluetoothReceiver"></receiver> 

답변

0

브로드 캐스트 어댑터의 상태가 변경되면 브로드 캐스트 동작 BluetoothAdapter.ACTION_STATE_CHANGED이 전송됩니다. 어댑터의 상태가 변경 될 때만이를 볼 수 있습니다.

BluetoothAdapter.isEnabled()을 호출하여 Bluetooth 어댑터의 현재 상태를 확인할 수 있습니다.

응용 프로그램이 실행되고 있지 않을 때 Intent 브로드 캐스트를 받으려면 매니페스트에 BroadcastReceiver 만 등록하면됩니다. BroadcastReceiver (익명 클래스로)을 구현 한 방식으로 매니페스트에 등록 할 수 없습니다.

관련 문제