2012-04-13 21 views
11

Başka bir telefona (herhangi bir telefon) bağlanmak ve bazı handsfree işlevlerini gerçekleştirmek için Android telefonumu bir handsfree kiti (arabalar için olanı gibi) olarak kullanmaya çalışıyorum. Eller serbest profil için AT komutları kullanılarak yapılabilecek (gelen bir aramayı cevapla, reddetme, vb.). Bunun için, bilinen Bluetooth sohbet App kullanıyorum ve herhangi bir cihazla bağlantı kurmak için etrafta yansıma çalışmaları yapıyorum:Android ile Handsfree profili üzerinden başka bir telefon arasında Bluetooth bağlantısı

Yöntem m = device.getClass(). GetMethod ("createRfcommSocket", yeni Sınıf [] {int.class}); tmp = (BluetoothSocket) m. Invoke (aygıt, 1);

Ancak, handsfree işlevselliğini elde etmek ve gönderdiğim AT komutlarını anlamak için, bağlanan telefonun UUID'yi kullanan handsfree profilinin üzerinde olması gerekir: "0000111f-0000-1000-8000-00805F9B34FB"

Bu nedenle, handsfree profiline bir bağlantı elde etmenin bir yolu var mı?

Teşekkürler!

+0

Bluecove Library "http://bluecove.org/" kullanarak HF Bluetooth bağlantısını kurabildim ve şimdi AT Komutları kullanarak bağlı telefondaki çağrıları kontrol edebilir ve yönetebilirim. Ayrıca, tam bir Hands-free işlevselliği için, bağlı telefon sesi Android'e yönlendirir, ancak Sink rolüne sahip olmadığı için almaz. SCO kanalının Android'de uygulandığını, ancak bir kaynak rolü olduğunu biliyorum (sesi yalnızca kulaklıklı mikrofon setine göndermek için). Bu nedenle, Android'de sink rolünü uygulamak için herhangi bir yol var mı, Android'in BlueZ yığını bunu destekliyor mu? – mjabdelhadi

+0

Bu, tam olarak yapmaya çalıştığım şey. Bunun üzerinde başarılı oldun mu? –

cevap

3

Bu kodu yalnızca başka bir seçeneğiniz yoksa kullanmalısınız. Bu koddaki 1 RFCOMM bağlantı noktasıdır. Her servisin kendi RFCOMM portu vardır. Bu bağlantı noktası genellikle 1 ile 31 arasındadır. Bağlanmak istediğiniz aygıtta hizmetin hangi bağlantı noktasını (burada handsfree profili) kullandığını bilmeniz gerekir.

try { clientSocket = bluetoothDevice.createRfcommSocketToServiceRecord(serviceUUID); } 
catch (IOException e) 
{ 
    // handle error 
} 

Bu kod Bluetooth kullanmak ve kullanmakta olduğunuz birini değiştirmelidir doğru yoludur: Bunu yapmak için BluetoothDevice nesneden createRfcommSocketToServiceRecord yöntemini kullanmak zorunda.

İlgili konular