6

バックグラウンド

ジェリー ビーン (4.1) から、Android は720x720 の連絡先画像をサポートするようになりました。

以前は、ICS (4.0) 以降、android は256x256の連絡先画像をサポートしていました。

それ以前は、連絡先の写真はサムネイルのサイズ (96x96) しかありませんでした。

質問

API に連絡先画像の最大サイズを返す関数はありますか?

また、メーカーが最大画像サイズを変更していないことを願っています。たとえ変更したとしても、そのような機能があれば、正しいサイズが返されます。

4

2 に答える 2

5

このリンクによると、最大サイズを取得する正しい方法は次のとおりです。

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static int getMaxContactPhotoSize(final Context context) {
    if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
        // Note that this URI is safe to call on the UI thread.
        final Uri uri = ContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI;
        final String[] projection = new String[] { ContactsContract.DisplayPhoto.DISPLAY_MAX_DIM };
        final Cursor c = context.getContentResolver().query(uri, projection, null, null, null);
        try {
            c.moveToFirst();
            return c.getInt(0);
        } finally {
            c.close();
        }
    }
    // fallback: 96x96 is the max contact photo size for pre-ICS versions
    return 96;
}

編集: 少なくとも API 16 (4.1) を使用する場合、次のようなものを使用できます。

@AnyThread
@RequiresPermission(anyOf = [Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS])
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
fun getMaxContactPhotoSize(context: Context): Int {
    // Note that this URI is safe to call on the UI thread.
    if (contactMaxPhotoSize > 0)
        return contactMaxPhotoSize
    val uri = ContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI
    val projection = arrayOf(ContactsContract.DisplayPhoto.DISPLAY_MAX_DIM)
    context.contentResolver.query(uri, projection, null, null, null)?.use { cursor ->
        cursor.moveToFirst()
        contactMaxPhotoSize = cursor.getInt(0)
    }
    if (contactMaxPhotoSize > 0)
        return contactMaxPhotoSize
    // fallback: 720x720 is the max contact photo size for 4.1 version
    contactMaxPhotoSize = 720
    return contactMaxPhotoSize
}
于 2013-07-25T08:03:43.637 に答える
1

発表から:

Android 4.1 では、最大 720 x 720 の連絡先の写真を保存できるため、連絡先がより豊かで個人的なものになります。アプリは、連絡先の写真をそのサイズで保存および取得したり、必要な他のサイズを使用したりできます。特定のデバイスでサポートされる写真の最大サイズは異なる場合があるため、アプリは実行時に組み込みの連絡先プロバイダーにクエリを実行して、現在のデバイスの最大サイズを取得する必要があります。

を照会しますContactsContract.DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI。探しているものが返されるはずです。

于 2013-07-24T15:09:20.363 に答える