我想使用谷歌静态地图API,并下载我的位置的位图图像并在我的应用程序中显示为图像,我写了这段代码,但我的应用程序停止了,有什么问题?
代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
String URL = "http://maps.google.com/maps/api/staticmap?center=48.858235,2.294571&zoom=15&size=200x200&sensor=false";
Bitmap bmp = null;
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(URL);
InputStream in = null;
try {
in = httpclient.execute(request).getEntity().getContent();
bmp = BitmapFactory.decodeStream(in);
in.close();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImageView vi=(ImageView)findViewById(R.id.salak);
vi.setImageBitmap(bmp);
}
我刚刚在Oncreate()函数中写了这部分代码,并在.xml文件中有一个ImageViewer来显示图像,但我的程序没有工作Corectly,我该如何解决这个问题?
答案 0 :(得分:0)
正如JRowan在评论中所说,问题的最可能原因是你试图在主线程上进行网络调用,这是不允许的。
看到这个: http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
从Uri加载ImageView的最简单方法是使用Square的Picasso库,可在此处找到:
http://square.github.io/picasso/
您下载并安装了一个,然后您可以加载ImageView,如下所示:
Picasso.with(context).load(yourUrl).into(yourImageView);
如果在活动中运行,您可以使用this
作为上下文。