2009-12-26 62 views
25

Có thể đặt hình nền android theo chương trình không? Tôi muốn tạo một dịch vụ tải xuống hình ảnh từ web và cập nhật hình nền màn hình chính định kỳ.Android - làm thế nào để thiết lập hình nền hình ảnh

+0

http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper -image/5813607 # 5813607 nhấp vào liên kết này Tôi viết ở đó mã mẫu. – Maidul

Trả lời

22

Từ this page trên trang web nhà phát triển:

public void setStream (InputStream data) 

Thay đổi hệ thống nền hiện tại để một dòng byte cụ thể. Cho InputStream được sao chép vào lưu trữ liên tục và bây giờ sẽ được sử dụng làm hình nền. Hiện tại, ảnh phải là ảnh JPEG hoặc PNG.

+7

Lưu ý rằng API đầu tiên xuất hiện trong 2.0; nếu bạn muốn hỗ trợ các phiên bản cũ hơn, hãy sử dụng một trong các API gốc trên Ngữ cảnh: http://developer.android.com/reference/android/content/Context.html#setWallpaper(java.io.InputStream) – hackbod

+0

tôi đã thử cùng một điều cho videoistream ... nó không hoạt động ... cho imageurl nó hoạt động tốt ... bất kỳ ý tưởng/gợi ý ở đây. – CoDe

4

OK Dưới đây là làm thế nào để làm điều đó trước khi api 2.0:

Bạn cần phải gọi getApplicationContext.setWallpaper() và vượt qua nó bitmap.

Phương pháp này hiện không được chấp nhận. Xem câu trả lời của ChrisF để biết chi tiết về phương pháp mới.

5

Nếu bạn có bitmap của hình ảnh hơn bạn sẽ thêm chức năng này để thiết lập làm hình nền:

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(); 
    }   
} 

bạn nên thêm phép này

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

hy vọng nó sẽ làm việc

31

Nếu bạn có URL hình ảnh sau đó sử dụng

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

Nếu bạn có hình ảnh URI sau đó sử dụng

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

Trong file manifest của bạn:

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

Tôi đã thử những thứ tương tự cho dòng video .. nhưng tôi nhận được --- "SkImageDecoder :: Nhà máy trả về null" lỗi ... bất kỳ đề nghị ở đây. – CoDe

+0

là có thể đặt hình nền động làm hình nền mặc định từ ứng dụng. – CoDe

+0

Nó phải là một câu hỏi mới .. anyways bạn có ý nghĩa gì theo hình nền mặc định? – Kishore

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