Android实例之必应每日一图

本文介绍如何在Android应用中实现每天自动更新并显示必应每日一图。首先,通过访问必应提供的API接口获取JSON数据,解析JSON以得到图片URL。接着,利用子线程进行网络请求,主线程加载图片,使用Glide框架进行图片加载。最后展示了应用的演示效果和部分源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android实现每天更新一张图片

第一次写博客,记录一下自己学习android过程中做过的一些实例。

必应官网每天都会更新一张图片,我们可以通过这张图片的链接来获取这张图片,并让其显示在android app中。

一、图片的获取

必应提供了一个图片的接口,我们可以通过访问这个接口来获取每日更新的图片,接口链接如下所示:https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
通过浏览器访问该链接可以得到以下所示数据

{“images”:[{“startdate”:“20210124”,“fullstartdate”:“202101241600”,“enddate”:“20210125”,“url”:"/th?id=OHR.ChurchRock_ZH-CN6926315999_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",“urlbase”:"/th?id=OHR.ChurchRock_ZH-CN6926315999",“copyright”:“红石公园教堂岩附近的雷击,新墨西哥州 (© Tim Fitzharris/Minden Pictures)”,“copyrightlink”:“https://www.bing.com/search?q=%E7%BA%A2%E7%9F%B3%E5%85%AC%E5%9B%AD%E6%95%99%E5%A0%82&form=hpcapt&mkt=zh-cn”,“title”:"",“quiz”:"/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20210124_ChurchRock%22&FORM=HPQUIZ",“wp”:true,“hsh”:“cdae6c57dbb4fe473dfd4f93b7870b8b”,“drk”:1,“top”:1,“bot”:1,“hs”:[]}],“tooltips”:{“loading”:“正在加载…”,“previous”:“上一个图像”,“next”:“下一个图像”,“walle”:“此图片不能下载用作壁纸。”,“walls”:“下载今日美图。仅限用作桌面壁纸。”}}

其中,url标签后的内容即为我们所需图片的地址,通过访问http://cn.bing.com+该地址就可以得到我们想要的图片,例如,上面得到的url为
/th?id=OHR.ChurchRock_ZH-CN6926315999_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
那我们访问

http://cn.bing.com/th?id=OHR.ChurchRock_ZH-CN6926315999_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp

就可以得到我们想要的图片。

二、在android上获取并显示图片

由于android自身的限制,网络操作只能在子线程中完成,这一点是我们写代码中特别需要注意的。因此我们要把访问api接口的代码写在子线程中。此外,在android中,与UI有关的操作只能在主线程或UI线程中完成,所以我们加载图片上要记得更换线程。

1.访问api接口

这里我们通过android自带的httpurlconnection来访问,并将访问得到的json返回文件存储到字符串response中。

private void sendRequestWithHttpURLConnection() {
   
        // 开启线程来发起网络请求
        new Thread(new Runnable() {
   
            @Override
            public void run() {
   
                HttpURLConnection connection = null;
                BufferedReader reader = null;
                try {
   
                    URL url = new URL("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1");
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(8000);
                    connection.setReadTimeout(8000);
                    InputStream in = connection.getInputStream();
                    // 下面对获取到的输入流进行读取
                    reader = new BufferedReader(new InputStreamReader(in));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值