2013-05-17 27 views
7

Tôi đang cố gắng thiết lập kết nối Bluetooth giữa thiết bị Android với điện thoại di động khác qua hồ sơ Rảnh tay. Tôi đang sử dụng mã sau -Làm thế nào để gửi lệnh AT dựa trên cấu hình BT Hands-Free trong Android?

private static final UUID MY_UUID = UUID.fromString("0000111F-0000-1000-8000-00805F9B34FB"); // UUID for Hands free profile 

// Some code... 

// Get Bluetooth Adapter. 
m_oBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

// Some code... 

// For paired BT device, getting a connection established. 
if(null != m_oBluetoothDevice) 
{ 
    if(BluetoothDevice.BOND_BONDED == m_oBluetoothDevice.getBondState()) 
    { 
     try 
     { 
      m_oBluetoothSocket = m_oBluetoothDevice.createRfcommSocketToServiceRecord(MY_UUID);  
      m_oBluetoothSocket.connect(); 

      Log.i(TAG, "Socket Connected"); 

     } 
     catch(Exception e) 
     { 
      if(null != m_oBluetoothSocket) 
      { 
       Log.i(TAG, "Closing socket"); 
       try 
       { 
        m_oBluetoothSocket.close(); 
       } 
       catch (Exception e1) 
       { 
        Log.i(TAG, "Error while closing socket : " + e1.getMessage()); 
       } 
      } 
     }    
    } 
} 

Tôi có thể tạo RFCOMMSocket bằng mã này.

Bây giờ tôi muốn gửi lệnh AT dựa trên cấu hình rảnh tay Bluetooth. ví dụ. Nếu điện thoại di động khác nhận được cuộc gọi điện thoại, thiết bị Android của tôi có thể từ chối cuộc gọi này bằng cách gửi lệnh AT- "+ CHUP". Tôi không chắc liệu điều này có khả thi hay không.

Tại thời điểm này, tôi bị kẹt. Tôi đã đọc API Bluetooth nơi tôi đã tìm thấy -

 BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT 

Chúng tôi có thể sử dụng Mục đích này để gửi lệnh AT không? Đây có phải là cách thích hợp để gửi lệnh AT dựa trên cấu hình rảnh tay Bluetooth không? Xin vui lòng ai đó giúp tôi ra và cho tôi hướng đi đúng đắn.

Mọi thông tin đầu vào từ tất cả các bạn đều sẽ giúp ích rất nhiều cho tôi.

Xin cảm ơn trước.

+0

Hãy giúp ai đó giúp tôi. Tuy nhiên, tôi không thể giải quyết vấn đề này. – KavitaDev

Trả lời

9

Bạn cần phải tạo InputStream và OutputStream để bạn có thể nói chuyện với điện thoại:

mmInStream = m_oBluetoothSocket.getInputStream(); 
mmOutStream = m_oBluetoothSocket.getOutputStream(); 

Để thiết lập kết nối HFP bạn bắt đầu gửi:

mmOutStream.write("AT+BRSF=20\r".getBytes()); 

đâu 20 là mã cho những gì bạn hỗ trợ của HFP.

Và để đọc từ điện thoại:

buffer = new byte[200]; 
mmInStream.read(buffer); 
command = new String(buffer).trim(); 

Vì vậy, bây giờ bạn có thể nói chuyện beetwen các thiết bị và bạn có thể đọc thêm về hồ sơ cá nhân Loa ngoài trên https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=238193

+0

Cảm ơn eliasj. Tôi sẽ cho nó nó một cơ hội. Cảm ơn một lần nữa. – KavitaDev

+0

Hi eliasj, tôi đã theo mã của bạn và nó giúp tôi rất nhiều. Tôi đã thiết lập kết nối giữa điện thoại Android và điện thoại di động khác. Tôi đã gửi vài lệnh AT theo cách bạn đã chỉ định trong câu trả lời. Bây giờ, tôi đang cố gắng để treo lên cuộc gọi đến bằng cách sử dụng ứng dụng của tôi bằng cách gửi lệnh AT. Tuy nhiên tôi đang đấu tranh cho điều này. Mặc dù câu trả lời của bạn đã cung cấp cho tôi một hướng đi đúng đắn, tôi sẽ biết ơn bạn nếu bạn có thể giúp tôi về vấn đề này. Cảm ơn nhiều. – KavitaDev

+0

@KavitaDev Để gác máy, bạn gửi 'mmOutStream.write (" AT + CHUP \ r ".getBytes());'. Đó là tất cả trong các thông số kỹ thuật của giao thức (liên kết trong phần cuối của awnser của tôi). – eliasj

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