10

実行中のライブ壁紙があり、SCREEN_ONイベントに反応してキャンバスに変更を表示します。ただし、一部の電話では、ユーザーは別のロック画面とホーム画面の壁紙を設定できます(Touchwiz、一部のXperiaデバイス)。ユーザーがロック画面に別の壁紙を設定した場合、ライブ壁紙は表示されません。

私が使用したGalaxyS3では、ユーザーが別のロック画面の壁紙を設定すると、WallpaperService.Engine.isVisible()正しく戻ります。ただし、Galaxy S3 Miniでは、ライブ壁紙がアクティブなロック画面の壁紙であるかどうかを返すfalseため、これは機能しません。isVisible()true

WallpaperManager.getWallpaperInfo()または、現在のロック画面の壁紙に関係なくライブ壁紙を返し、ライブ壁紙が両方の画面に設定されている場合でも有効なドローアブルを返すWallpaperManager.peekDrawable()ため、どちらも機能しません。を聴いてみましたが、ロック画面からのタッチイベントは、ロック解除スライダーによって消費されるため、ライブ壁紙に到達しません。getWallpaperInfo()peekDrawable()WallpaperService.Engine.onTouchEvent(..)

私のライブ壁紙が現在のロック画面の壁紙であるかどうかを検出する他の方法はありますか?私はリフレクションハック、回避策、これを可能にするすべてのもので大丈夫です。

編集:XperiaTLT30pではなくGalaxyNote2ボットでも動作します

4

2 に答える 2

2

ロック画面の壁紙は、Android の AOSP バージョンではサポートされていません。この機能は完全に OEM (Samsung、Sony、LG など) によって作成されているため、ロック画面の壁紙を処理するための API は OEM によってまったく異なります。さらに、ロックスクリーンのライブ壁紙のみをサポートしていない OEM もあれば、サポートしている OEM もあります。

これらは OEM が追加した API であるため、リフレクションを使用してアクセスする必要があります。ただし、1 つの OEM デバイスでは機能しますが、同じコードは他の OEM のデバイスでは機能しません。

于 2013-02-03T05:49:36.537 に答える