2012-03-15 42 views
9

Tôi đang cố gắng sử dụng lớp RemoteControlClient để hỗ trợ trình phát màn hình khóa với ứng dụng của tôi. Một vấn đề là việc đặt cờ điều khiển vận chuyển có vẻ như chúng không hoạt động đúng cách.Android 4.x RemoteControlClient.setTransportControlFlags() không hoạt động?

Ví dụ tôi đang cố gắng để chỉ hiển thị một biểu tượng play/stop không prev/tiếp theo:

mRemoteControlClient.setTransportControlFlags(
         RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE | 
         RemoteControlClient.FLAG_KEY_MEDIA_STOP); 

này cho thấy một biểu tượng trước và tạm dừng biểu tượng! Tại sao?

Để làm mọi thứ trở nên tồi tệ hơn khi nhấn nút dừng/phát, bạn chỉ nhận được KEYCODE_MEDIA_PLAY_PAUSE khi bạn nhận được KEYCODE_MEDIA_STOP hoặc KEYCODE_MEDIA_PLAY.

Điều này gây khó chịu cho việc phát triển kém trên Android nếu tôi phát hiện ra tôi đang thực hiện điều này một cách chính xác.

+1

tôi đã nhận thấy vấn đề tương tự với nút trước, và có vẻ như không phải là một cách xung quanh nó. Đối với FLAG_KEY_MEDIA_PLAY_PAUSE, FLAG_KEY_MEDIA_STOP và KEYCODE_MEDIA_PLAY, dường như FLAG_KEY_MEDIA_PLAY_PAUSE luôn được sử dụng cho dù bạn chỉ định điều gì. Tuy nhiên, dự kiến ​​sẽ nhận KEYCODE_MEDIA_PLAY_PAUSE từ FLAG_KEY_MEDIA_PLAY_PAUSE. Nếu hoạt động như mong muốn, bạn muốn chỉ định FLAG_KEY_MEDIA_PLAY để nhận KEYCODE_MEDIA_PLAY. –

+0

Xem http://code.google.com/p/android/issues/detail?id=29920 để biết các nút phương tiện sai. – svenmeier

+0

Cảm ơn URL lỗi. – Jona

Trả lời

0

Các FLAG_KEY_MEDIA_STOP bao giờ thấy dừng vì lỗi trong android như báo cáo ở đây: https://code.google.com/p/android/issues/detail?id=29920

Nếu bạn sử dụng PLAY_PAUSE cờ là không nên tạo ra một sự kiện KEYCODE_MEDIA_STOP. Tại sao nó? Đó là một hành động bật/tạm dừng chuyển đổi thực hiện những gì nó dự định. Tùy thuộc vào ứng dụng của bạn để lưu trữ trạng thái của trình phát đa phương tiện.

Nếu tôi hiểu tài liệu chính xác, bạn chỉ có thể nhận KEYCODE_MEDIA_PLAY hoặc KEYCODE_MEDIA_PAUSE nếu bạn sử dụng cờ FLAG_KEY_MEDIA_PLAY và FLAG_KEY_MEDIA_PAUSE. Nhưng Android có thể là "thông minh" và dịch nó thành một chuyển đổi. Tôi không chắc chắn về điều đó.

0

Sử dụng FLAG_KEY_MEDIA_PLAY_PAUSE

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

Và nói dối với những RemoteControlClient ;-)

Nói với ông ấy suối là đệm và nó sẽ hiển thị các nút dừng!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

Cheers

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