版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、sina 微博核心服务类代码.txt7 温暖是飘飘洒洒的春雨;温暖是写在脸上的笑影;温暖是义无反顾的响应;温暖是一丝不苟的配合。8 尊重是一缕春风,一泓清泉,一颗给人温暖的舒心丸,一剂催人奋进的强心剂 importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.UnsupportedEncodingException;.MalformedURLException;.URL;.URLEncoder;importjava.util.ArrayList;importjava.util.HashMap;impo
2、rtjava.util.List;importorg.junit.runner.notification.StoppedByUserException;importcn.cju.weibo.db.LoginData;importcn.cju.weibo.json.JSONException;.http.AccessToken;.http.ImageItem;.http.RequestToken;importcn.cju.weibo.sina.Paging;importcn.cju.weibo.sina.Status;importcn.cju.weibo.sina.User;importcn.c
3、ju.weibo.sina.Weibo;importcn.cju.weibo.sina.WeiboException;importcn.cju.weibo.ui.LoginActivity;importcn.cju.weibo.util.GetDataFromURL;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Service;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.c
4、ontent.Intent;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Bitmap.CompressFormat;importandroid.graphics.drawable.BitmapDrawable;importandroid.os.Handler;importandroid.os.IBinder;importandroid.os.Message;importandroid.util.Log;importandroid.widget.TextView
5、;importandroid.widget.Toast;publicclassMainServiceextendsServiceimplementsRunnableprivatebooleanisRun;publicstaticbooleanserviceState;publicstaticWeiboweibo;publicstaticUseruser;publicstaticArrayListallTask=newArrayList();publicstaticHashMaporginal_ret=newHashMap();publicstaticHashMaporginal_mid=new
6、HashMap();publicstaticHashMapcommrt=newHashMap();OverridepublicvoidonCreate()/完成微博的初始化super.onCreate();weibo=newWeibo();newThread(this).start();/跟据名从 Activity 集合中找到对应的 Activity 返回到任务处理方法中去,用于 ui的更新:publicstaticWeiboActivitygetActivityByName(StringactivityName)WeiboActivityactivity=null;for(WeiboActi
7、vityitem:allActivity)if(item.getClass().getName().indexOf(activityName)0)activity=item;returnactivity;/添加任务的方法:publicvoidaddTask(Tasktask)allTask.add(task);OverridepublicIBinderonBind(Intentintent)returnnull;OverridepublicvoidonDestroy()/务:super.onDestroy();isRun=false;serviceState=false;/设置服务的开启和关闭
8、状态)OverridepublicstaticArrayList();/publicstaticArrayListallActivity=new所有 Activity 的集合HashMapportraites=new当用务没有被销毁时,它是一直去执行任务集合中的任任务的集合HashMap();publicstaticHashMaporginal=newHashMap();publicvoidonStart(Intentintent,intstartId)super.onStart(intent,startId);isRun=true;serviceState=true;/设置服务的开启和关闭状
9、态)Overridepublicvoidrun()Taskts=null;while(isRun)synchronized(allTask)/同步于任务集合Log.i(isrun,Theserviceisrunning.Tasknumberhas+allTask.size();Log.i(cp,Thecontextpicturehas+orginal.size();Log.i(pp,Theportraitshas+portraites.size();if(allTask.size()0)ts=allTask.get(0);trydoTask(ts);/任行任务catch(Exceptione)
10、/TODOAuto-generatedcatchblocke.printStackTrace();tryThread.sleep(1*1000);/每隔一秒catch(Exceptione)e.printStackTrace();privatevoiddoTask(Taskts)/具体任务处理的方法tryMessagemsg=hand.obtainMessage();AccessTokenat;switch(ts.getTaskID()caseTaskType.USER_LOGIN:用户登录HashMaptaskParams=ts.getTaskParam();StringuserName=(
11、String)taskParams.get(userName);Stringpassword=(String)taskParams.get(password);System.setProperty(weibo4j.oauth.consumerKey,Weibo.CONSUMER_KEY);System.setProperty(weibo4j.oauth.consumerSecret,Weibo.CONSUMER_SECRET);/登录授权RequestTokenrt=weibo.getOAuthRequestToken();/得至 URequestTokenStringurl=rt.getAu
12、thorizationURL(userName,password);/根据用户名和密码得到授权后返回的 url,其中包括授权码Stringvcorde=weibo.http.get(url).asJSONObject().getString(oauth_verifier);/得到授权码at=rt.getAccessToken(vcorde);/用授权去获得 AccessTokenuser=weibo.verifyCredentials();msg.obj=at;/发送 AccessTokenmsg.what=TaskType.USER_LOGIN;break;caseTaskType.USER
13、_NEW_WEIBO:/发送一条新的微博Stringcontent=(String)ts.getTaskParam().get(weiboContent);/得到文字内容StatusnewStatus=weibo.updateStatus(content);/发送微博,更新微博Log.i(newStatus,newStatus.getId()+);msg.what=TaskType.USER_NEW_WEIBO;msg.obj=newStatus;break;caseTaskType.USER_NEW_WEIBO_TEXT_PIC:/设表图片微博的任务处理StringcontentPic=(S
14、tring)ts.getTaskParam().get(weiboContent);/得到文字内容contentPic=URLEncoder.encode(contentPic,UTF-8);bytepicByte=(byte)ts.getTaskParam().get(weiboPic);得到图片数据Log.i(len,get+picByte.length);ImageItemimageItem=newImageItem(pic,picByte);Log.i(JPEG,imageItem.getContentType(picByte);StatusnewStatusPic=weibo.upl
15、oadStatus(contentPic,imageItem);booleanb=newStatusPic!=null;Log.i(newStatus,b+newStatusPic.toString();msg.what=TaskType.USER_NEW_WEIBO_TEXT_PIC;msg.obj=newStatusPic;break;caseTaskType.USER_GET_STATUS:得到用户的微博的状态信息System.setProperty(weibo4j.oauth.consumerKey,Weibo.CONSUMER_KEY);System.setProperty(weib
16、o4j.oauth.consumerSecret,Weibo.CONSUMER_SECRET);at=LoginData.openAccessToken(this);weibo.setToken(at.getToken(),at.getTokenSecret();/得至 U 显示下一页的参数this.user=weibo.verifyCredentials();/对 user 进行赋值intnowPageNum=(Integer)ts.getTaskParam().get(onePage);intallNum=(Integer)ts.getTaskParam().get(allNum);/初始
17、值为6,用 init 方法完成刷新当前页,每一次都增加 6,点了刷新后所有条目都进行更新PagingonePageCounts=newPaging(nowPageNum,allNum);/用这个类来决定这个一页显示多少条信息,是根据当前页面中的数据来决定条数的Liststatuses=weibo.getFriendsTimeline(onePageCounts);/得到微博的信息跟据每一页显示多少个条目for(Statusstatus:statuses)/将所有用户的头象存入一个 HashMap中去,key 为这个用户的 id 号,value 为这个用户头象的 BitmapTasktask=n
18、ewTask();/用任务的方式去获取头像的任务task.setTaskID(TaskType.USER_GET_USER_PORTRAIT);设定这个任务的idHashMapprams=newHashMap();prams.put(status,status);/传入参数为 usertask.setTaskParam(prams);MainService.allTask.add(task);if(status.getThumbnail_pic()!=null&status.getThumbnail_pic()!=)task=newTask();/获取微博图片的任务,如果有图片task
19、.setTaskID(TaskType.USER_GET_STATUS_ORIGINAL_PIC);prams=newHashMap();prams.put(status,status);task.setTaskParam(prams);MainService.allTask.add(task);GetRetWeetPic(status);/得到被转发微博的图片的任务if(commrt.get(status.getId()=null)/得到评论数和转发数量的信息的任务task=newTask();prams=newHashMap();prams.put(status,status);task.
20、setTaskID(TaskType.USER_UPDATE_COMMENT_RET);task.setTaskParam(prams);MainService.allTask.add(task);msg.what=TaskType.USER_GET_STATUS;msg.obj=statuses;break;caseTaskType.USER_GET_STATUS_MORE:i/至 U 更多微博的条目的任条处理,在这只有只处理当前的 6 条记录intnowPageNum_More=(Integer)ts.getTaskParam().get(nowPageNum);得到第几页intonePa
21、geNum_More=(Integer)ts.getTaskParam().get(onePageNum);得到的条数PagingonePageCounts_More=newPaging(nowPageNum_More,onePageNum_More);用这个类来决定这个一页显示多少条信息Liststatuses_More=weibo.getFriendsTimeline(onePageCounts_More);得到微博的信息跟据每一页显示多少个条目for(Statusstatus:statuses_More)/新条目头像的获取和任务的添加Tasktask=newTask();task.set
22、TaskID(TaskType.USER_GET_USER_PORTRAIT);HashMapprams_more=newHashMap();prams_more.put(status,status);task.setTaskParam(prams_more);MainService.allTask.add(task);if(status.getThumbnail_pic()!=null&status.getThumbnail_pic()!=)task=newTask();/获取微博图片的任务,如果有图片task.setTaskID(TaskType.USER_GET_STATUS_O
23、RIGINAL_PIC);prams_more=newHashMap();prams_more.put(status,status);task.setTaskParam(prams_more);MainService.allTask.add(task);GetRetWeetPic(status);/得到被转发微博的图片的任务if(commrt.get(status.getId()=null)/更新转发数量和评论数量的任务task=newTask();prams_more=newHashMap();prams_more.put(status,status);task.setTaskID(Task
24、Type.USER_UPDATE_COMMENT_RET);task.setTaskParam(prams_more);MainService.allTask.add(task);msg.what=TaskType.USER_GET_STATUS_MORE;刷新界面msg.obj=statuses_More;/传入参数break;caseTaskType.USER_GET_USER_PORTRAIT:例行获取头像的任务Statusstatus_por=(Status)ts.getTaskParam().get(status);URLportraitUrl=status_por.getUser(
25、).getProfileImageURL();bytedata=GetDataFromURL.getPortrait(portraitUrl);/通过 url来得到头像的二进制数据Bitmapbm=BitmapFactory.decodeByteArray(data,0,data.length);/生成位图MainService.portraites.put(status_por.getUser().getId(),bm);/放入头像的集合中去msg.what=TaskType.USER_GET_USER_PORTRAIT;/更新 uibreak;caseTaskType.USER_GET_S
26、TATUS_ORIGINAL_PIC:/内容中的图片处理Statusstatus=(Status)ts.getTaskParam().get(status);StringstrUrl=status.getThumbnail_pic();if(strUrl!=null&strUrl!=)URLoriginal_Url=newURL(strUrl);byteoriginalDataGetDataFromURL.getPortrait(original_Url);BitmaporiginalBmBitmapFactory.decodeByteArray(originalData,0,orig
27、inalData.length);/生成位图MainSinal.put(status.getId(),originalBm);msg.what=TaskType.USER_GET_STATUS_ORIGINAL_PIC;break;caseTaskType.USER_GET_STATUS_ORIGINAL_RETWEET_PIC 详细内容中的被转微博的图片处理Statusstatus_Retweet=(Status)ts.getTaskParam().get(status);StringstrUrlRetweet=status_Retweet.getThumbnail_pi
28、c();if(strUrlRetweet!=null&strUrlRetweet!=)URLoriginal_Url=newURL(strUrlRetweet);byteoriginalData_RetweetGetDataFromURL.getPortrait(original_Url);BitmaporiginalBm_RetweetBitmapFactory.decodeByteArray(originalData_Retweet,originalData_Retweet.length);/生成位图MainSinal_ret.put(status_Retwee
29、t.getId(),originalBm_Retweet);msg.what=TaskType.USER_GET_STATUS_ORIGINAL_PIC;break;caseTaskType.USER_UPDATE_COMMENT_RET:/理评论数的更新msg.what=TaskType.USER_UPDATE_COMMENT_RET;Statusstatus_C_R=(Status)ts.getTaskParam().get(status);intcounts=getCounts(status_C_R);commrt.put(status_C_R.getId(),counts);msg.w
30、hat=TaskType.USER_UPDATE_COMMENT_RET;break;caseTaskType.USER_WEIOBO_COMMENT对一条微博进行评论msg.what=TaskType.USER_WEIOBO_COMMENT;Longstatusid=(Long)ts.getTaskParam().get(statusid);Stringcomment=(String)ts.getTaskParam().get(cmcontent);Log.i(comment,comment-+comment+-+statusid);weibo.updateComment(comment,S
31、tring.valueOf(statusid),null);break;caseTaskType.USER_WEIOBO_FORWARD对一条微博进行转发msg.what=TaskType.USER_WEIOBO_FORWARD;Longstatusid_f=(Long)ts.getTaskParam().get(statusid);Stringcomment_f=(String)ts.getTaskParam().get(cmcontent);Log.i(comment,forward-+comment_f+-+statusid_f);weibo.repost(String.valueOf(
32、statusid_f),comment_f);break;caseTaskType.USER_WEIOBO_FAVOURITE:msg.what=TaskType.USER_WEIOBO_FAVOURITE;StatusfavStatus=(Status)ts.getTaskParam().get(status);weibo.createFavorite(favStatus.getId();default:break;)allTask.remove(0);hand.sendMessage(msg);catch(Exceptione)allTask.remove(0);/如果哪个任务抛了异常就把
33、这个任务删掉0,e.printStackTrace();/得到被转发微博的图片的任务privatevoidGetRetWeetPic(Statusstatus)if(status.isRetweet()StatusretWeetStatus=status.getRetweeted_status();if(retWeetStatus.getThumbnail_pic()!=null&retWeetStatus.getThumbnail_pic()!=)TaskretWeetPicTask=newTask();/添加得到被转发微博的图片任务,如果有图片retWeetPicTask.setT
34、askID(TaskType.USER_GET_STATUS_ORIGINAL_RETWEET_PIC);HashMapprams=newHashMap();prams.put(status,retWeetStatus);retWeetPicTask.setTaskParam(prams);MainService.allTask.add(retWeetPicTask);privateHandlerhand=newHandler()/更新 ui 线程OverridepublicvoidhandleMessage(Messagemsg)super.handleMessage(msg);switch
35、(msg.what)caseTaskType.USER_LOGIN:/处理用户登录刷新的任务getActivityByName(LoginActivity).refresh(msg.what,msg.obj);/得到登录的Activity,并传递参数刷新 uibreak;caseTaskType.USER_NEW_WEIBO:/夕卜理用户发表微博的任务getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_USER_INFO:/ 处 理 得 至U用 户 的 信 息 的 刷 新 任
36、 务break;caseTaskType.USER_GET_STATUS:/处理得至 U 用户的主页信息的刷新任务getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_STATUS_MORE/得到新的微博条目后对HomeActivity 界面的刷新getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_USER_PORTRAIT 刷新头像, 当一个头像的任务完成后
37、, 就执行 HomeActivity 中的刷新的方法 getActivityByName(HomeActivity).refresh(msg.what,null);break;caseTaskType.USER_GET_STATUS_ORIGINAL_PIC:getActivityByName(HomeActivity).refresh(msg.what,null);break;caseTaskType.USER_UPDATE_COMMENT_RET:getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTask
38、Type.USER_WEIOBO_COMMENT:getActivityByName(HomeActivity).refresh(msg.what,null);caseTaskType.USER_WEIOBO_FORWARD:getActivityByName(HomeActivity).refresh(msg.what,null);break;caseTaskType.USER_WEIOBO_FAVOURITE:getActivityByName(HomeActivity).refresh(msg.what,null);default:break;/应用程序退出时的提示:publicstaticvoidalertExit(finalContextcontext)AlertDialog.Builderab=newAlertDialog.Builder(context);ab.setTitle(退出提示);ab.setMessage(是否要真的退出程序);ab.se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025总经理聘用合同
- 2025租赁合同:主机托管租用合同书
- 2025正规门面租房合同书
- 机械设备维修工基础知识
- 建设项目投资协议合同
- 中介劳务运作合同范例
- 拆房子重建合同范例
- 农村老宅修缮合同范例
- 产品制式合同范例
- 仓管员劳务合同范例
- 2024-2025学年统编版(2024)道德与法治小学一年级上册教学设计
- 医院医技科室与临床科室定期沟通制度
- 期中 (试题) -2024-2025学年人教PEP版(2024)英语三年级上册
- 律师事务所人员管理制度
- 渣土、余土运输服务方案(技术方案)
- 网络安全管理责任制度制度存在的问题(8篇)
- 20以内的加法口算练习题4000题 205
- 《网络系统建设与运维》课件-项目一 5G技术特点和网
- 渠道衬砌施工方案(渠道预制混凝土块)
- 篮球球星姚明课件
- 人生海海读书分享阅读时光好书读后感
评论
0/150
提交评论