MetroUI-Folder-OS-OS-Android-icon

Bilder von Kontakten darstellen

Heute nur ein kurzer Eintrag.

Wer sich schon einmal gefragt hat wie er Bilder von seinen Kontakten in Android darstellen kann (in einer ImageView) dem gebe ich hiermit  2 Möglichkeiten in die Hand.

Möglichkeiten

Generell gibt es 2 Möglichkeiten:

  1. Thumbnail darstellen
  2. Hochauflösendes Bild darstellen

Thumbnail laden

Dies ist die einfachste Möglichkeit. Dazu braucht ihr einfach eine Funktion welcher ihr die ID des Kontakts übergebt (_ID aus ContactsContract):

Quellcode   
public Bitmap GetContactPicture(int iContactID)
{
  Uri                 my_contact_Uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(iContactID));
  InputStream         photo_stream   = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(), my_contact_Uri);            
  BufferedInputStream buf            = new BufferedInputStream(photo_stream);
  return BitmapFactory.decodeStream(buf);
}

Hochauflösendes Bild laden

Diese Möglichkeit ist schon etwas komplexer, liefert dafür aber das Kontaktbild in höherer Auflösung:

Auch hier braucht ihr einfach nur wieder eine Funktion welche die ID des Kontakts als Parameter benötigt (_ID aus ContactContract):

Quellcode   
public Bitmap GetContactPicture(int iContactID)
{
  ContentResolver     cr              = getBaseContext().getContentResolver();
  Uri                 contactUri      = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, iContactID);
  Uri                 displayPhotoUri = Uri.withAppendedPath(contactUri,ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
  InputStream         input           = null;
  AssetFileDescriptor fd              = null;
  try {
    fd    = cr.openAssetFileDescriptor(displayPhotoUri, "r");
    input = fd.createInputStream();
  } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  return BitmapFactory.decodeStream(input);
}

Bild darstellen

Egal welche der beiden Funktionen Ihr nun umgesetzt habt, um das ausgewählte Bild nun darzustellen benötigt ihr nur noch wenig Code:

Quellcode   
ImageView imgContactPicture;
imgContactPicture = (ImageView) findViewById(R.id.imgContactPicture);
imgContactPicture.setImageBitmap(GetContactPicture(contact_id));

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.