2012-04-13 42 views
11

Tôi đang cố gắng sử dụng điện thoại Android làm bộ tai nghe (như bộ tai nghe) để kết nối với điện thoại khác (bất kỳ điện thoại nào) và thực hiện một số chức năng rảnh tay như (trả lời cuộc gọi đến, từ chối, ..vv) có thể được thực hiện bằng các lệnh AT cho cấu hình rảnh tay. Vì lý do đó, tôi đang sử dụng Ứng dụng trò chuyện Bluetooth nổi tiếng và hoạt động phản chiếu xung quanh để thiết lập kết nối với bất kỳ thiết bị nào:Kết nối Bluetooth giữa Android và điện thoại khác trên hồ sơ Rảnh tay

Phương thức m = device.getClass(). GetMethod ("createRfcommSocket", new Lớp [] {int.class}); tmp = (BluetoothSocket) m.invoke (thiết bị, 1);

Tuy nhiên, để đạt được chức năng rảnh tay và hiểu các lệnh AT mà tôi đang gửi, điện thoại được kết nối cần phải qua cấu hình rảnh tay sử dụng UUID: "0000111f-0000-1000-8000-00805F9B34FB"

Vì vậy, có cách nào để đạt được kết nối với cấu hình rảnh tay không?

Cảm ơn!

+0

Tôi đã có thể thiết lập kết nối Bluetooth HF bằng cách sử dụng Thư viện Bluecove "http://bluecove.org/" và bây giờ tôi có thể kiểm soát và quản lý các cuộc gọi trên điện thoại được kết nối bằng lệnh AT. Ngoài ra, để có chức năng rảnh tay hoàn toàn, điện thoại được kết nối sẽ chuyển giọng nói sang Android nhưng không nhận được nó vì nó không có vai trò Sink. Tôi biết rằng kênh SCO được thực hiện trong Android nhưng là một vai trò nguồn (chỉ để gửi giọng nói ra tai nghe). Do đó, có cách nào để thực hiện vai trò chìm trong Android, ngăn xếp BlueZ của Android có hỗ trợ điều đó không? – mjabdelhadi

+0

Đây chính xác là những gì tôi đang cố gắng làm. Bạn đã thành công về điều đó chưa? –

Trả lời

3

Bạn chỉ nên sử dụng mã này khi bạn không còn lựa chọn nào khác. Mã số 1 trong mã này là cổng RFCOMM. Mỗi dịch vụ có cổng RFCOMM riêng. Cổng này thường là ngẫu nhiên trong khoảng từ 1 đến 31. Bạn cần biết cổng dịch vụ nào (ở đây là cấu hình rảnh tay) đang sử dụng trên thiết bị mà bạn muốn kết nối. Bạn phải sử dụng các phương pháp createRfcommSocketToServiceRecord từ đối tượng BluetoothDevice để làm điều này:

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

Mã này là cách chính xác để sử dụng Bluetooth và nên thay thế một trong những bạn đang sử dụng.

Các vấn đề liên quan