2013-01-23 29 views
10

Tôi có hình nền động đang chạy và phản ứng với sự kiện SCREEN_ON để hiển thị các thay đổi trên canvas không. Tuy nhiên trên một số điện thoại, người dùng có thể đặt hình nền khóa màn hình và màn hình chính khác (Touchwiz, một số thiết bị Xperia). Khi người dùng đã đặt hình nền khác trên màn hình khóa, hình nền động của tôi không được hiển thị.Tìm hiểu xem các hình nền màn hình chính và màn hình khóa khác có được đặt là

Trên Galaxy S3, tôi đã sử dụng WallpaperService.Engine.isVisible() và trả lại chính xác false khi người dùng đã đặt hình nền màn hình khóa khác. Trên Galaxy S3 Mini, tuy nhiên, điều này không hoạt động, bởi vì isVisible() trả về true có hay không hình nền động của tôi là hình nền khóa màn hình hoạt động.

WallpaperManager.getWallpaperInfo() hoặc WallpaperManager.peekDrawable() không làm việc, hoặc, bởi vì getWallpaperInfo() trả về hình nền sống của tôi không phụ thuộc vào hình nền lockscreen hiện tại, và peekDrawable() trả về một drawable hợp lệ ngay cả khi nền sống của tôi được thiết lập cho cả hai màn hình. Tôi đã thử nghe WallpaperService.Engine.onTouchEvent(..), nhưng các sự kiện cảm ứng từ màn hình khóa không đi qua hình nền động của tôi, vì chúng được tiêu thụ bởi thanh trượt mở khóa.

Có cách nào khác để phát hiện xem hình nền động của tôi có phải là hình nền màn hình khóa hiện tại không? Tôi ổn với phản xạ, cách giải quyết, mọi thứ sẽ cho phép tôi làm điều này.

EDIT: nó cũng hoạt động trên Galaxy Note 2, bot không phải trên Xperia T LT30p

+0

Bạn đã thử WallpaperService.Engine.onVisibilityChanged (..)? – StarPinkER

+0

Có, 'isVisible()' chỉ trả về giá trị cuối cùng được chuyển đến 'onVisibilityChanged()', vì vậy cả hai đều hoạt động trên cùng một cơ sở dữ liệu – Thrakbad

+0

Bạn có kết thúc việc giải quyết vấn đề này không? Nếu vậy, một số mã sẽ được nhiều đánh giá cao –

Trả lời

2

Lockscreen hình nền không được hỗ trợ bởi phiên bản AOSP của Android. Tính năng này hoàn toàn được thực hiện bởi các OEM (Samsung, Sony, LG, v.v.) và do đó các API để xử lý hình nền lockscreen hoàn toàn khác nhau giữa các OEM. Hơn nữa, một số OEM chỉ không hỗ trợ hình nền động trên màn hình nền trong khi những người khác làm.

Vì họ là OEM đã thêm APIS, bạn nên sử dụng phản xạ để truy cập chúng. Tuy nhiên, nó sẽ hoạt động trên một thiết bị OEM, nhưng cùng một mã sẽ không hoạt động trên các thiết bị OEM khác.

+0

Cảm ơn, tôi biết tất cả điều đó và tôi ổn với các thiết bị đặc biệt cho thời điểm này. – Thrakbad

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