বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

ফটো থাম্বনেইল সেট করুন

QuickContactBadge এর জন্য কনট্যাক্ট URI সেট করা স্বয়ংক্রিয়ভাবে কনট্যাক্টের থাম্বনেইল ফটো লোড করে না। ফটো লোড করতে, ফটোর জন্য কনট্যাক্টের Cursor রো থেকে একটি URI নিন, কমপ্রেস করা থাম্বনেইল ফটো ধারণ করা ফাইল ওপেন করতে, এবং একটি Bitmap এর মধ্যে ফাইলটি পাঠ (রিড) করতে এটাকে ব্যবহার করুন ।

নোট: PHOTO_THUMBNAIL_URI কলামটি ৩.০ এর পূর্বেকার প্লাটফর্ম সংস্করণে পাওয়া যায় না। ঐ সংস্করণগুলোর জন্য আপনাকে অবশ্যই Contacts.Photo সাবটেবিল থেকে URI উদ্ধার করতে হবে।

প্রথমে, Contacts._ID এবং Contacts.LOOKUP_KEY কলাম ধারন করা Cursor এর জন্য ভেরিয়েবল সেট করা, যেভাবে পূর্বে আলোচনা করা হয়েছে:

// The column in which to find the thumbnail ID int mThumbnailColumn; /*

 * The thumbnail URI, expressed as a String.
 * Contacts Provider stores URIs as String values.
 */
String mThumbnailUri;
...
/*
 * Gets the photo thumbnail column index if
 * platform version >= Honeycomb
 */
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    mThumbnailColumn =
            mCursor.getColumnIndex(Contacts.PHOTO_THUMBNAIL_URI);
// Otherwise, sets the thumbnail column to the _ID column
} else {
    mThumbnailColumn = mIdColumn;
}
/*
 * Assuming the current Cursor position is the contact you want,
 * gets the thumbnail ID
 */
mThumbnailUri = mCursor.getString(mThumbnailColumn);
...

একটি পদ্ধতি নির্ধারণ করুন যা কনট্যাক্টের জন্য ফটো-সম্পর্কিত ডাটা এবং গন্তব্য ভিউয়ের জন্য মাত্রা (ডাইমেনশন) নেয়, এবং একটি Bitmap এর মধ্যে সঠিক-মাপের থাম্বনেইল ফেরত দেয়। একটি URI গঠন করার মাধ্যমে শুরু করুন যা থাম্বনেইলকে নির্দেশ করে:

 /**
     * Load a contact photo thumbnail and return it as a Bitmap,
     * resizing the image to the provided image dimensions as needed.
     * @param photoData photo ID Prior to Honeycomb, the contact's _ID value.
     * For Honeycomb and later, the value of PHOTO_THUMBNAIL_URI.
     * @return A thumbnail Bitmap, sized to the provided width and height.
     * Returns null if the thumbnail is not found.
     */
    private Bitmap loadContactPhotoThumbnail(String photoData) {
        // Creates an asset file descriptor for the thumbnail file.
        AssetFileDescriptor afd = null;
        // try-catch block for file not found
        try {
            // Creates a holder for the URI.
            Uri thumbUri;
            // If Android 3.0 or later
            if (Build.VERSION.SDK_INT
                    >=
                Build.VERSION_CODES.HONEYCOMB) {
                // Sets the URI from the incoming PHOTO_THUMBNAIL_URI
                thumbUri = Uri.parse(photoData);
            } else {
            // Prior to Android 3.0, constructs a photo Uri using _ID
                /*
                 * Creates a contact URI from the Contacts content URI
                 * incoming photoData (_ID)
                 */
                final Uri contactUri = Uri.withAppendedPath(
                        Contacts.CONTENT_URI, photoData);
                /*
                 * Creates a photo URI by appending the content URI of
                 * Contacts.Photo.
                 */
                thumbUri =
                        Uri.withAppendedPath(
                                contactUri, Photo.CONTENT_DIRECTORY);
            }

        /*
         * Retrieves an AssetFileDescriptor object for the thumbnail
         * URI
         * using ContentResolver.openAssetFileDescriptor
         */
        afd = getActivity().getContentResolver().
                openAssetFileDescriptor(thumbUri, "r");
        /*
         * Gets a file descriptor from the asset file descriptor.
         * This object can be used across processes.
         */
        FileDescriptor fileDescriptor = afd.getFileDescriptor();
        // Decode the photo file and return the result as a Bitmap
        // If the file descriptor is valid
        if (fileDescriptor != null) {
            // Decodes the bitmap
            return BitmapFactory.decodeFileDescriptor(
                    fileDescriptor, null, null);
            }
        // If the file isn't found
        } catch (FileNotFoundException e) {
            /*
             * Handle file not found errors
             */
        }
        // In all cases, close the asset file descriptor
        } finally {
            if (afd != null) {
                try {
                    afd.close();
                } catch (IOException e) {}
            }
        }
        return null;
    }

থাম্বনেইল Bitmap পেতে আপনার কোডের মধ্যে loadContactPhotoThumbnail()পদ্ধতি কল করুন, এবং আপনার QuickContactBadge এর মধ্যে ফটো থাম্বনেইল সেট করতে রেজাল্ট টি ব্যবহার করুন:

   ...
    /*
     * Decodes the thumbnail file to a Bitmap.
     */
    Bitmap mThumbnail =
            loadContactPhotoThumbnail(mThumbnailUri);
    /*
     * Sets the image in the QuickContactBadge
     * QuickContactBadge inherits from ImageView, so
     */
    mBadge.setImageBitmap(mThumbnail);