2012-01-25 12 views
6

Tôi có trình phát đa phương tiện dừng phát bất cứ khi nào người dùng đóng ứng dụng bằng cách nhấn nút home, sử dụng nút quay lại hoặc chỉ cần mở một ứng dụng khác. Để có được hành vi này, tôi đã thêm một số onStop() vào hoạt động chính của tôi, thông báo cho tôi MediaPlayer (có dịch vụ) ngừng phát nhạc.Kiểm tra xem onStop có được gọi từ tương tác của người dùng hay màn hình mờ

Tuy nhiên, tôi muốn nhạc tiếp tục phát bất cứ khi nào màn hình bị làm mờ, bằng cách sử dụng nút nguồn để tắt màn hình hoặc chỉ bằng màn hình tự động mờ.

Ngay bây giờ, trình phát cũng dừng phát khi màn hình mờ đi, nghĩa là phương thức onStop() cũng được gọi sau đó.

Làm cách nào để kiểm tra xem onStop() có được gọi bằng cách làm mờ màn hình không?

Tôi đã áp dụng một đối tượng PARTIAL_WAKELOCK cho đối tượng MediaPlayer, theo hiểu biết tốt nhất của tôi, sẽ giúp người chơi tiếp tục chạy sau khi màn hình tắt.

Tôi có cần phải thêm một phần wakelock vào hoạt động chính của mình không?


Chỉ áp dụng PARTIAL_WAKELOCK cho cả hoạt động chính cũng như trình phát đa phương tiện của mình. Ngay bây giờ, màn hình không tự tắt nữa và khi người dùng nhấn nút nguồn, nhạc vẫn dừng.

Rõ ràng, điều này không hoạt động như tôi nghĩ.

Có cách nào để đạt được hành vi mà tôi đang tìm kiếm không?

+0

về trường có 'boolean stopByUser = false;' trong hoạt động của bạn, đặt nó thành 'false' trong' onStart() ', thành' true' trong 'onBackPressed()' và 'onUserLeaveHint()' và kiểm tra giá trị của nó trong 'onStop()'? – Vladimir

+0

Đó không phải là một ý tưởng tồi chút nào! Tôi sẽ thử nó –

+0

Ồ, nó thực sự hoạt động! Xin vui lòng để lại bình luận của bạn như là một câu trả lời để tôi có thể chấp nhận nó cho những người tìm kiếm trong tương lai. –

Trả lời

3

Bạn có thể thêm lĩnh vực

private boolean stoppedByUser = false; 

đến hoạt động của bạn, đặt nó vào false trong onStart(), để true trong onBackPressed()onUserLeaveHint() và kiểm tra giá trị của nó trong onStop() phương pháp.