19

Tôi có video phát ở chế độ dọc. Ở cuối video, tôi cần hiển thị một số chế độ xem trên đó. Điều này hoạt động tốt cho đến nay. Tuy nhiên, tôi đang gặp sự cố khi các lượt xem nằm trong khung hình cuối cùng của video không vẽ lại chính xác khi quay lại hoạt động sau khi tắt màn hình, sau đó bật lại, sau đó mở khóa màn hình.Android - Lượt xem phủ lên khung hình cuối cùng của video toàn màn hình không được vẽ lại đúng cách khi bật và tắt màn hình

Điều tôi đang quan sát là khi màn hình trở lại và tôi mở khóa. Video và hình ảnh của tôi trước tiên được hiển thị bên ngoài chế độ toàn màn hình (với thanh trạng thái vẫn hiển thị) thì màn hình sẽ chuyển sang chế độ toàn màn hình để chuyển tất cả các chế độ xem và gây ra hiện tượng.

Dường như lượt xem đang được chuyển ra ngoài giới hạn lượt xem của họ bằng cách chuyển sang chế độ toàn màn hình sau khi được hiển thị.

Tôi thực sự bối rối về cách ngăn điều này xảy ra.

Here is the sandbox project on github để tránh làm cho bài đăng này đầy mã.

Thiết lập cơ bản cho dự án là:

Hoạt động phân đoạn có chế độ xem video và chế độ xem nút trên bố cục của nó. Sau đó, thêm một đoạn vào một vùng chứa contentView. ContentView mất dần trong 1 giây trước khi kết thúc phát lại video.

Mọi thứ hoạt động suôn sẻ và vấn đề là quay trở lại ứng dụng sau khi bật và tắt màn hình.

Ngoài ra, đôi khi video sẽ chỉ thả ra hoàn toàn, để lại chế độ xem nằm trên đỉnh nền đen.

Cảm ơn trước vì bất kỳ trợ giúp nào bạn có thể cung cấp.

proper rendering of views over video

Đây là artifacting điều đó xảy ra khi bạn tắt màn hình, trở lại, và mở khóa. Lưu ý rằng tôi phải chụp một bức ảnh về nó. Trên DDMS, công cụ chụp màn hình nhìn thấy hình ảnh đúng cách.

artifacted image

Trả lời

3

thay vì ngăn màn hình tắt, bạn có thể chọn nhận sự kiện khi người dùng mở khóa bàn phím sau khi đánh thức điện thoại.

Tại thời điểm này, bạn có thể gọi View.invalidate trên cả hai chế độ xem của mình, điều này sẽ khiến bạn vẽ lại. Chuỗi vẽ rất dễ vỡ trong khi màn hình khóa bật lên, vì ứng dụng của bạn được hiển thị kỹ thuật, ngay dưới màn hình khóa.

registerReceiver(new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context ctx, Intent intent) { 
      if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)) 

     } 
    }, new IntentFilter(Intent.ACTION_USER_PRESENT)); 
+0

Cảm ơn gợi ý Colin. Tôi sẽ thử. –

+0

np! hy vọng nó hoạt động ra :) –

+0

Cảm ơn Colin. Điều này chắc chắn đã giúp, tôi đã không tìm ra cách để sửa chữa nó được nêu ra nhưng đề nghị của bạn minh họa vấn đề. Vấn đề là onResume được gọi khi bạn đang xem màn hình khóa. Trên màn hình khóa, thanh trạng thái hiển thị, điều này gây ra việc vẽ không đúng cách. Việc tiếp nhận ý định của người dùng sẽ giúp khắc phục sự cố. Chỉ có vấn đề bây giờ là gọi vô hiệu hóa trên các quan điểm dường như không có hiệu lực. Nhưng đó phải là phần dễ dàng. Cảm ơn một lần nữa! –

0

Dường như cách bố trí lớp phủ đã được chuyển bởi thanh điều khiển.
Bạn có nghĩ rằng nó bị ảnh hưởng bởi vùng điều khiển (phát/tạm dừng/ff/rew + tiến trình)?

+0

hi JonA. Không chắc chắn những gì bạn có ý nghĩa. Tôi không có bất kỳ bộ điều khiển nào được thiết lập cho phiên bản mediaplayer này.Nhưng có cái gì khác tôi nên làm gì để đảm bảo thanh điều khiển không can thiệp? –

0

có thể có cách để ngăn màn hình tắt ở vị trí số 1 vì điều này sẽ giải quyết tốt vấn đề vẽ lại của bạn, hy vọng điều này sẽ hữu ích.

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