سؤال

هل من الممكن ضبط صورة خلفية Android برمجيًا؟ أرغب في إنشاء خدمة تقوم بتنزيل صورة من الويب وتحديث خلفية الشاشة الرئيسية بشكل دوري.

هل كانت مفيدة؟

المحلول

من عند هذه الصفحة على موقع المطور:

public void setStream (InputStream data)

قم بتغيير خلفية النظام الحالية إلى تيار بايت محدد. يتم نسخ Give InputStream في التخزين المستمر وسيتم استخدامه الآن كخلفية. حاليًا يجب أن تكون إما صورة JPEG أو PNG.

نصائح أخرى

إذا كان لديك عنوان URL صورة ثم استخدم

WallpaperManager wpm = WallpaperManager.getInstance(context);
InputStream ins = new URL("absolute/path/of/image").openStream();
wpm.setStream(ins);

إذا كان لديك صورة uri ثم استخدم

WallpaperManager wpm = WallpaperManager.getInstance(context);
wpm.setResource(Uri.of.image);

في ملف الخاص بك:

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>

إذا كان لديك صورة نقطية من الصورة أكثر مما ستضيف هذه الوظيفة لتعيين خلفية:

  public void SetBackground(int Url) {

    try {
        File file = new File("/sdcard/sampleimage");
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), Url);
        bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(file));
        Context context = this.getBaseContext();
        context.setWallpaper(bitmap);            
        Toast.makeText(getApplicationContext(), "Wallpaper has been set",             Toast.LENGTH_SHORT).show();            
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }         
}

يجب عليك إضافة إذن لهذا

<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>

أتمنى أن تعمل

حسنًا ، إليك كيفية القيام بذلك قبل API 2.0:

تحتاج إلى استدعاء getApplicationContext.setWallpaper () وتمريرها نقطية.

تم الآن إهمال هذه الطريقة. انظر إجابة Chrisf للحصول على تفاصيل حول الطريقة الجديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top