Define Object
File myFolder;
File file;
WallpaperManager wallpaperManager ;
In Oncreat
boolean success = false;
myFolder = new File("/sdcard/Diwali/");
if( myFolder.exists() ){
Log.d("", "FOLDER EXISTS");
}else{
success = myFolder.mkdir();
if( success ){
// Do something on success
} else {
// Do something else on failure
throw new RuntimeException("File Error in writing new folder");
}
}
On Click Set Wallpaper
SetWallpaper();
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
img.setDrawingCacheEnabled(true);
Bitmap bmScreen = img.getDrawingCache();
Bitmap scaled = Bitmap.createScaledBitmap(bmScreen, width, height, true);
File myDir = new File(""+myFolder);
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
scaled.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
wallpaperManager = WallpaperManager.getInstance(GalleryActivity.this.getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
Methods
private void SetWallpaper() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirm");
builder.setMessage("Set as Wallpaper ?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Do nothing but close the dialog
applyWallpaperFromFile(file);
dialog.dismiss();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
public static Bitmap decodeFile(File file, int reqWidth, int reqHeight){
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file.getPath(), options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(file.getPath(), options);
}
private static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
private void applyWallpaperFromFile(final File file)
{
Bitmap wallpaperImage = BitmapFactory.decodeFile(file.getPath());
try {
if((wallpaperManager.getDesiredMinimumWidth()>0)&&(wallpaperManager.getDesiredMinimumHeight()>0))
{
Bitmap blank = BitmapHelper.createNewBitmap(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight());
Bitmap overlay = BitmapHelper.overlayIntoCentre(blank, wallpaperImage);
wallpaperManager.setBitmap(overlay);
}
else
{
wallpaperManager.setBitmap(wallpaperImage);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.runOnUiThread(new Runnable() {
@Override
public void run() {
//Toast.makeText(FullSMSView.this,"Wallpaper set to:"+file.getName(), Toast.LENGTH_SHORT).show();
Toast.makeText(GalleryActivity.this,"Set as a Wallpaper", Toast.LENGTH_SHORT).show();
}
});
}
public static class BitmapHelper {
public static Bitmap overlayIntoCentre(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);//draw background bitmap
//overlay the second in the centre of the first
//(may experience issues if the first bitmap is smaller than the second, but then why would you want to overlay a bigger one over a smaller one?!)
canvas.drawBitmap(bmp2, (bmp1.getWidth()/2)-(bmp2.getWidth()/2), 0, null);
return bmOverlay;
}
public static Bitmap createNewBitmap(int width, int height)
{
//create a blanks bitmap of the desired width/height
return Bitmap.createBitmap(width, height, Config.ARGB_8888);
}
}
Njoy the Code!!
File myFolder;
File file;
WallpaperManager wallpaperManager ;
In Oncreat
boolean success = false;
myFolder = new File("/sdcard/Diwali/");
if( myFolder.exists() ){
Log.d("", "FOLDER EXISTS");
}else{
success = myFolder.mkdir();
if( success ){
// Do something on success
} else {
// Do something else on failure
throw new RuntimeException("File Error in writing new folder");
}
}
On Click Set Wallpaper
SetWallpaper();
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
img.setDrawingCacheEnabled(true);
Bitmap bmScreen = img.getDrawingCache();
Bitmap scaled = Bitmap.createScaledBitmap(bmScreen, width, height, true);
File myDir = new File(""+myFolder);
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
scaled.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
wallpaperManager = WallpaperManager.getInstance(GalleryActivity.this.getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
Methods
private void SetWallpaper() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirm");
builder.setMessage("Set as Wallpaper ?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Do nothing but close the dialog
applyWallpaperFromFile(file);
dialog.dismiss();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
public static Bitmap decodeFile(File file, int reqWidth, int reqHeight){
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file.getPath(), options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeFile(file.getPath(), options);
}
private static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
private void applyWallpaperFromFile(final File file)
{
Bitmap wallpaperImage = BitmapFactory.decodeFile(file.getPath());
try {
if((wallpaperManager.getDesiredMinimumWidth()>0)&&(wallpaperManager.getDesiredMinimumHeight()>0))
{
Bitmap blank = BitmapHelper.createNewBitmap(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight());
Bitmap overlay = BitmapHelper.overlayIntoCentre(blank, wallpaperImage);
wallpaperManager.setBitmap(overlay);
}
else
{
wallpaperManager.setBitmap(wallpaperImage);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.runOnUiThread(new Runnable() {
@Override
public void run() {
//Toast.makeText(FullSMSView.this,"Wallpaper set to:"+file.getName(), Toast.LENGTH_SHORT).show();
Toast.makeText(GalleryActivity.this,"Set as a Wallpaper", Toast.LENGTH_SHORT).show();
}
});
}
public static class BitmapHelper {
public static Bitmap overlayIntoCentre(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);//draw background bitmap
//overlay the second in the centre of the first
//(may experience issues if the first bitmap is smaller than the second, but then why would you want to overlay a bigger one over a smaller one?!)
canvas.drawBitmap(bmp2, (bmp1.getWidth()/2)-(bmp2.getWidth()/2), 0, null);
return bmOverlay;
}
public static Bitmap createNewBitmap(int width, int height)
{
//create a blanks bitmap of the desired width/height
return Bitmap.createBitmap(width, height, Config.ARGB_8888);
}
}
Njoy the Code!!
No comments:
Post a Comment