2015-06-21 21 views
5

Cihazımın bir araba ile ne zaman bağlandığını kontrol etmeye çalışıyorum. Bu yüzden benim aktivite onCreate aşağıdaki kodu kullanmış, bluetooth kulaklık gibi araba eylemleri varsayalım:Araba ile Bluetooth bağlantısı

// Get the default adapter 
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() { 
     public void onServiceConnected(int profile, BluetoothProfile proxy) { 
      Time today = new Time(Time.getCurrentTimezone()); 
      today.setToNow(); 
      if (profile == BluetoothProfile.HEADSET) { 
       mBluetoothHeadset = (BluetoothHeadset) proxy; 

       LogginUtil.logString("BluetoothApp", "Headset event called at " + today.format("%k:%M:%S") + " - " + profile); 
      } else { 
       LogginUtil.logString("BluetoothApp", "Other event called at " + today.format("%k:%M:%S") + " - " + profile); 
      } 
     } 
     public void onServiceDisconnected(int profile) { 
      if (profile == BluetoothProfile.HEADSET) { 
       mBluetoothHeadset = null; 
       Time today = new Time(Time.getCurrentTimezone()); 
       today.setToNow(); 
       LogginUtil.logString("BluetoothApp", "Headset event disconnected at " + today.format("%k:%M:%S")); 
      } 
     } 
    }; 
    // Establish connection to the proxy. 
    mBluetoothAdapter.getProfileProxy(getApplicationContext(), mProfileListener, BluetoothProfile.HEADSET); 

Ben bluetooth ile, uygulamayı başlatmak ve kapatmak, aşağıdaki çıktıyı almak:

benim cihaz aktif olan bluetooth ile bağlı olduğunu tespit etmek için yapmanız gereken ne yapıyoruz

Headset event called at "current time" - 1 

: Ben araba ile benim aygıtıyla eşleşmeye

Headset event called at "current time" - 1 

ben de aynı çıktıyı almak araba?

Önceden teşekkür ederiz ve başka bir şeye ihtiyacınız varsa bunu bildirin. yanlış anlaşıldığı

DÜZENLEME AÇIKLAMA

Sadece durumda benim sorum. Cihaz bluetooth ile bir araca bağlanma durumuna girdiğinde bildirimde bulunmak (sadece bir gün) almak istiyorum. Böyle bir şey mümkün mü?

+0

Sadece normal bir bluetooth kulaklığa bağlanmayı denediniz mi? – bernlim

+0

özür dileriz, sadece sorunuzu tamamen okuyun, ancak komplikasyon olmaya devam ederse, önce mutlaka düzenli bir kulaklıkla deneyin. – bernlim

+0

Hayır, oyunun amacı 'n bluetooth özellikli araca bağlanmaktır. Yukarıdaki kodun bu amaçla yanlış olması durumunda, lütfen e'yi doğru yönde işaretleyin :), @bernlim – Lunchbox

cevap

1

Bunu hemen denemek mümkün değilim, ama belki de bu işe yarayabilir:

int[] validStates = {BluetoothHeadset.STATE_AUDIO_CONNECTED}; 
List<BluetoothDevice> mConnectedDevices = 
    mBluetoothHeadset.getDevicesMatchingConnectionStates(validStates); 
if (!mConnectedDevices.isEmpty()) { 
    // You've got something connected here 
} 

Kaynaklar:

http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html#getConnectedDevices()

+0

Lütfen düzenlememe bakın. Ben bu bağlı bluetooth ses cihazları almak için işe yarar düşünüyorum. Lütfen düzenlememe bakın, sorumu daha ayrıntılı olarak açıkladım. Lütfen bir göz atın, bu sabah fark ettim, biraz belirsiz olabilir, saygısızlıktan dolayı teşekkürler! – Lunchbox

+0

@Lunchbox Bu snippet'i 'onServiceConnected' yönteminin içine koyabileceğinizi düşünüyordum. – jlhonora

+0

Benzer bir düzeltme gerçekleştirdim, kod sadece biraz farklı. Zamanım olduğu anda cevabımla güncelleyeceğim. Beni doğru yönde işaret ettin, bu yüzden +1. Teşekkürler! – Lunchbox

0

Hızlı google bu cevabını buldu, işe yaradı Oldukça az insan için bu yüzden sizin için çalışması gerektiğinden eminim. Kaynak: How to get Bluetooth Headset connection state on application start-up using Android2.2?

private static final String ACTION_BT_HEADSET_STATE_CHANGED = "android.bluetooth.headset.action.STATE_CHANGED"; 
private static final int STATE_CONNECTED = 0x00000002; 
private static final int STATE_DISCONNECTED = 0x00000000; 
private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE"; 

private BroadcastReceiver mBlueToothHeadSetEventReceiver = new BroadcastReceiver() { 

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

     if(action == null) 
      return; 

     if(action.equals(ACTION_BT_HEADSET_STATE_CHANGED)){ 
      int extraData = intent.getIntExtra(EXTRA_STATE , STATE_DISCONNECTED); 
      if(extraData == STATE_CONNECTED){ 

       //TODO : 

      }else if(extraData == STATE_DISCONNECTED){ 

       //TODO: 
      } 
     } 
     } catch (Exception e) { 

     //TODO: 

     } 
} 
}; 
+0

Çalışırsam, çalışacağım ve güncelleyeceğim, teşekkürler! – Lunchbox

+0

Bir araca bağlandığında olayın patlamaması gibi görünüyor. Bulduğumda çözümü yayınlayacağım. – Lunchbox

İlgili konular