2016-05-02 14 views
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); 
    } 
} 

をし、その後でそれを呼び出す:

答えて

-1

あなたのクラスでこれを作成します

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

new DownloadImageTask((ImageView) rowView.findViewById(R.id.iv_preview)) 
       .execute(YOUR_URL_STRING); 
+0

おかげで私はこれは私の場合には助けにはならないと思います。お勧めカードが選択されている場合、TVプラットフォームのホーム画面で背景画像を変更する必要があります。 – Astagron

+0

DownloadImageTaskクラスは、URLをビットマップに変換します。 ImageViewのView isteadを使用することができます。ImageViewをViewに変更するだけです。 –

関連する問題