0

テレビ用のアプリを作成していて、おすすめカードが選択されたときにホーム画面の背景画像を変更しようとしています。

画像がコンテンツ プロバイダーでローカルに読み込まれるコード サンプルを見つけました。

public static class RecommendationBackgroundContentProvider extends ContentProvider {

    @Override
    public boolean onCreate() {
        return true;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
                        String sortOrder) {
        return null;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    /*
     * content provider serving files that are saved locally when recommendations are built
     */
    public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
        Log.i(TAG, "openFile");
        int backgroundId = Integer.parseInt(uri.getLastPathSegment());
        File bitmapFile = getNotificationBackground(getContext(), backgroundId);
        return ParcelFileDescriptor.open(bitmapFile, ParcelFileDescriptor.MODE_READ_ONLY);
    }
}

これに関する問題は、ファイルをローカルではなく URL からロードする必要があることです。Notification.Builderクラスには他に役立つメソッドはありません。背景画像として URL からビットマップを読み込むには何を使用すればよいですか?

4

1 に答える 1

-1

クラスでこれを作成します。

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView iView;

    public DownloadImageTask(ImageView iView) {
        this.iView = iView;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mImage = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mImage = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mImage;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

そして、次のように呼び出します。

String YOUR_URL_STRING = "http://www.image.com/image.jpg";

new DownloadImageTask((ImageView) rowView.findViewById(R.id.iv_preview))
                .execute(YOUR_URL_STRING);
于 2016-05-02T16:29:37.680 に答える