2014-07-18 47 views
0

您好,我是Google Glass的新成員,並且想知道我是否可以將來自網絡的圖像顯示爲我的背景圖片。Google Glass - 有來自網絡的卡片顯示圖像

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String address = "http://archiveteam.org/images/1/15/Apple-logo.jpg"; 
    Card myCard = new Card(this); 
    myCard.setText("Hello, World!"); 
    myCard.setFootnote("First Glassware for Glass"); 
    myCard.setImageLayout(Card.ImageLayout.FULL); 
    myCard.addImage(new URL(address)); 
    View cardView = myCard.getView();  
    // Display the card we just created 
    setContentView(cardView); 
} 

我在幾個線程myCard.addImage(新URL(地址))是解決看見了,但我正在逐漸在該行下面的錯誤。

在類型卡的方法addImage(可繪製)不適用於參數(URL)

任何幫助,將不勝感激,謝謝提前!

+0

您可以使用[鏡像API](https://developers.google.com/glass/develop/mirror/index)將圖像從網絡發送到您的應用程序。 – G3M

回答

0

您不應該在UI線程上收集圖像。這是一個網絡操作。

創建一個單獨的方法運行在一個新的線程下載圖像,然後將其保存爲位圖。然後保存到卡上;

DownloadImageTask(myCard).execute(address); 


private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    Card imgCard; 

public DownloadImageTask(Card imgCard) { 
    this.imgCard= imgCard; 
} 

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

protected void onPostExecute(Bitmap result) { 
    imgCard.setImage(result); 
} 
}