2015-09-01 15 views
80

Tôi có thiết bị Android hoạt động như một thiết bị khách rảnh tay sử dụng hfp.Bluetooth tay điều khiển âm lượng khách hàng miễn phí

Using the following code:

tôi có thể nhận được một cuộc gọi và các loa và mic đang làm việc như mong đợi.

Vấn đề của tôi là tôi dường như không thể điều khiển âm lượng.

Tôi đã thử sử dụng các dòng mã sau để tìm luồng chính xác nhưng không có dòng nào trong số đó có vẻ hoạt động.

tôi theo dõi các lệnh khối lượng được gửi từ điện thoại cho khách hàng trong lớp HeadsetClientStateMachine, dòng # 1822 tại liên kết sau: HeadsetClientStateMachine from lolipop

case EVENT_TYPE_VOLUME_CHANGED: 
    if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) { 
     mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI); 
     mVgsFromStack = true; 
     Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2); 
    } 

Khi tôi thay đổi âm lượng trên điện thoại, tôi thấy nhật ký hiển thị giá trị cập nhật của âm thanh, có nghĩa là phương thức setStreamVolume() đang được gọi, nhưng âm lượng không thay đổi.

Có ai biết điều gì có thể gây ra sự cố này không?

EDIT:

tôi vẫn đang tìm kiếm một câu trả lời và bây giờ nhìn về phía thực hiện HAL âm thanh. Tôi nghi ngờ rằng liên kết giữa các HAL và trình điều khiển âm thanh là bằng cách nào đó không chính xác ... Tôi không biết nhiều về việc thực hiện cấp thấp và tôi không chắc chắn những gì tôi nên tìm kiếm.

+1

Tôi quên đề cập đến: Các lớp HFPClient không có trong Kitkat: https://android.googlesource.com/platform/frameworks/base/+/kitkat-release/core/java/android/bluetooth/ họ đã quay lại được chuyển từ kẹo mút, do đó mã tôi sử dụng cũng giống như việc thực hiện lollipop. – Distwo

+1

Bạn có nghĩ điều này có thể gây ra sự cố không? –

+1

Có thể, tôi đang điều tra theo hướng đó ngay bây giờ. Song song tôi đã tự hỏi liệu có một hành vi đã biết của Android với cấu hình máy khách HFP có ngăn cản nó kiểm soát âm lượng không. – Distwo

Trả lời

2

Bạn có thể thử dưới đây không. Tôi không cố gắng bản thân mình nhưng có vẻ vấn đề tương tự nếu tôi hiểu đúng:.

Android Bluetooth Earpiece Volume

"Android đang sử dụng int 6 cho khối lượng bluetooth và không ghi nhận Chỉ cần sử dụng 6 thay vì AudioManager.STREAM_VOICE_CALL và cố gắng, nó sẽ làm việc "

tôi giả định cho bạn sẽ có để thay thế AudioManager.STREAM_BLUETOOTH_SCO với 6.

Chúc may mắn, tôi hy vọng nó sẽ làm việc.

+0

Tôi cũng đã thử điều đó ... – Distwo

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