下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、sina 微博核心服務(wù)類代碼.txt7 溫暖是飄飄灑灑的春雨;溫暖是寫在臉上的笑影;溫暖是義無反顧的響應(yīng);溫暖是一絲不茍的配合。8 尊重是一縷春風(fēng),一泓清泉,一顆給人溫暖的舒心丸,一劑催人奮進(jìn)的強(qiáng)心劑 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();/跟據(jù)名從 Activity 集合中找到對(duì)應(yīng)的 Activity 返回到任務(wù)處理方法中去,用于 ui的更新:publicstaticWeiboActivitygetActivityByName(StringactivityName)WeiboActivityactivity=null;for(WeiboActi
7、vityitem:allActivity)if(item.getClass().getName().indexOf(activityName)0)activity=item;returnactivity;/添加任務(wù)的方法:publicvoidaddTask(Tasktask)allTask.add(task);OverridepublicIBinderonBind(Intentintent)returnnull;OverridepublicvoidonDestroy()/務(wù):super.onDestroy();isRun=false;serviceState=false;/設(shè)置服務(wù)的開啟和關(guān)閉
8、狀態(tài))OverridepublicstaticArrayList();/publicstaticArrayListallActivity=new所有 Activity 的集合HashMapportraites=new當(dāng)用務(wù)沒有被銷毀時(shí),它是一直去執(zhí)行任務(wù)集合中的任任務(wù)的集合HashMap();publicstaticHashMaporginal=newHashMap();publicvoidonStart(Intentintent,intstartId)super.onStart(intent,startId);isRun=true;serviceState=true;/設(shè)置服務(wù)的開啟和關(guān)閉狀
9、態(tài))Overridepublicvoidrun()Taskts=null;while(isRun)synchronized(allTask)/同步于任務(wù)集合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);/任行任務(wù)catch(Exceptione)
10、/TODOAuto-generatedcatchblocke.printStackTrace();tryThread.sleep(1*1000);/每隔一秒catch(Exceptione)e.printStackTrace();privatevoiddoTask(Taskts)/具體任務(wù)處理的方法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);/登錄授權(quán)RequestTokenrt=weibo.getOAuthRequestToken();/得至 URequestTokenStringurl=rt.getAu
12、thorizationURL(userName,password);/根據(jù)用戶名和密碼得到授權(quán)后返回的 url,其中包括授權(quán)碼Stringvcorde=weibo.http.get(url).asJSONObject().getString(oauth_verifier);/得到授權(quán)碼at=rt.getAccessToken(vcorde);/用授權(quán)去獲得 AccessTokenuser=weibo.verifyCredentials();msg.obj=at;/發(fā)送 AccessTokenmsg.what=TaskType.USER_LOGIN;break;caseTaskType.USER
13、_NEW_WEIBO:/發(fā)送一條新的微博Stringcontent=(String)ts.getTaskParam().get(weiboContent);/得到文字內(nèi)容StatusnewStatus=weibo.updateStatus(content);/發(fā)送微博,更新微博Log.i(newStatus,newStatus.getId()+);msg.what=TaskType.USER_NEW_WEIBO;msg.obj=newStatus;break;caseTaskType.USER_NEW_WEIBO_TEXT_PIC:/設(shè)表圖片微博的任務(wù)處理StringcontentPic=(S
14、tring)ts.getTaskParam().get(weiboContent);/得到文字內(nèi)容contentPic=URLEncoder.encode(contentPic,UTF-8);bytepicByte=(byte)ts.getTaskParam().get(weiboPic);得到圖片數(shù)據(jù)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:得到用戶的微博的狀態(tài)信息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 顯示下一頁的參數(shù)this.user=weibo.verifyCredentials();/對(duì) user 進(jìn)行賦值intnowPageNum=(Integer)ts.getTaskParam().get(onePage);intallNum=(Integer)ts.getTaskParam().get(allNum);/初始
17、值為6,用 init 方法完成刷新當(dāng)前頁,每一次都增加 6,點(diǎn)了刷新后所有條目都進(jìn)行更新PagingonePageCounts=newPaging(nowPageNum,allNum);/用這個(gè)類來決定這個(gè)一頁顯示多少條信息,是根據(jù)當(dāng)前頁面中的數(shù)據(jù)來決定條數(shù)的Liststatuses=weibo.getFriendsTimeline(onePageCounts);/得到微博的信息跟據(jù)每一頁顯示多少個(gè)條目for(Statusstatus:statuses)/將所有用戶的頭象存入一個(gè) HashMap中去,key 為這個(gè)用戶的 id 號(hào),value 為這個(gè)用戶頭象的 BitmapTasktask=n
18、ewTask();/用任務(wù)的方式去獲取頭像的任務(wù)task.setTaskID(TaskType.USER_GET_USER_PORTRAIT);設(shè)定這個(gè)任務(wù)的idHashMapprams=newHashMap();prams.put(status,status);/傳入?yún)?shù)為 usertask.setTaskParam(prams);MainService.allTask.add(task);if(status.getThumbnail_pic()!=null&status.getThumbnail_pic()!=)task=newTask();/獲取微博圖片的任務(wù),如果有圖片task
19、.setTaskID(TaskType.USER_GET_STATUS_ORIGINAL_PIC);prams=newHashMap();prams.put(status,status);task.setTaskParam(prams);MainService.allTask.add(task);GetRetWeetPic(status);/得到被轉(zhuǎn)發(fā)微博的圖片的任務(wù)if(commrt.get(status.getId()=null)/得到評(píng)論數(shù)和轉(zhuǎn)發(fā)數(shù)量的信息的任務(wù)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 更多微博的條目的任條處理,在這只有只處理當(dāng)前的 6 條記錄intnowPageNum_More=(Integer)ts.getTaskParam().get(nowPageNum);得到第幾頁intonePa
21、geNum_More=(Integer)ts.getTaskParam().get(onePageNum);得到的條數(shù)PagingonePageCounts_More=newPaging(nowPageNum_More,onePageNum_More);用這個(gè)類來決定這個(gè)一頁顯示多少條信息Liststatuses_More=weibo.getFriendsTimeline(onePageCounts_More);得到微博的信息跟據(jù)每一頁顯示多少個(gè)條目for(Statusstatus:statuses_More)/新條目頭像的獲取和任務(wù)的添加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();/獲取微博圖片的任務(wù),如果有圖片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);/得到被轉(zhuǎn)發(fā)微博的圖片的任務(wù)if(commrt.get(status.getId()=null)/更新轉(zhuǎn)發(fā)數(shù)量和評(píng)論數(shù)量的任務(wù)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;/傳入?yún)?shù)break;caseTaskType.USER_GET_USER_PORTRAIT:例行獲取頭像的任務(wù)Statusstatus_por=(Status)ts.getTaskParam().get(status);URLportraitUrl=status_por.getUser(
25、).getProfileImageURL();bytedata=GetDataFromURL.getPortrait(portraitUrl);/通過 url來得到頭像的二進(jìn)制數(shù)據(jù)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:/內(nèi)容中的圖片處理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 詳細(xì)內(nèi)容中的被轉(zhuǎn)微博的圖片處理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:/理評(píng)論數(shù)的更新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對(duì)一條微博進(jìn)行評(píng)論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對(duì)一條微博進(jìn)行轉(zhuǎn)發(fā)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);/如果哪個(gè)任務(wù)拋了異常就把
33、這個(gè)任務(wù)刪掉0,e.printStackTrace();/得到被轉(zhuǎn)發(fā)微博的圖片的任務(wù)privatevoidGetRetWeetPic(Statusstatus)if(status.isRetweet()StatusretWeetStatus=status.getRetweeted_status();if(retWeetStatus.getThumbnail_pic()!=null&retWeetStatus.getThumbnail_pic()!=)TaskretWeetPicTask=newTask();/添加得到被轉(zhuǎn)發(fā)微博的圖片任務(wù),如果有圖片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:/處理用戶登錄刷新的任務(wù)getActivityByName(LoginActivity).refresh(msg.what,msg.obj);/得到登錄的Activity,并傳遞參數(shù)刷新 uibreak;caseTaskType.USER_NEW_WEIBO:/夕卜理用戶發(fā)表微博的任務(wù)getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_USER_INFO:/ 處 理 得 至U用 戶 的 信 息 的 刷 新 任
36、 務(wù)break;caseTaskType.USER_GET_STATUS:/處理得至 U 用戶的主頁信息的刷新任務(wù)getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_STATUS_MORE/得到新的微博條目后對(duì)HomeActivity 界面的刷新getActivityByName(HomeActivity).refresh(msg.what,msg.obj);break;caseTaskType.USER_GET_USER_PORTRAIT 刷新頭像, 當(dāng)一個(gè)頭像的任務(wù)完成后
37、, 就執(zhí)行 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;/應(yīng)用程序退出時(shí)的提示:publicstaticvoidalertExit(finalContextcontext)AlertDialog.Builderab=newAlertDialog.Builder(context);ab.setTitle(退出提示);ab.setMessage(是否要真的退出程序);ab.se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇省安全員《A證》考試題庫
- 靈芝種植產(chǎn)業(yè)基地項(xiàng)目可行性研究報(bào)告-靈芝市場(chǎng)需求持續(xù)擴(kuò)大
- 廣州中醫(yī)藥大學(xué)《試劑生產(chǎn)工藝》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員-B證考試題庫及答案
- 廣州醫(yī)科大學(xué)《哲學(xué)通論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧建筑安全員考試題庫
- 2025年江蘇建筑安全員考試題庫及答案
- 2025年-江蘇省安全員《B證》考試題庫及答案
- 《FOOD中國飲食文化》課件
- 【語文課件】冀中的地道戰(zhàn)課件
- 你比我猜成語
- 異質(zhì)結(jié)完整分
- 膿毒癥1小時(shí)bundle質(zhì)量控制
- 第7講 高斯光束的聚焦和準(zhǔn)直課件
- 骨科患者術(shù)后疼痛管理的新進(jìn)展
- 小學(xué)生三好學(xué)生競(jìng)選演講稿PPT幻燈片
- 01S201室外消火栓安裝圖集
- 蒸餾酒及配制酒衛(wèi)生檢驗(yàn)原始記錄
- 高一英語外研版必修一(2019)Unit 1 Period 8 Writing-Writing a journal entry(學(xué)案)
- 鉆井HSE作業(yè)風(fēng)險(xiǎn)控制
- S7-200SMARTPLC應(yīng)用技術(shù)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論