Điều khiển âm lượng máy khách rảnh tay qua Bluetooth


80

Tôi có một thiết bị Android hoạt động như một thiết bị khách rảnh tay sử dụng hfp.

Sử dụng mã sau:

Tôi có thể nhận cuộc gọi và loa và micrô đang hoạt động như mong đợi.

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

Tôi đã thử sử dụng các dòng mã sau để tìm đúng luồng, nhưng dường như không có dòng nào hoạt động.

Tôi đã theo dõi lệnh âm lượng được gửi từ điện thoại đến máy khách trong lớp HeadsetClientStateMachine, dòng # 1822 trong liên kết sau: HeadsetClientStateMachine từ 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à setStreamVolume()phương thức đang được gọi, nhưng âm lượng không thay đổi.

Có ai biết những gì có thể gây ra vấn đề này?

BIÊN TẬP:

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


1
Tôi quên đề cập: Các lớp HFPClient không có trong Kitkat: android.googlesource.com/platform/frameworks/base/+/… chúng đã được chuyển trở lại từ lollipop, do đó mã tôi sử dụng giống như việc triển khai kẹo mút.
Distwo

1
Có thể là, 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 nào của Android với hồ sơ ứng dụng khách HFP ngăn nó kiểm soát âm lượng hay không.
Distwo

1
Phần kỳ lạ là âm thanh hoạt động, sự kiện thay đổi âm lượng bluetooth đang được chuyển và phương thức setStreamVolume () đang được gọi theo cách nó phải như vậy. Nó dường như không thể điều chỉnh âm lượng ...
Dist 2

Tôi đã thử nghiệm trên các phần cứng khác nhau, nhưng tất cả đều có cùng kiến ​​trúc vì đó là kiến ​​trúc duy nhất mà rom tùy chỉnh của tôi hỗ trợ ...
Dist

Tôi tự hỏi nếu điều này có bất cứ điều gì liên quan đến sự cố: android.googlesource.com/platform/hardware/libhardware/+/…
Dist 2

Câu trả lời:


3

Bạn có thể vui lòng thử bên dưới. Tôi đã không thử bản thân mình nhưng nghe có vấn đề tương tự nếu tôi hiểu đúng:

Âm lượng tai nghe Bluetooth Android

" Android đang sử dụng int 6 cho âm lượng bluetooth và không được ghi lại. Chỉ cần sử dụng 6 thay vì AudioManager.STREAM_VOICE_CALL và thử, Nó sẽ hoạt động "

Tôi giả sử đối với bạn sẽ thay thế AudioManager.STREAM_BLUETOOTH_SCO bằng 6.

Chúc may mắn, tôi hy vọng nó sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.