Androidプログラミングを始めたばかりで、ロック画面の画像をプログラムで設定する方法があるかどうかを確認したいと思います。APIで壁紙を設定するさまざまな方法を見つけましたが、しかし、ロック画面の画像を設定する同等の方法を見つけることができないようです。
ウィジェットやアプリケーションのビットを追加してロック画面をカスタマイズすることは不可能だと言うさまざまな投稿を見てきましたが、確かにプログラムで画像を設定する方法があるはずですか?
乾杯、
ロビン
Androidには「ロック画面イメージ」はありません。確かに、ストックAndroid、HTC Sense、MOTOBLURなどで同じ「ロック画面イメージ」の概念はありません。これは、単にAndroid SDKの一部ではありません)。
Rijk氏が指摘しているプロジェクトは、ロック画面の交換を装ったセキュリティ違反です。
APIレベル24以降、新しいメソッドが追加され(そして documentation )とフラグがWallpaperManager
に追加されました。これにより、Wallpaper
をホームに設定できるだけでなく、画面だけでなく、Lockscreen
Wallpaper
をLockscreen
に設定するには、新しいフラグWallpaperManager.FLAG_LOCKを使用し、 int which
WallpaperManager.getInstance(this).setStream(inputStream, null, true, WallpaperManager.FLAG_LOCK);
次の方法のいずれかを使用することもできます
int setStream (InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, int which)
int setResource (int resid, int which)
int setBitmap (Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which)
さらに、isSetWallpaperAllowed
を介して壁紙を設定できるかどうかを確認し、getWallpaperFile
を介して現在設定されている壁紙を取得することもできます。
WallpaperManager
の最新の documentation を確認してください。
サムスンのデバイスでそれを行う方法があります。意図であなたは余分を置くことができます。
intent.putExtra("SET_LOCKSCREEN_WALLPAPER", true);
startActivity(intent);
私はこれを一部のサムスンの電話でテストしただけで、将来的にこれが壊れないという保証はありません。注意して使用してください。
WalpaperManagerクラスのこれらの3つのメソッドを使用できますが、機能しないバージョンのデバイス以上でのみ機能します:-
public int setBitmap (Bitmap fullImage,
Rect visibleCropHint,
boolean allowBackup,
int which)
public int setResource (int resid,
int which)
public int setStream (InputStream inputStreamData,
Rect visibleCropHint,
boolean allowBackup,
int which)
これら3つのメソッドのパラメーター:-
Bitmap/resid/inputStreamData:-このパラメーターはデータを受け入れます
visibleCropHint:-このパラメーターは、主にトリミング機能に使用されるRectオブジェクトを受け入れます。詳細については、 Android開発者リファレンスのWebサイト を参照してください。トリミング機能が必要ない場合は、nullを渡すこともできます。
allowBackup:-boolean:OSが将来のデバイスに復元するためにこの壁紙画像のバックアップを許可されている場合はtrue。それ以外の場合はfalse。
これは、-ロック画面の壁紙とホームの壁紙を構成するのに役立つ最も重要なパラメーターの1つです。ロック画面にはWalpaperManager.FLAG_LOCKを使用し、ホーム壁紙にはFLAG_SYSTEMを使用します
私はあなたにそれを使用する方法を理解させるために一例を挙げています:-
WalaperManager wm = WalaperManager.getInstance();
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
wm.setBitmap(bitmap,null,true,WalpaperManager.FLAG_LOCK);//For Lock screen
Toast.makeText(context.context, "done", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(context.context, "Lock screen walpaper not supported",
Toast.LENGTH_SHORT).show();
}
} catch (e: Exception) {
Toast.makeText(context.context, e.message, Toast.LENGTH_SHORT).show();
}
詳細については Android開発者壁紙マネージャーリファレンス をご覧ください。
これを行う別の方法があります。最初に、lockedscreenで設定したい写真をフォルダーに保存する必要があります(「appName」と呼ばれているとします)。次に、ギャラリーが開いた後、次のコードを使用してギャラリーを開きます。「appName」フォルダーを開くようにユーザーに指示します。システムのギャラリーで写真を選択します。ギャラリーでは、ユーザーは写真を壁紙またはロック画面の紙として設定できます。
//ギャラリーを開くためのこのコード。 startActivity(new Intent(Intent.ACTION_SET_WALLPAPER));