0

두 대의 Android 휴대 전화가 있습니다. 블루투스를 통해 자동 연결을 만들고 싶습니다. 예 :범위 내에 있으면 페어링 된 블루투스 장치에 자동으로 연결할 수 있습니까?

다른 블루투스와 페어링 된 내 안드로이드 전화가 있습니다. 이 전화기를 가까이에 놓으면 Bluetooth 장치를 감지하고 선택한 Android 전화 (이전에 알려진 Adress/MAC/Paired)에 자동으로 연결해야합니다. 다시 연결할 필요가 없습니다. 내 안드로이드 응용 프로그램에서 이런 종류의 연결을 원한다.

저는 Google과 관련된 참조 자료를 찾았지만 아직 문제를 해결하지 못했습니다. 나는 범위 내에있을 때 블루투스를 자동으로 연결하기 위해 스레드/서비스를 만들어야한다고 생각합니다. 그러나, 나는 그것을 구현할 수 없습니다. 좋은 해결책이 있다면 알려주십시오. 당신이

Automatically connect to paired bluetooth device when in range

Find already paired bluetooth devices automatically, when they are in range

/** 
    * The BroadcastReceiver that listens for discovered devices and changes the title when 
    * discovery is finished 
    */ 
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 

     // When discovery finds a device 
     if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
      // Get the BluetoothDevice object from the Intent 
      BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
      // If it's already paired, skip it, because it's been listed already 
      if (device.getBondState() != BluetoothDevice.BOND_BONDED) { 
       mNewDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
      } 
      // When discovery is finished, change the Activity title 
     } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
      setProgressBarIndeterminateVisibility(false); 
      setTitle(R.string.select_device); 
      if (mNewDevicesArrayAdapter.getCount() == 0) { 
       String noDevices = getResources().getText(R.string.none_found).toString(); 
       mNewDevicesArrayAdapter.add(noDevices); 
      } 
     } 
    } 
}; 

답변

0

이 방송 수신기가 발견 프로세스를 실행 한 후에 만 ​​실행됩니다 감사합니다.

검색은 두 가지 방법으로 시작할 수 있습니다. 수동으로 Bluetooth 설정을 사용하거나 프로그래밍 방식으로 BluetoothAdapter#startDiscovery()을 호출합니다. 그러나 설명서의 내용은 다음과 같습니다.

장치 검색은 매우 중요합니다. 검색이 진행되는 동안 원격 Bluetooth 장치에 대한 새 연결을 시도하면 안되며 기존 연결에는 제한된 대역폭과 높은 대기 시간이 발생합니다. 진행중인 검색을 취소하려면 cancelDiscovery()을 사용하십시오. 검색은 활동에 의해 관리되지 않지만 시스템 서비스로 실행되므로 응용 프로그램은 발견을 직접 요청하지 않았더라도 항상 cancelDiscovery()을 호출해야합니다.

이것은 다른 Bluetooth 연결 속도가 느려지는 것을 제외하고는 백그라운드에서 계속 실행되지 않고 일회성 절차로 검색을 수행해야한다는 것을 의미합니다. 배터리가 빨리 소모됩니다.