我想从图库中设置一个壁纸。 所选图像必须使用设备的CropImage类。
问题是每个设备都有一个不同的CropImage类,所以当我使用“Crop”动作时,设备的CropImage会打开,但不会全部设置为一个Wallper。
代码:
Intent cropperIntent = new Intent("com.android.camera.action.CROP", chosenImageUri);
cropperIntent.setDataAndType(chosenImageUri, "image/*");
cropperIntent.putExtra("crop", true);
cropperIntent.putExtra("aspectX", outSize.x);
cropperIntent.putExtra("aspectY", outSize.y);
cropperIntent.putExtra("outputX", outSize.x);
cropperIntent.putExtra("outputY", outSize.y);
cropperIntent.putExtra("width", outSize.x);
cropperIntent.putExtra("height", outSize.y);
cropperIntent.putExtra("scale", true);
cropperIntent.putExtra("noFaceDetection", true);
cropperIntent.putExtra("set-as-wallpaper", true); // for: com.android.gallery3d.app.CropImage
cropperIntent.putExtra("setWallpaper", true); // for: com.android.camera.CropImage
对于某些设备,它根本不设置为壁纸(如HTC)。也许必须设置另外一个额外的,如“set-as-wallpaper”和“set-as-wallpaper”......
是否有一种通用的方法来为所有设备设置壁纸的裁剪器?
答案 0 :(得分:0)
这在某些手机上无法使用,例如HTC因为他们使用自己的图库/相机。对于这些设备,您可以使用未剪切的图像作为单独的资源。但是,如果你有图像的位图,你将添加此功能设置为壁纸:
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>
这取自here。