2016-05-02 8 views
0

Ich baue eine App für das Fernsehen und versuche, das Hintergrundbild auf dem Startbildschirm zu ändern, wenn die Empfehlungskarte ausgewählt ist.Hintergrundbild ändern, wenn Empfehlungskarte ausgewählt wurde

Ich habe Code-Beispiele gefunden, wo Bild lokal mit Content-Provider geladen wird:

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

Das Problem dabei ist, dass ich von URL geladen werden Datei und nicht lokal. Ich sehe keine anderen nützlichen Methoden in Notification.Builder Klasse. Was sollte ich verwenden, um Bitmap von URL als Hintergrundbild zu laden?

Antwort

-1

Erstelle in Ihrer Klasse:

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

und dann rufen Sie mit:

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

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

Danke, aber ich denke, das ist nicht in meinem Fall hilft. Ich muss das Hintergrundbild auf dem Startbildschirm der TV-Plattform ändern, wenn die Empfehlungskarte ausgewählt ist. – Astagron

+0

DownloadImageTask-Klasse konvertieren Sie Url in Bitmap. Sie können jede Ansicht anstelle von ImageView verwenden, wechseln Sie einfach ImageView zu Ihrer Ansicht. –