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からビットマップを読み込むためにはどうすればよいですか?
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);
}
}
をし、その後でそれを呼び出す:
おかげで私はこれは私の場合には助けにはならないと思います。お勧めカードが選択されている場合、TVプラットフォームのホーム画面で背景画像を変更する必要があります。 – Astagron
DownloadImageTaskクラスは、URLをビットマップに変換します。 ImageViewのView isteadを使用することができます。ImageViewをViewに変更するだけです。 –