2014-07-18 46 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); 
} 
}