新浪

来源:互联网 发布:淘宝开店指南 编辑:程序博客网 时间:2024/05/03 13:35
package com.nt.iweibo.logic;import java.io.IOException;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;import org.json.JSONException;import org.json.JSONObject;import weibo4j.Timeline;import weibo4j.Users;import weibo4j.model.Emotion;import weibo4j.model.Paging;import weibo4j.model.Status;import weibo4j.model.StatusWapper;import weibo4j.model.User;import weibo4j.model.WeiboException;import android.app.Activity;import android.app.Service;import android.content.Context;import android.content.Intent;import android.graphics.drawable.Drawable;import android.os.Handler;import android.os.IBinder;import android.os.Message;import com.nt.iweibo.app.Preferences;import com.nt.iweibo.bean.Task;import com.nt.iweibo.bean.UserInfo;import com.nt.iweibo.services.UserInfoServices;import com.nt.iweibo.ui.AccessTokenActivity;import com.nt.iweibo.ui.IWeiboActivity;import com.nt.iweibo.utils.NetUtil;public class MainService extends Service implements Runnable {private static Queue<Task> tasks =new LinkedList<Task>();//把要更新的activity都放入一个LISTprivate static ArrayList<Activity> appActivities = new ArrayList<Activity>();private IWeiboActivity activity;private UserInfoServices uServices;// 当前系统登录用户public static UserInfo nowUser;//在登录的时候已赋值,服务里,后台运行未关闭可引用private static Users um;privateUserInfo userInfo;private static Timeline tm;//是否运行线程private boolean isRun;/** * activity启动一个任务进来 * @param t */public static void  newTask(Task t){tasks.add(t);}/** * 添加任务到队列中 * @param t */Handler handler =new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case Task.WEIBO_LOGIN:// 用户登录//更新UIactivity = (IWeiboActivity) getActivityByName("LoginActivity");activity.refresh();break;case Task.GET_ACCESS_TOKEN:// 获取用户授权信息activity = (IWeiboActivity) getActivityByName("AccessTokenActivity");activity.refresh(AccessTokenActivity.GET_TOKEN);//activity.refresh();break;// 获取用户头像和用户名称case Task.GET_USER_HEAD:activity = (IWeiboActivity) getActivityByName("AccessTokenActivity");activity.refresh(AccessTokenActivity.GET_HEAD,msg.obj);break;case Task.WEIBO_FRIEDNS_TIMELINE:activity = (IWeiboActivity) getActivityByName("HomeActivity");activity.refresh(msg.obj);break;/** * 获得表情库 */case Task.WEIBO_EMOTIONS:{IWeiboActivity activity = (IWeiboActivity) getActivityByName("AtActivity");activity.refresh(msg.obj);break;}/** * 显示某一个的详细信息 */case Task.STATUS_SHOW:{IWeiboActivity activity = (IWeiboActivity) getActivityByName("WeiboDetailActiivity");activity.refresh(msg.obj);break;}// 发表微博case Task.NEW_WEIBO:{IWeiboActivity activity = (IWeiboActivity) getActivityByName("NewWeiboActivity");activity.refresh(msg.obj);break;}//得到用户的详细信息case Task.TASK_GET_USER_INFO:IWeiboActivity activity = (IWeiboActivity) getActivityByName("AtActivity");activity.refresh(msg.obj);break;}}};/** * 根据Activity 的Name 获取Activity实例 * @param name * @return */private Activity getActivityByName(String name){if(!appActivities.isEmpty()){for (Activity activity : appActivities) {if(null!=activity){if(activity.getClass().getName().indexOf(name)>0){return activity;}}}}return null;}/** * 添加一个Activivy对象 * @param activity */public static void addActivity(Activity activity){if(!appActivities.isEmpty()){for (Activity at : appActivities){if(at.getClass().getName().equals(activity.getClass().getName())){appActivities.remove(at);break;}}}appActivities.add(activity);}@Overridepublic void onCreate() {super.onCreate();isRun =true;Thread thread  =new Thread(this);thread.start();}@Overridepublic void run() {while (isRun) {Task task =null;if(!tasks.isEmpty()){//检索并删除此队列的头 ,返回的就是移除的对象task =tasks.poll();//执行完任务后把该任务从任务队列中移除if(null!=task){doTask(task);}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}/** * 处理任务 */private void doTask(Task t){Message msg =handler.obtainMessage();msg.what =t.getTaskId();switch (t.getTaskId()) {case Task.WEIBO_LOGIN:System.out.println("doTask>>>>>> user Login!!");nowUser= (UserInfo) t.getTaskParams().get("user");um = new Users();um.client.setToken(nowUser.getToken());msg.obj="登陆成功";break;case Task.GET_ACCESS_TOKEN:// 获取用户授权信息break;//获取用户头像和名称case Task.GET_USER_HEAD:try{userInfo = (UserInfo) t.getTaskParams().get("user");um = new Users();um.client.setToken(userInfo.getToken());User user = um.showUserById(userInfo.getUserId());System.out.println("=============>>>>>"+user);Drawable userIcon = NetUtil.getNetImage(user.getProfileImageURL());userInfo.setUserName(user.getName());userInfo.setUserIcon(userIcon);msg.obj = userInfo;} catch (Exception e){e.printStackTrace();}break;case Task.WEIBO_FRIEDNS_TIMELINE:// 获取用户授权信息try {long maxId =(Long) t.getTaskParams().get("maxId");Paging page = new Paging();if(maxId <= 0)page.setPage(1);else{page.setMaxId(maxId);}page.setCount(Preferences.PAGE_SIZE);tm = new Timeline();tm.client.setToken(nowUser.getToken());StatusWapper statusWapper = tm.getFriendsTimeline(0, 0, page);List<Status> status=statusWapper.getStatuses();msg.obj = status;} catch (WeiboException e) {e.printStackTrace();}break;//获取表情case Task.WEIBO_EMOTIONS:tm = new Timeline();tm.client.setToken(nowUser.getToken());try{List<Emotion> emotions =  tm.getEmotions("face","cnname");msg.obj = emotions;} catch (WeiboException e){e.printStackTrace();}break;// 获取单条微博信息case Task.STATUS_SHOW:{tm = new Timeline();tm.client.setToken(nowUser.getToken());long id=(Long) t.getTaskParams().get("status_id");String status_id=String.valueOf(id);try{msg.obj=tm.showStatus(status_id);} catch (WeiboException e){e.printStackTrace();}break;}// 发表微博case Task.NEW_WEIBO:{tm = new Timeline();tm.client.setToken(nowUser.getToken());String status = (String) t.getTaskParams().get("status");try{Status s =tm.UpdateStatus(status);System.out.println(s);msg.obj = true;} catch (WeiboException e){e.printStackTrace();msg.obj = false;}break;}//3.获得用户信息case Task.TASK_GET_USER_INFO:um = new Users();um.client.setToken(nowUser.getToken());User user=null;try { user = um.showUserById(String.valueOf(nowUser.getUserId()));} catch (WeiboException e) {e.printStackTrace();}msg.obj = user;break;}handler.sendMessage(msg);}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}/** * 退出系统 * @param context */public static void appExit(Context context){//Finish 所有的Activityfor (Activity activity : appActivities){if(!activity.isFinishing())activity.finish();}// 结束 ServiceIntent service = new Intent("com.nt.iweibo.logic.MainService");context.stopService(service);}}
login
<pre name="code" class="java">package com.nt.iweibo.ui;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.app.Dialog;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.nt.iweibo.R;import com.nt.iweibo.adapter.UserInfoAdapter;import com.nt.iweibo.bean.Task;import com.nt.iweibo.bean.UserInfo;import com.nt.iweibo.logic.MainService;import com.nt.iweibo.services.UserInfoServices;import com.nt.iweibo.utils.SharedPreferencesUtil;import com.oauthTest.sns.Sina;import com.oauthTest.utils.ConfigUtil;public class LoginActivity extends Activity implements IWeiboActivity{private Button btnLogin;private UserInfoServices services;private List<UserInfo> users;private UserInfo nowUser;private Button btn_user_selecte;private Button btn_add_account;private ImageView imge_user_head;private TextView txt_login_show_name;private ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login);//启动服务Intent intent  =new Intent(this,MainService.class);startService(intent);services = new UserInfoServices(this);// 把自己添加到Activity集合里面MainService.addActivity(this);init();nowUser=SharedPreferencesUtil.getLoginUser(this);if(null != nowUser){//System.out.println("nowUser.getToken()===>>>>"+nowUser.getToken());txt_login_show_name.setText(nowUser.getUserName());nowUser = services.getUserInfoByUserId(nowUser.getUserId());imge_user_head.setImageDrawable(nowUser.getUserIcon());showDialg();newTask();}//把自己放进去appActivites集合里面MainService.addActivity(this);}@Overridepublic void init() {users = services.findAllUsers();if(null==users || users.isEmpty()){Intent intent = new Intent(this, AuthActivity.class);startActivity(intent);finish();}initView();}private  void initView(){imge_user_head = (ImageView) this.findViewById(R.id.imge_user_head);txt_login_show_name = (TextView) this.findViewById(R.id.txt_login_show_name);btn_user_selecte = (Button) this.findViewById(R.id.btn_user_selected);btn_user_selecte.setOnClickListener(new UserSelectedOnClickListener());btnLogin=(Button) findViewById(R.id.btn_login);    btn_add_account = (Button) this.findViewById(R.id.btn_add_account);btn_add_account.setOnClickListener(new OnClickListener(){public void onClick(View v){ConfigUtil.oauthInter = new Sina();Intent intent = new Intent(LoginActivity.this, WebViewActivity.class);startActivity(intent);}});btnLogin.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(txt_login_show_name.getText()!=null&&""!=txt_login_show_name.getText()){///打开进度框showDialg();// 保存登录用户信息SharedPreferencesUtil.saveLoginUser(LoginActivity.this,nowUser);//发送登录任务给系统newTask();}else{Toast.makeText(LoginActivity.this,R.string.select_user, 0).show();}}});}@Overridepublic void refresh(Object... params) {if(null != progressDialog)progressDialog.dismiss();jump();}private void jump(){//跳转Intent intent = new Intent(this, MainActivity.class);startActivity(intent);this.finish();}private void newTask(){Map<String, Object> taskParams = new HashMap<String, Object>();taskParams.put("user", nowUser);Task task = new Task(Task.WEIBO_LOGIN, taskParams);MainService.newTask(task);}private void showDialg(){if(null == progressDialog){progressDialog = new ProgressDialog(this);}progressDialog.setMessage("正在登录...");progressDialog.show();}final class UserSelectedOnClickListener implements OnClickListener{public void onClick(View v){View viewDlg = View.inflate(LoginActivity.this, R.layout.user_selected_dialog, null);final Dialog dialog = new Dialog(LoginActivity.this, R.style.user_selected_dialog);dialog.setContentView(viewDlg);dialog.show();ListView listView = (ListView) viewDlg.findViewById(R.id.lv_user_list);UserInfoAdapter adapter = new UserInfoAdapter(LoginActivity.this, users);listView.setAdapter(adapter);listView.setOnItemClickListener(new OnItemClickListener(){public void onItemClick(AdapterView<?> arg0, View view, int arg2,long id){ImageView imagUserHead=(ImageView) view.findViewById(R.id.img_user_head_temp);TextView txtUserName=(TextView) view.findViewById(R.id.txt_show_name);imge_user_head.setImageDrawable(imagUserHead.getDrawable());txt_login_show_name.setText(txtUserName.getText());nowUser = services.getUserInfoByUserId(id+"");//httpClient.setToken(nowUser.getToken());System.out.println("nowUser2===>>>"+nowUser);dialog.dismiss();}});}}}



0 0
原创粉丝点击