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í
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.
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
Bạn có nghĩ điều này có thể gây ra sự cố không? –
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