首页 > 代码库 > Android 图文数据JSON解析,金山词霸每日一句API的调用
Android 图文数据JSON解析,金山词霸每日一句API的调用
数据格式为
?
1 2 3 4 5 6 7 8 9 10 11 | {sid: 737 , tts:http: //news.iciba.com/admin/tts/2013-12-11.mp3, content:I don‘t want us to be together because we have to,I want us to be together because we want to., note:我不希望我们因为“不得不”而在一起,我希望我们是因为想在一起而在一起。, translation:感谢@程很多要秒虐数学 投稿。词霸小编,这句话来自《冰河世纪 2 》,是一个系列的动画电影,非常搞笑,你看过吗?, picture:http: //cdn.iciba.com/news/word/2013-12-11.jpg,picture2:http://cdn.iciba.com/news/word/big_2013-12-11b.jpg,caption:词霸每日一句, dateline: 2013 - 12 - 11 , s_pv: 8693 , sp_pv: 2090 , tags:[{id: 9 ,name:爱情},{id: 14 ,name:电影经典}], fenxiang_img:http: //cdn.iciba.com/web/news/longweibo/imag/2013-12-11.jpg} |
JSON字段解释
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | JSON 字段解释 { ‘sid‘ : ‘‘ #每日一句ID ‘tts‘ : ‘‘ #音频地址 ‘content‘ : ‘‘ #英文内容 ‘note‘ : ‘‘ #中文内容 ‘translation‘ : ‘‘ #词霸小编 ‘picture‘ : ‘‘ #图片地址 ‘picture2‘ : ‘‘ #大图片地址 ‘caption‘ : ‘‘ #标题 ‘dateline‘ : ‘‘ #时间 ‘s_pv‘ : ‘‘ #浏览数 ‘sp_pv‘ : ‘‘ #语音评测浏览数 ‘tags‘ : ‘‘ #相关标签 ‘fenxiang_img‘ : ‘‘ #合成图片,建议分享微博用的 } |
最终实现的效果
具体实现,使用AsynTask异步访问网络:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | class Load extends AsyncTask<string, string= "" > { public String url = http: //open.iciba.com/dsapi/; ProgressDialog pdlg; String jsonstr = ; JSONObject json = null ; @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httppost); HttpEntity httpEntity = httpResponse.getEntity(); InputStream is = httpEntity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(is, UTF- 8 )); StringBuilder sb = new StringBuilder(); String line = null ; while ((line = reader.readLine()) != null ) { sb.append(line + ); } is.close(); jsonstr = sb.toString(); json = new JSONObject(jsonstr.toString()); engstr = json.getString(content); chistr = json.getString(note); imagurl = json.getString(picture); timestr = json.getString(dateline); fromstr = json.getString(translation); JSONArray array = json.getJSONArray(tags); for ( int i= 0 ;i<p>使用了一个图片处理的工具类,ImageLoader,主要用来通过url解析图片,处理图片的大小,以文件的形式缓存图片。</p><pre class = "brush:java;" > public class ImageLoader { MemoryCache memoryCache= new MemoryCache(); FileCache fileCache; private Map<imageview, string= "" > imageViews=Collections.synchronizedMap( new WeakHashMap<imageview, string= "" >()); ExecutorService executorService; public ImageLoader(Context context){ fileCache= new FileCache(context); executorService=Executors.newFixedThreadPool( 5 ); } final int stub_id = R.drawable.drug_trans; public void DisplayImage(String url, ImageView imageView) { imageViews.put(imageView, url); Bitmap bitmap=memoryCache.get(url); if (bitmap!= null ) imageView.setImageBitmap(bitmap); else { queuePhoto(url, imageView); imageView.setImageResource(stub_id); } } private void queuePhoto(String url, ImageView imageView) { PhotoToLoad p= new PhotoToLoad(url, imageView); executorService.submit( new PhotosLoader(p)); } private Bitmap getBitmap(String url) { File f=fileCache.getFile(url); //from SD cache Bitmap b = decodeFile(f); if (b!= null ) return b; //from web try { Bitmap bitmap= null ; URL imageUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection(); conn.setConnectTimeout( 30000 ); conn.setReadTimeout( 30000 ); conn.setInstanceFollowRedirects( true ); InputStream is=conn.getInputStream(); OutputStream os = new FileOutputStream(f); Utils.CopyStream(is, os); os.close(); bitmap = decodeFile(f); return bitmap; } catch (Exception ex){ ex.printStackTrace(); return null ; } } //decodes image and scales it to reduce memory consumption private Bitmap decodeFile(File f){ try { //decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true ; BitmapFactory.decodeStream( new FileInputStream(f), null ,o); //Find the correct scale value. It should be the power of 2. final int REQUIRED_SIZE= 70 ; int width_tmp=o.outWidth, height_tmp=o.outHeight; int scale= 1 ; while ( true ){ if (width_tmp/ 1.5 <required_size a= "(Activity)photoToLoad.imageView.getContext();" activity= "" bd= "new" bitmap= "b;photoToLoad=p;}" bitmapdisplayer= "" bitmapfactory.options= "" bmp= "getBitmap(photoToLoad.url);" boolean = "" catch = "" decode= "" display= "" else = "" filenotfoundexception= "" for = "" height_tmp= "" imageview= "" implements = "" in= "" insamplesize= "" new = "" o2= "new" o2.insamplesize= "scale;" override= "" photosloader= "" phototoload= "" pre= "" private = "" public = "" queue= "" return = "" runnable= "" string= "" tag= "=null" task= "" the= "" this .phototoload= "photoToLoad;" thread= "" to= "" ui= "" url= "u;" used= "" void = "" width_tmp= "" with= "" ><p> </p><p> </p></required_size></imageview,></imageview,></pre> </array.length();i&# 43 ;&# 43 ;)></string,> 推推族,免费得门票,游景区:www.tuituizu.com 结伴旅游,一个免费的交友网站:www.jieberu.com |
Android 图文数据JSON解析,金山词霸每日一句API的调用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。