0

連絡先の写真の取得に問題があります。私のGalaxyNexus(JB、4.1.1を実行)では、連絡先の写真を取得すると、非常に小さく表示されます。Droid 2(Running GB、2.3.7)で同じコードを実行すると、常にデフォルトのイメージが取得されます。

これが私のコードです:

Cursor cursor;

    cursor = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
            new String[]{id}, null);

    cursor.moveToFirst();

    contactName = cursor.getString(cursor.getColumnIndex((ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));

    pictureID = Uri.withAppendedPath(result, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY).toString();

    if(contactPicture(Uri.parse(pictureID)))
    {
        contactsEditor.putString(""+id+ "Picture", pictureID);
    }
    else
        contactsEditor.putString("" + id + "Picture", "" + R.drawable.ic_contact_picture);

    contactsEditor.commit();

    contactNumber = cursor.getString(cursor.getColumnIndex((ContactsContract.CommonDataKinds.Phone.NUMBER)));

    cursor.close();

すべての変数/定数が適切に定義されています(定義を確認したい場合は、質問してください。投稿します)

これが私が入れているxmlです:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        >
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        <ImageView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:contentDescription="@string/contactPhotoDesc"
                android:id="@+id/contactPic"/>
    </LinearLayout>
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        <TextView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/contactName"/>
        <TextView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/contactNumber"/>
    </LinearLayout>
</LinearLayout>

デフォルトの画像は正常に表示されますが、連絡先から画像を取得すると、GNexでは非常に小さく表示されます。

4

1 に答える 1

1

問題は、Galaxy Nexusが高解像度デバイスであり、画像がそうではないように見えるため、(拡大縮小されていない場合)小さく見えることです。

ImageViewをwrap_contentの代わりに固定サイズに設定すると、スケールアップします。

この方法も使用できます。

public static InputStream openContactPhotoInputStream(ContentResolver cr、Uri contactUri、ブール値preferHighres)

http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#openContactPhotoInputStream(android.content.ContentResolver,%20android.net.Uri,%20boolean

高解像度の連絡先画像が返されるようです(利用可能な場合)。とにかく、ImageViewで固定サイズを設定する必要があります。これは、低解像度のデバイスでは、Androidが高解像度の画像を返す場合、非常に大きく見えるためです。

于 2012-09-04T23:54:52.300 に答える