【联系人】联系人调用相机拍照或使用图片设置头像后出现头像模糊
Root Cause :
1 联系人存储的时候先存储缩略图后存储原图
2 联系人详情界面的Contact对象查询的是view_entities, 其创建的代表头像原图的字段如下设计:
private static String buildDisplayPhotoUriAlias(String contactIdColumn, String alias) { return "(CASE WHEN " + Contacts.PHOTO_FILE_ID + " IS NULL THEN (CASE WHEN " + Contacts.PHOTO_ID + " IS NULL" + " OR " + Contacts.PHOTO_ID + "=0" + " THEN NULL" + " ELSE '" + Contacts.CONTENT_URI + "/'||" + contactIdColumn + "|| '/" + Photo.CONTENT_DIRECTORY + "'" + " END) ELSE '" + DisplayPhoto.CONTENT_URI + "/'||" + Contacts.PHOTO_FILE_ID + " END)" + " AS " + alias; }
即: 当Contacts.PHOTO_FILE_ID为空的时候选取缩略图当作原头像,
此时就会使得大头像比较模糊
3 大头像的插入详情见ContactsProvider2.java中的PipeMonitor处理,
简单来讲:
(1)通过Stream将头像数据写入ContactsProvider数据空间
(2)插入头像信息,生成PHOTO_FILE_ID
(3)更新PHOTO_FILE_ID和缩略图数据所以,缩略图可以不用我们来处理,但是硬要处理也是可以的
网友评论