android高清联系人照片大小为常量



我知道android数据库保存两种联系人照片,[[[照片最多可以通过两种方式存储-默认的"照片"是直接存储在数据行中的缩略图大小的图像,而"显示照片"(如果存在)是存储为文件的较大版本。]]]小的是96*96,大的是480*480现在的问题是:

  1. 我仍然找不到大的,而小的在数据库中是"data15",有人告诉我如何获得大的吗
  2. 我需要把照片放在启动器的第一个屏幕上,所以我需要一张至少800*480的照片,照片大小必须有声明常量

PS:我试过了:

intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);

但当我打开数据库时,它变成了96*57。。。。困惑的一些帮助改变了它?

好人一声平安(那是中国好孩子,祝你好运)感谢^_^

我不太确定你把照片存储两次是什么意思?是的,很多设备都会生成缩略图,但这更多的是因为显示缩略图是一种常见的使用情况。

您是否尝试过获取用户ID并使用它来查询联系人数据表?

这可能是一个冗长的方法,但是,(伪代码)

Fetch contact id using the URI RawContacts.CONTENT_URI
Fetch Photo id using the URI Contacts.CONTENT_URI
Fetch Photo using the URI Data.CONTENT_URI, the projection you want here is Photo.PHOTO (this will give you a blob)

谷歌应该提供这些操作的易读示例:)

要获得更大的图像,您可以使用以下代码(前提是您有联系人ID):

public static InputStream getLargeContactPhoto(Long contactId, Context context) {
    Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
    Uri displayPhotoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
    try {
        AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");
        return fd.createInputStream();
    } catch (Exception e) {
        return null;
    }
}

最新更新