[RISOLTO] Fare uno screenshot e aggiungerlo ad un album della gallery
Ciao ragazzi, sono nuovo del forum e mi sono appena presentato qui: www .androidiani .com/forum/benvenuto/311300-davebaol-sbarca-su-androidiani-com.html
:D
Come da titolo ho la necessità di fare uno screenshot e aggiungerlo ad uno specifico album della gallery.
In realtà sono già riuscito a catturare lo screenshot e anche a pubblicarlo nell'album desiderato, tuttavia a operazione effettuata nella gallery mi ritrovo la stessa immagine duplicata anche nell'album "Fotocamera".
Come posso fare per evitare il fastidioso doppione?
Forse potrei rimuoverlo da codice ma preferirei una soluzione più "elegante".
Questo è il codice che ho utilizzato, il tutto parte da una chiamata al metodo statico createNewScreenshot.
codice:
public class ScreenshotUtil {
public static void createNewScreenshot(Activity activity) {
Bitmap bitmap = takeScreenshot(activity);
addToAlbumGallery(activity, bitmap);
bitmap.recycle();
}
private static Bitmap takeScreenshot(Activity activity) {
View rootView = activity.findViewById(android.R.id.content)
.getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap screenshot = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
return screenshot;
}
private static void addToAlbumGallery(Context context, Bitmap photo) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, bytes);
// Album directory on the external storage (it's the app name)
File dir = new File(Environment.getExternalStorageDirectory(), context
.getResources().getString(R.string.app_name));
// Make sure the album directory exists
dir.mkdirs();
String picName = "pic_" + System.currentTimeMillis();
File f = new File(dir, picName + ".png");
try {
f.createNewFile();
// Write bitmap bytes to the file and close the output stream
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();
// Save image to the album gallery
MediaStore.Images.Media.insertImage(context.getContentResolver(),
f.getAbsolutePath(), picName, "Screenshot");
} catch (IOException e) {
Log.e("ScrenshotUtil", "addToAlbumGallery", e);
}
// Refresh Android gallery
MediaScannerConnection.scanFile(context,
new String[] { f.getAbsolutePath() }, null, null);
}
}