2009-12-26 119 views
25

是否有可能以編程方式設置android壁紙圖像?我想創建一項服務,從網站下載圖像並定期更新主屏幕壁紙。Android - 如何設置壁紙圖像

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -image/5813607#5813607點擊此鏈接我寫有示例代碼。 – Maidul 2011-04-28 04:30:09

回答

22

this page在開發者網站:

public void setStream (InputStream data) 

改變當前系統壁紙到一個特定的字節流。給InputStream複製到持久存儲中,現在將用作壁紙。目前它必須是JPEG或PNG圖像。

+7

請注意,API首先出現在2.0中;如果你想支持舊版本,請在上下文中使用原始API之一: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod 2009-12-26 20:51:11

+0

我試過了videoistream一樣的東西...它不工作... imageurl它工作正常...任何想法/建議在這裏。 – CoDe 2012-10-31 12:42:19

4

確定這裏是如何API 2.0之前做到這一點:

你需要調用getApplicationContext.setWallpaper(),並通過它的位圖。

現在不推薦使用此方法。有關新方法的詳細信息,請參閱ChrisF的答案。

5

如果您有圖像的位圖比,你會添加此功能設置爲牆紙:

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> 

添加權限希望它會工作

31

如果你有圖像的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> 
+0

我對視頻流嘗試了相同的東西..但我越來越---「SkImageDecoder :: Factory返回null」錯誤...在這裏的任何建議。 – CoDe 2012-10-31 10:44:34

+0

是否可以將動態壁紙設置爲應用程序的默認壁紙。 – CoDe 2012-10-31 12:47:38

+0

它必須是一個新的問題..無論如何,你的意思是默認的壁紙? – Kishore 2012-11-09 04:41:22