एंड्रॉइड सिस्टम के लिए कार्यक्रम सीखने के दौरान, मुझे अपने संपर्क प्रबंधक को लिखने का काम सौंपा गया था, भले ही वह एक सिस्टम के बदले में न हो, जैसे कि एक प्रशिक्षण कार्य।
संपर्क सूची के साथ काम पहले ही
यहां वर्णित किया गया
है , और एक से अधिक बार, क्योंकि मैं केवल वही देखूंगा जो मैंने यहां नहीं देखा है, लेकिन, विशेष रूप से, संपर्क फोटो (संपर्क अवतार) के साथ काम करने के बारे में।
काम के दौरान, मैंने सहायक वर्ग लिखा था, यहां कोड देखा जा सकता
है । इसने एक संपर्क से तस्वीरों के साथ काम करने के लिए बुनियादी कार्यों को लागू किया।
दो मुख्य विधियाँ हैं:
public static void setContactPhoto(ContentResolver c, byte[] bytes, long personId)
public static Bitmap loadContactPhoto(ContentResolver cr, long id, Context context)
जैसा कि नाम का अर्थ है, पहली विधि में, हम संपर्क करने के लिए नई फोटो को सहेजते हैं, और दूसरी विधि संपर्क डेटाबेस से फोटो को लोड करती है।
तरीकों का उपयोग:
किसी फ़ोटो को किसी संपर्क में सहेजने के लिए, आपको पहले इसे प्राप्त करना होगा, उदाहरण के लिए, गैलरी से।
मान लीजिए कि हमारे पास सक्रियण पर एक इमेजबटन बटन है, जिस पर क्लिक करके गैलरी से फोटो चुनने के लिए एक विंडो दिखाई देगी। यह मत भूलो कि गैलरी में फोटो किसी भी आकार का हो सकता है, क्योंकि, पहले, फोटो को वांछित आकार में घटाया जाना चाहिए। सौभाग्य से, एंड्रॉइड के लिए प्रोग्रामर को आकार को कम करने और छवियों को क्रॉप करने के लिए एल्गोरिदम के ज्ञान की आवश्यकता नहीं है, सब कुछ पहले से ही Google द्वारा किया गया है, यह कॉल करने के लिए आवश्यक मापदंडों को जोड़ने के लिए पर्याप्त है, नीचे एक उदाहरण:
private static final int REQ_CODE_PICK_IMAGE = 1; private Bitmap contactPhoto = null; private ImageView ibtnAvatar; @Override protected void onCreate(Bundle bundle) { ... ibtnAvatar = (ImageButton) findViewById(R.id.ibtn_avatar); ibtnAvatar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); i.putExtra("crop", "true"); i.putExtra("aspectX", 1); i.putExtra("aspectY", 1); i.putExtra("outputX", 500); i.putExtra("outputY", 500); i.putExtra("scale", true); i.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); i.putExtra("noFaceDetection", false); i.putExtra("return-data", false); i.putExtra(MediaStore.EXTRA_OUTPUT, ContactPhotoHelper.getTempUri()); startActivityForResult(i, REQ_CODE_PICK_IMAGE); } }); }
जैसा कि हम इस कोड से देख सकते हैं, एक नया इरादा बनाते समय, हमने प्रलेखन से इसमें पैरामीटर जोड़े, स्वचालित रूप से फसल को आकार देने और फोटो को कम करने के लिए। सिस्टम गतिविधि के निष्पादन का परिणाम, मानक द्वारा, onActivityResult के कॉल में डाल देगा, जिससे इसकी गतिविधि हुई।
यह ध्यान दिया जाना चाहिए कि इस उदाहरण में, सिस्टम गतिविधि परिणाम को अस्थायी फ़ाइल में डाल देगी जिसे हमने ContactPhotoHelper.getTempUri () विधि में बनाया था।
परिणाम का प्रसंस्करण: परिणामी फोटो बटन पर प्रदर्शित होगी
@Override protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { super.onActivityResult(requestCode, resultCode, imageReturnedIntent); switch (requestCode) { case REQ_CODE_PICK_IMAGE: if (resultCode == RESULT_OK) { contactPhoto = BitmapFactory.decodeFile(ContactPhotoHelper.getTempFile() .getAbsolutePath()); ibtnAvatar.setImageBitmap(contactPhoto); } } }
उसके बाद, आप उपयोगकर्ता को इस प्रोफ़ाइल फ़ोटो को सहेज सकते हैं:
if (contactPhoto != null) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); contactPhoto.compress(CompressFormat.PNG, 0 , bos); byte[] bitmapdata = bos.toByteArray(); ContactPhotoHelper.setContactPhoto(getContentResolver(), bitmapdata, contactId); }
नतीजतन, चयनित संपर्क एक नई तस्वीर प्राप्त करता है
संपर्क सूची से एक फोटो लोड करने के लिए, कॉल बहुत सरल है, उसी ImageButton बटन का उपयोग करें:
ibtnAvatar.setImageBitmap(ContactPhotoHelper.loadContactPhoto(getContentResolver(), contactId, this));
इस प्रकार, केवल दो स्थिर तरीकों के साथ, मैंने संपर्क फ़ोटो के साथ काम को बहुत सरल कर दिया, यह Google के डेवलपर्स द्वारा क्यों नहीं किया गया, मुझे नहीं पता।
आपका ध्यान देने के लिए धन्यवाद।