2016-05-02 1 views
0

Je crée une application pour la télévision et tente de changer l'image d'arrière-plan sur l'écran d'accueil lorsque la carte de recommandation est sélectionnée.Modifier l'image d'arrière-plan lorsque la carte de recommandation est sélectionnée

J'ai trouvé des exemples de code où l'image est localement chargé avec le fournisseur de contenu:

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); 
    } 
} 

Le problème est que je dois fichier à charger depuis l'URL et non localement. Je ne vois aucune autre méthode utile dans la classe Notification.Builder. Que dois-je utiliser pour charger Bitmap à partir d'une URL en tant qu'image de fond?

Répondre

-1

Créer dans votre classe:

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); 
    } 
} 

puis appelez avec:

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

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

Merci, mais je pense que cela ne fonctionne pas dans mon cas. J'ai besoin de changer l'image de fond sur l'écran d'accueil sur la plate-forme de télévision quand la carte de recommandation est choisie. – Astagron

+0

DownloadImageTask classe convertir Url en bitmap. Vous pouvez utiliser n'importe quelle vue à la place de ImageView, juste changer ImageView à votre vue. –