কিছু নতুন ডিভাইস বিটম্যাপ সংরক্ষণ করে না তাই আমি আরও কিছুটা ব্যাখ্যা করেছি ..
আপনি অনুমতি নীচে যোগ করেছেন তা নিশ্চিত করুন
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
এবং xml
ফোল্ডার নাম প্রদানকারী_প্যাথস.এক্সএমএল এর অধীনে একটি এক্সএমএল ফাইল তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_files"
path="." />
</paths>
এবং এর অধীনে অ্যান্ড্রয়েড ম্যানিফেস্টে
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
তারপরে কেবল সেভবিটম্যাপফায়ারকে কল করুন (পাসওয়্যার বিটম্যাপ এখানে)
public static void saveBitmapFile(Bitmap bitmap) throws IOException {
File mediaFile = getOutputMediaFile();
FileOutputStream fileOutputStream = new FileOutputStream(mediaFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, getQualityNumber(bitmap), fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}
কোথায়
File getOutputMediaFile() {
File mediaStorageDir = new File(
Environment.getExternalStorageDirectory(),
"easyTouchPro");
if (mediaStorageDir.isDirectory()) {
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(Calendar.getInstance().getTime());
String mCurrentPath = mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg";
File mediaFile = new File(mCurrentPath);
return mediaFile;
} else { /// error handling for PIE devices..
mediaStorageDir.delete();
mediaStorageDir.mkdirs();
galleryAddPic(mediaStorageDir);
return (getOutputMediaFile());
}
}
এবং অন্যান্য পদ্ধতি
public static int getQualityNumber(Bitmap bitmap) {
int size = bitmap.getByteCount();
int percentage = 0;
if (size > 500000 && size <= 800000) {
percentage = 15;
} else if (size > 800000 && size <= 1000000) {
percentage = 20;
} else if (size > 1000000 && size <= 1500000) {
percentage = 25;
} else if (size > 1500000 && size <= 2500000) {
percentage = 27;
} else if (size > 2500000 && size <= 3500000) {
percentage = 30;
} else if (size > 3500000 && size <= 4000000) {
percentage = 40;
} else if (size > 4000000 && size <= 5000000) {
percentage = 50;
} else if (size > 5000000) {
percentage = 75;
}
return percentage;
}
এবং
void galleryAddPic(File f) {
Intent mediaScanIntent = new Intent(
"android.intent.action.MEDIA_SCANNER_SCAN_FILE");
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
mImage.setImageBitmap(_result.getBitmap());
আমারonTaskComplete()
কলব্যাকের মাধ্যমে একটি চিত্র দর্শনে লোড করি । আমি এখন ব্যবহারকারীদের দীর্ঘ প্রেস কনটেক্সট মেনুতে চাইলে তারা স্থানীয়ভাবে ফাইলটি সংরক্ষণ করার অনুমতি দিতে হবে। আমার নীচের সমাধানটি ব্যবহার করতে সক্ষম হওয়া উচিত। আমি যদিও জানতে চাই, আপনি কি এর থেকে আরও ভাল পদ্ধতির আবিষ্কার করেছেন?