给手机上面的图片设置为背景
之前一直想做一个浏览汽车图片的app,并将自己喜欢的汽车图片设置成手机背景,因为一直在工作没有什么时间搞,现在自己写了一个mvp的小项目,虽然跟之前想到做汽车图片浏览app(DanShiApp)不一样,但是也有图片浏览的相关模块,所以就一起实现了设置手机背景的功能,废话多少先上代码
设置手机背景需要添加权限
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
复制代码
try {
WallpaperManager instance = WallpaperManager.getInstance(WallPicActivity.this);
int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getWidth();
int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();
instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);
instance.setBitmap(bitmap);
Toast.makeText(WallPicActivity.this,"壁纸设置成功",Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这里的bitmap 时间网络请求的url 转化成的,可以用下面这个方法
/**
* 根据图片的url路径获得Bitmap对象
* @param url
* @return
*/
private Bitmap returnBitmap(String url) {
URL fileUrl = null;
Bitmap bitmap = null;
try {
fileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) fileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
不过我用的是picasso 框架转化的
Bitmap bitmap = Picasso.with(context).load(bitmapUrl).get();
可能需要注意的几点,这些方法是要异步操作的,我用的是Rxjava操作的这里也贴上代码
/**
*把图片设置成手机壁纸
*/
private void makeWallpaper() {
Observable.create(new Observable.OnSubscribe<Bitmap>() {
@Override
public void call(Subscriber<? super Bitmap> subscriber) {
Bitmap bitmap = null;
try {
bitmap = Picasso.with(MeiZhiDetailActivity.this).load(bitmapUrl).get();
} catch (IOException e) {
e.printStackTrace();
}
subscriber.onNext(bitmap);
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Bitmap>() {
@Override
public void onCompleted() {
Toast.makeText(MeiZhiDetailActivity.this, "壁纸设置成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Bitmap bitmap) {
try {
WallpaperManager instance = WallpaperManager.getInstance(MeiZhiDetailActivity.this);
int desiredMinimumWidth = getWindowManager().getDefaultDisplay().getWidth();
int desiredMinimumHeight = getWindowManager().getDefaultDisplay().getHeight();
instance.suggestDesiredDimensions(desiredMinimumWidth, desiredMinimumHeight);
instance.setBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
好了基本的步骤大概就是这些,大家也把喜欢的图片设置成手机壁纸吧!