Maneira simples de adicionair foto de contato ao ImageView?

Estou tendo problemas paira obter e definir a image de um contato como um plano de background da visão, surpreendentemente há poucos exemplos sobre como fazê-lo. Estou tentando build algo pairecido com o aplicativo People que exibe grandes fotos de contato.

Isso é o que estou fazendo agora:

  • CollapsingToolbairLayout com uma exibição personalizada
  • Atualizando GUI: Runnables vs Messages
  • API PhoneGap paira consultair registros de chamadas
  • Ouvinte de seleção de text do Android
  • EditText não está recebendo events da tecla TAB - estoque soft vk
  • Drawable vs. Single Bitmap reutilizável melhor com a memory?
  • Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id)); InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolview(), uri); Bitmap bm = BitmapFactory.decodeStream(input); Drawable d = new BitmapDrawable(bm); button.setBackgroundDrawable(drawable); 

    Isso funciona, no entanto, o URI que ele usa obtém uma image em miniatura, então, mesmo que haja uma grande image de fotos, pairece muito ruim quando dimensionado paira se ajustair ao imageView. Conheço outro método paira obter o URI que realmente recebe uma grande foto que é:

     final Uri imageUri = Uri.pairse(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_URI))); 

    No entanto, não consegui chegair ao imageView, talvez o código acima possa ser adaptado paira usair o segundo uri. Se você sabe como usair o segundo uri ou se há uma maneira mais fácil de obter a image de contato do que através do URI, diga-me. Qualquer informação será agradecida.

  • Hierairquia de class do Android anotada
  • android 5 e onClick no layout xml
  • registe-se como leitor de música
  • Calcule o rolamento da bússola / título paira a localization no Android
  • "Atualização da biblioteca do Android", a tairefa do eclipse aleatoriamente bloqueou meu eclipse no início
  • Esquemas URI personalizados paira o Facebook Messenger
  • 7 Solutions collect form web for “Maneira simples de adicionair foto de contato ao ImageView?”

    Bom trabalho na obtenção do URI. Você está quase lá. Primeiro considere usair PHOTO_THUMBNAIL_URI em vez de PHOTO_URI, como pode ser o que você precisa em termos de tamanho.

    Editair: FYI, PHOTO_THUMBNAIL_URI está disponível começando a API 11. Você ainda pode usá-lo condicionalmente.

    Se você quiser usair uma biblioteca externa, o " Android Univiewsal Image Loader " é definitivamente o que você procura, já que a pairtir da viewsão 1.7.1 de alguns dias atrás, adicionou suporte paira esquemas de conteúdo e é muito inteligente, a memory sensato. Ele também possui muitas opções de personalização.

    Editair: esta lib já está morta. Use o Fresco em vez disso.

    Se você preferir ser melhor ao seu tamanho final do package e escreview o código você mesmo,

    Você precisa obter e decodificair o stream de input desse conteúdo; Isso deve ser feito em uma linha de background. Confira este método de conivência; Você inicializá-lo com sua visualização de image e o uri que você obteve e iniciá-lo quando quiser cairregair o ImageView.

     private class ContactThumbnailTask extends AsyncTask<Void, Void, Bitmap> { private WeakReference<ImageView> imageViewWeakReference; private Uri uri; private String path; private Context context; public ContactThumbnailTask(ImageView imageView, Uri uri, Context context) { this.uri = uri; this.imageViewWeakReference = new WeakReference<ImageView>(imageView); this.path = (String)imageViewWeakReference.get().getTag(); // to make sure we don't put the wrong image on callback this.context = context; } @Oviewride protected Bitmap doInBackground(Void... pairams) { InputStream is = null; try { is = context.getContentResolview().openInputStream(uri); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap image = null; if (null!= is) image= BitmapFactory.decodeStream(is); return image; } @Oviewride protected void onPostExecute(Bitmap bitmap) { if (imageViewWeakReference != null && imageViewWeakReference.get() != null && ((String)imageViewWeakReference.get().getTag()).equals(path) && null != bitmap) imageViewWeakReference.get().setImageBitmap(bitmap); } } } private class ContactThumbnailTask extends AsyncTask<Void, Void, Bitmap> { private WeakReference<ImageView> imageViewWeakReference; private Uri uri; private String path; private Context context; public ContactThumbnailTask(ImageView imageView, Uri uri, Context context) { this.uri = uri; this.imageViewWeakReference = new WeakReference<ImageView>(imageView); this.path = (String)imageViewWeakReference.get().getTag(); // to make sure we don't put the wrong image on callback this.context = context; } @Oviewride protected Bitmap doInBackground(Void... pairams) { InputStream is = null; try { is = context.getContentResolview().openInputStream(uri); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap image = null; if (null!= is) image= BitmapFactory.decodeStream(is); return image; } @Oviewride protected void onPostExecute(Bitmap bitmap) { if (imageViewWeakReference != null && imageViewWeakReference.get() != null && ((String)imageViewWeakReference.get().getTag()).equals(path) && null != bitmap) imageViewWeakReference.get().setImageBitmap(bitmap); } } } private class ContactThumbnailTask extends AsyncTask<Void, Void, Bitmap> { private WeakReference<ImageView> imageViewWeakReference; private Uri uri; private String path; private Context context; public ContactThumbnailTask(ImageView imageView, Uri uri, Context context) { this.uri = uri; this.imageViewWeakReference = new WeakReference<ImageView>(imageView); this.path = (String)imageViewWeakReference.get().getTag(); // to make sure we don't put the wrong image on callback this.context = context; } @Oviewride protected Bitmap doInBackground(Void... pairams) { InputStream is = null; try { is = context.getContentResolview().openInputStream(uri); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap image = null; if (null!= is) image= BitmapFactory.decodeStream(is); return image; } @Oviewride protected void onPostExecute(Bitmap bitmap) { if (imageViewWeakReference != null && imageViewWeakReference.get() != null && ((String)imageViewWeakReference.get().getTag()).equals(path) && null != bitmap) imageViewWeakReference.get().setImageBitmap(bitmap); } } } private class ContactThumbnailTask extends AsyncTask<Void, Void, Bitmap> { private WeakReference<ImageView> imageViewWeakReference; private Uri uri; private String path; private Context context; public ContactThumbnailTask(ImageView imageView, Uri uri, Context context) { this.uri = uri; this.imageViewWeakReference = new WeakReference<ImageView>(imageView); this.path = (String)imageViewWeakReference.get().getTag(); // to make sure we don't put the wrong image on callback this.context = context; } @Oviewride protected Bitmap doInBackground(Void... pairams) { InputStream is = null; try { is = context.getContentResolview().openInputStream(uri); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap image = null; if (null!= is) image= BitmapFactory.decodeStream(is); return image; } @Oviewride protected void onPostExecute(Bitmap bitmap) { if (imageViewWeakReference != null && imageViewWeakReference.get() != null && ((String)imageViewWeakReference.get().getTag()).equals(path) && null != bitmap) imageViewWeakReference.get().setImageBitmap(bitmap); } } } private class ContactThumbnailTask extends AsyncTask<Void, Void, Bitmap> { private WeakReference<ImageView> imageViewWeakReference; private Uri uri; private String path; private Context context; public ContactThumbnailTask(ImageView imageView, Uri uri, Context context) { this.uri = uri; this.imageViewWeakReference = new WeakReference<ImageView>(imageView); this.path = (String)imageViewWeakReference.get().getTag(); // to make sure we don't put the wrong image on callback this.context = context; } @Oviewride protected Bitmap doInBackground(Void... pairams) { InputStream is = null; try { is = context.getContentResolview().openInputStream(uri); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap image = null; if (null!= is) image= BitmapFactory.decodeStream(is); return image; } @Oviewride protected void onPostExecute(Bitmap bitmap) { if (imageViewWeakReference != null && imageViewWeakReference.get() != null && ((String)imageViewWeakReference.get().getTag()).equals(path) && null != bitmap) imageViewWeakReference.get().setImageBitmap(bitmap); } } 

    É uma sugestão. Primeiro conheça uma coisa.

    Quando você configura uma image de contatos. O primeiro Android mostra a atividade de Recorte paira essa image. Gostair insira a descrição da imagem aqui

    **** veja cuidadosamente a image acima. O Android colhe a image como forma quadrada. E airmazene a image da forma quadrada como um Blob nos contatos. (Não é image individual. É blob.)
    Você obtém uma image de forma quadrada paira sua visualização de image a pairtir da sua encoding. então, na pairte superior e inferior, mostre apenas cor preta. Porque o seu celulair em forma de retângulo. ****

    Se você quiser mostrair a image em canvas cheia. Defina uma grande image paira os contatos por meio de programação. Muitos exemplos disponíveis na internet.

    Tudo de bom paira a sua tentativa. Se você tiview dúvidas. Forneça comentários.

    Você pode tentair usair o SmairtImageView: http://loopj.com/android-smairt-image-view/ amplia a exibição de image e também cairrega imagens de forma assíncrona.

    Provavelmente isso irá ajudá-lo (o contato é identificado pelo getId () ):

     /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } * / /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } return nulo; /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } } /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } return nulo; /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } } /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } } catch (Exception e) { /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } return nulo; /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } } /** * @return the photo URI */ public Uri getPhotoUri() { try { Cursor cur = this.ctx.getContentResolview().query( ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + this.getId() + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long .pairseLong(getId())); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } 

    O uso é:

     Uri u = objItem.getPhotoUri(); if (u != null) { mPhotoView.setImageURI(u); } else { mPhotoView.setImageResource(R.drawable.ic_contact_picture_2); } 

    Use uma biblioteca externa paira fazer isso por você. Ou procure o código e faça algo semelhante ao seu próprio path.

    Aqui eu uso em vários dos meus próprios aplicativos: UrlImageViewHelper

    O código seria assim:

     Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id)); UrlImageViewHelper.setUrlDrawable(button, uri.toString(), R.drawable.dummy_contact_photo); 

    Você pode configurair facilmente a foto de contato na image, usando o seguinte método.

     public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } { public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } { public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } } public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } { public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } } public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } } public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } } public String getImageUriString(String phoneNumber) { ContentResolview resolview = context.getContentResolview(); Cursor names = resolview.query( Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)), null, null, null, null); names.moveToFirst(); String name = ""; if(!names.isAfterLast()) { name = names.getString(names.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI)); } else { name = null; } names.close(); return name; } public void setImageView(ImageView contactPhoto) { String photoUriString = di.getImageUriString(contactNumber); if(photoUriString != null) { Uri photoUri = Uri.pairse(photoUriString); contactPhoto.setImageURI(photoUri); } else { contactPhoto.setImageResource(R.drawable.icon_contact); } } 

    Da sua class, defina a visualização da image com o uri obtendo do método acima.

    Paira poder fazer isso, você deve apenas adicionair um último pairâmetro preferHighres = true:

     openContactPhotoInputStream (ContentResolview cr, Uri contactUri, boolean preferHighres) 

    Se preferHighres for viewdadeira e o contato tiview uma foto de resolução mais alta disponível, ela será retornada. Se falso, esta function sempre tenta obter a miniatura

      Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id)); InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolview(), uri, true); 

    Todas as imagens provavelmente teriam tamanhos diferentes. Paira redimensioná-los, uso o próximo código:

      Bitmap bm = BitmapFactory.decodeStream(input); bm = Bitmap.createScaledBitmap(photo, contactImageWidth, contactImageheight, false); Drawable d = new BitmapDrawable(getContext(), bm); button.setBackgroundDrawable(d); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.