package com.example.activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.format.Time;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.example.adapter.MyElvAdapter;
import com.example.application.MyApplication;
import com.example.fragment.Add_Fragment;
import com.example.fragment.Kecheng_Fragment;
import com.example.fragment.Shop_Fragment;
import com.example.fragment.Shouye_Fragment;
import com.example.fragment.Zuopin_Fragment;
import com.example.lingliapp.R;
import com.example.utils.ToStringUtils;
import com.example.utils.UpdateTools;
import com.example.vo.GoodsAll;
import com.example.vo.UpdateEntity;
import com.example.window.MyWindowManager;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.umeng.message.PushAgent;
import com.umeng.message.UmengRegistrar;
import com.umeng.socialize.utils.Log;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class MainActivity extends FragmentActivity {
private UpdateEntity updateEntity;
private FrameLayout fl;
private Button rb_shouye;
private Button rb_add;
private Button rb_kecheng;
private Button rb_zuopin;
private Button rb_shop;
private FragmentManager manager;
private Shouye_Fragment shouye_fragment;
private Zuopin_Fragment zuopin_fragment;
private Add_Fragment add_fragment;
private Kecheng_Fragment kecheng_fragment;
private Shop_Fragment shop_fragment;
private List<String> list;
private ImageView iv_menu;
private ImageView iv_myself;
private SlidingMenu menu_left;
private SlidingMenu menu_right;
private TextView tv_lingli;
private Button close;
private PopupWindow popupWindow;
private View view;
private Button pop_btn_zp, pop_btn_kc;
private ImageView iv_right_login;
private DisplayImageOptions options;
private TextView tv_right_name;
private MyApplication application;
private TextView tv_right_study;
//定义共享优先数据及基础字段
private String MY_RMBCost = "MY_RMBCost";
private String TodayTime = "TodayTime";
private Button bt_qiandao;
private TextView tv_time;
private String str;
private ExpandableListView elv_left_menu;
public GoodsAll goods;
private MyElvAdapter myElvAdapter;
BDLocation location;
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//版本更新
updateVersion();
mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类
mLocationClient.registerLocationListener(myListener); //注册监听函数
initLocation();
//开启定位
mLocationClient.start();
//开启推送服务
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.enable();
//统计应用启动数据
PushAgent.getInstance(this).onAppStart();
// 获取设备的device_token
String device_token = UmengRegistrar.getRegistrationId(this);
System.out.println(device_token);
application = (MyApplication) getApplication();
//找控件
findView();
//左侧滑
leftMenu();
//右侧滑
rightMenu();
//获取管理对象
manager = getSupportFragmentManager();
//获取事务
FragmentTransaction beginTransaction2 = manager.beginTransaction();
//创建fragment对象
shouye_fragment = new Shouye_Fragment();
zuopin_fragment = new Zuopin_Fragment();
add_fragment = new Add_Fragment();
kecheng_fragment = new Kecheng_Fragment();
shop_fragment = new Shop_Fragment();
//添加进activity中
beginTransaction2.add(R.id.fl, shouye_fragment, "shouye");
beginTransaction2.add(R.id.fl, zuopin_fragment, "zuopin");
beginTransaction2.add(R.id.fl, add_fragment, "add");
beginTransaction2.add(R.id.fl, kecheng_fragment, "kecheng");
beginTransaction2.add(R.id.fl, shop_fragment, "shop");
beginTransaction2.hide(zuopin_fragment);
beginTransaction2.hide(add_fragment);
beginTransaction2.hide(kecheng_fragment);
beginTransaction2.hide(shop_fragment);
beginTransaction2.commit();
//按钮监听
jianTing();
view = View.inflate(MainActivity.this, R.layout.popwindow, null);
popupWindow = new PopupWindow(view, 500, 200);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
// popupWindow.showAtLocation();
//泡泡窗口的空间
pop_btn_zp = (Button) view.findViewById(R.id.pop_btn_zp);
pop_btn_kc = (Button) view.findViewById(R.id.pop_btn_kc);
//泡泡窗口控件的监听
pop_btn_zp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, FaBu_Zp_Activity.class);
startActivity(intent);
}
}
});
pop_btn_kc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, PublishCourseActivity.class);
startActivity(intent);
}
}
});
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
/**
* 设置时间
*/
private void SetTime() {
//读取共享数据
SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
Time t = new Time();
// Time t = new Time();
t.setToNow();
int lastmonth = t.month + 1;
str = t.year + "年" + lastmonth + "月" + t.monthDay + "日";
String nowtime = my_rmb_data.getString(TodayTime, "").toString();
if (nowtime.equals(str) == true) {
// tv_time.setText(nowtime +"已签到!");
bt_qiandao.setText(nowtime + "已签到!");
// bt_qiandao.setBackgroundResource(R.drawable.yqd);
} else {
bt_qiandao.setText("签到");
// tv_time.setText(str);
// bt_qiandao.setBackgroundResource(R.drawable.qd);
}
}
private void findView() {
fl = (FrameLayout) findViewById(R.id.fl);
rb_shouye = (Button) findViewById(R.id.rb_shouye);
rb_zuopin = (Button) findViewById(R.id.rb_zuopin);
rb_add = (Button) findViewById(R.id.rb_add);
rb_kecheng = (Button) findViewById(R.id.rb_kecheng);
rb_shop = (Button) findViewById(R.id.rb_shop);
iv_menu = (ImageView) findViewById(R.id.iv_menu);
iv_myself = (ImageView) findViewById(R.id.iv_myself);
tv_lingli = (TextView) findViewById(R.id.tv_lingli);
}
public void leftMenu() {
// 初始化SlidingMenu对象
menu_left = new SlidingMenu(this);
// 设置侧滑方式为左侧侧滑
menu_left.setMode(SlidingMenu.LEFT);
iv_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu_left.showMenu();
}
});
/*
* 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
* SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
* 不响应触摸事件
*/
menu_left.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置阴影的宽度
menu_left.setShadowWidthRes(R.dimen.shadow_width);
// 设置阴影的图片
// menu.setShadowDrawable(R.drawable.ic_launcher);
// 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
menu_left.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置滑动时的渐变程度
menu_left.setFadeDegree(0.35f);
// 使SlidingMenu附加在Activity右边
// SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
// SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
menu_left.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
// 设置SlidingMenu关联的布局
menu_left.setMenu(R.layout.left_menu);
TextView tv_left_tuangou = (TextView) menu_left.findViewById(R.id.tv_left_tuangou);
elv_left_menu = (ExpandableListView) menu_left.findViewById(R.id.elv_left_menu);
tv_left_tuangou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Group_PurchaseActivity.class);
startActivity(intent);
}
});
elv_left_menu.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
//跳转至详情页面
Intent intent =new Intent(MainActivity.this, GoodsDetailsActivity.class);
intent.putExtra("goods",goods.goods.get(groupPosition));
intent.putExtra("gid",goods.goods.get(groupPosition).gsid);
startActivity(intent);
return false;
}
});
}
public void setType(GoodsAll goodsType) {
goods = goodsType;
if (myElvAdapter == null) {
myElvAdapter = new MyElvAdapter(MainActivity.this, goods);
elv_left_menu.setAdapter(myElvAdapter);
} else {
myElvAdapter.notifyDataSetChanged();
}
}
public void rightMenu() {
// 初始化SlidingMenu对象
menu_right = new SlidingMenu(this);
// 设置侧滑方式为左侧侧滑
menu_right.setMode(SlidingMenu.RIGHT);
iv_myself.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu_right.showMenu();
}
});
/*
* 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
* SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
* 不响应触摸事件
*/
menu_right.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置阴影的宽度
menu_right.setShadowWidthRes(R.dimen.shadow_width);
// 设置阴影的图片
// menu.setShadowDrawable(R.drawable.ic_launcher);
// 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
menu_right.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置滑动时的渐变程度
menu_right.setFadeDegree(0.35f);
// 使SlidingMenu附加在Activity右边
// SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
// SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
menu_right.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
// 设置SlidingMenu关联的布局
menu_right.setMenu(R.layout.right_menu);
//找控件
LinearLayout ll_right_login = (LinearLayout) menu_right.findViewById(R.id.ll_right_login);
iv_right_login = (ImageView) menu_right.findViewById(R.id.iv_right_login);
tv_right_name = (TextView) menu_right.findViewById(R.id.tv_right_name);
TextView tv_right_address = (TextView) menu_right.findViewById(R.id.tv_right_address);
tv_right_study = (TextView) menu_right.findViewById(R.id.tv_right_study);
Button btn_myspace = (Button) menu_right.findViewById(R.id.btn_myspace);
Button btn_mycollect = (Button) menu_right.findViewById(R.id.btn_mycollect);
Button btn_order = (Button) menu_right.findViewById(R.id.btn_order);
Button btn_myhongbao = (Button) menu_right.findViewById(R.id.btn_myhongbao);
Button btn_exit_login = (Button) menu_right.findViewById(R.id.btn_exit_login);
bt_qiandao = (Button) menu_right.findViewById(R.id.bt_qiandao);
Button tv_share = (Button) menu_right.findViewById(R.id.tv_share);
//生成二维码
tv_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,ErWeiMaActivity.class);
startActivity(intent);
}
});
// tv_time = (TextView)menu_right.findViewById(R.id.tv_qiandaotime);
SetTime();
tv_right_address.setText("北京");
//设置监听
iv_right_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivityForResult(intent, 100);
}
});
btn_myspace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, MySpaceActivity.class);
startActivity(intent);
}
}
});
btn_mycollect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(MainActivity.this, MyCollect_Activity.class);
startActivity(intent);
}
}
});
btn_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, ShopCart_Activity.class);
startActivity(intent);
}
}
});
btn_myhongbao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, PacketActivity.class);
startActivity(intent);
}
}
});
btn_exit_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
} else {
application.setUid(0);
Toast.makeText(MainActivity.this, "推出成功", Toast.LENGTH_SHORT).show();
}
}
});
//签到功能
bt_qiandao.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
if (my_rmb_data.getString(TodayTime, "").toString().equals(str) == true) {
Toast.makeText(MainActivity.this, "今日已签到!", Toast.LENGTH_SHORT).show();
} else {
my_rmb_data.edit()
.putString(TodayTime, str)
.commit();
// tv_time.setText("日期:"+ str +"已签到!");
// bt_qiandao.setBackgroundResource(R.drawable.yqd);
Toast.makeText(MainActivity.this, "签到成功!", Toast.LENGTH_SHORT).show();
bt_qiandao.setText(str + "已签到!");
//请求数据
getDataQiaoDao();
}
}
/**
* 签到数据
*/
private void getDataQiaoDao() {
new Thread() {
@Override
public void run() {
super.run();
MyApplication application = (MyApplication) getApplication();
String path = "http://169.254.156.130:8080/lingliServer/user.do?action=userSignIn&uid=" + application.getUid();
try {
URL url = new URL(path);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
if (200 == httpURLConnection.getResponseCode()) {
String json = ToStringUtils.getString(httpURLConnection.getInputStream());
JSONObject jsonObject = new JSONObject(json);
JSONObject aPackage = jsonObject.optJSONObject("signin");
int count = aPackage.optInt("count");
System.out.println("------------" + count);
/**
* 添加到用户
*/
handler.sendEmptyMessage(count);
//
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
});
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what = msg.what;
application.setConut(application.getConut() + what);
tv_right_study.setText("学习币:" + application.getConut());
}
};
private void jianTing() {
rb_shouye.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(shouye_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("玲丽学习平台");
beginTransaction.commit();
}
});
rb_zuopin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(zuopin_fragment);
beginTransaction.hide(shouye_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("作品展示");
beginTransaction.commit();
}
});
rb_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.showAtLocation(rb_add, Gravity.CENTER | Gravity.BOTTOM, 20, 20);
}
});
rb_kecheng.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(kecheng_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(shouye_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("课程展示");
beginTransaction.commit();
}
});
rb_shop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(shop_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shouye_fragment);
tv_lingli.setText("微商店");
beginTransaction.commit();
}
});
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
MyWindowManager.removeSmallWindow(this);
}
@Override
protected void onRestart() {
super.onRestart();
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
@Override
protected void onResume() {
super.onResume();
MyWindowManager.createSmallWindow(this);
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
if (requestCode == 100) {
String img = data.getStringExtra("img");
String name = data.getStringExtra("name");
int count = data.getIntExtra("count", 0);
// System.out.println("============>>>"+count);
DisplayImageOptions yuan_options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(100)).build();
ImageLoader.getInstance().displayImage(img, iv_right_login, yuan_options);
ImageLoader.getInstance().displayImage(img, iv_myself, yuan_options);
tv_right_name.setText(name);
tv_right_study.setText("学习币:" + count);
}
}
}
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
int span = 1000;
option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//可选,默认false,设置是否使用gps
option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
mLocationClient.setLocOption(option);
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
MainActivity.this.location = location;
}
}
/**
* 版本更新的方法
*/
private void updateVersion() {
dialog = new AlertDialog.Builder(MainActivity.this).setTitle("升级提醒")
.
// setIcon(R.drawable.app_icon).
setPositiveButton("在线升级", onclick)
.setNegativeButton("不想升级", null).create();
// 开启线程
new Thread(new CheckVersionTask()).start(); // 检查版本号
}
private AlertDialog dialog;
/**
* 版本更新的消息机制
*
*/
private Handler bbhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 0:
dialog.setMessage(updateEntity.getDescription());
dialog.show();
break;
case 1:
downLoadApk();
break;
}
}
};
/**
* 版本更新的对话框的监听
*/
DialogInterface.OnClickListener onclick = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
bbhandler.sendEmptyMessage(1);
}
};
/**
* 从服务器中下载APK
*/
protected void downLoadApk() {
final ProgressDialog pd; // 进度条对话框
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下载更新");
pd.show();
new Thread() {
@Override
public void run() {
try {
File file = getFileFromServer(updateEntity.getUrl(), pd);
sleep(3000);
UpdateTools tools = new UpdateTools();
// 安装APk
tools.installApk(file, MainActivity.this);
pd.dismiss(); // 结束掉进度条对话框
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
/**
* 从服务器获取xml解析并进行比对版本号
*/
public class CheckVersionTask implements Runnable {
public void run() {
try {
// 从资源文件获取服务器 地址
String path = "http://169.254.156.130:8080/lingliupdate_file.xml";
Log.i("msg", "获取数据成功!");
// 包装成url的对象
URL url = new URL(path);
Log.i("msg", "url获取数据成功!");
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5000);
InputStream is = conn.getInputStream();
updateEntity = UpdateTools.getUpdataInfo(is);
// 当前版本号
int versionCode = MainActivity.this.getPackageManager()
.getPackageInfo(MainActivity.this.getPackageName(), 0).versionCode;
if (Integer.parseInt(updateEntity.getVersion()) <= versionCode) {
Log.i("xxx", "版本号相同无需升级");
} else {
Log.i("xxxx", "版本号不同 ,提示用户升级 ");
bbhandler.sendEmptyMessage(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 下载新版本方法
*
*
*
*
*
*/
public File getFileFromServer(String path, ProgressDialog pd)
throws Exception {
// 如果相等的话表示当前的sdcard挂载在手机上并且是可用的
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
// 获取到文件的大小
pd.setMax(conn.getContentLength());
InputStream is = conn.getInputStream();
File file = new File(Environment.getExternalStorageDirectory(),
"updata.apk");
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len;
int total = 0;
while ((len = bis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
total += len;
// 获取当前下载量
pd.setProgress(total);
}
fos.close();
bis.close();
is.close();
return file;
} else {
return null;
}
}
}
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.format.Time;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.example.adapter.MyElvAdapter;
import com.example.application.MyApplication;
import com.example.fragment.Add_Fragment;
import com.example.fragment.Kecheng_Fragment;
import com.example.fragment.Shop_Fragment;
import com.example.fragment.Shouye_Fragment;
import com.example.fragment.Zuopin_Fragment;
import com.example.lingliapp.R;
import com.example.utils.ToStringUtils;
import com.example.utils.UpdateTools;
import com.example.vo.GoodsAll;
import com.example.vo.UpdateEntity;
import com.example.window.MyWindowManager;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.umeng.message.PushAgent;
import com.umeng.message.UmengRegistrar;
import com.umeng.socialize.utils.Log;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class MainActivity extends FragmentActivity {
private UpdateEntity updateEntity;
private FrameLayout fl;
private Button rb_shouye;
private Button rb_add;
private Button rb_kecheng;
private Button rb_zuopin;
private Button rb_shop;
private FragmentManager manager;
private Shouye_Fragment shouye_fragment;
private Zuopin_Fragment zuopin_fragment;
private Add_Fragment add_fragment;
private Kecheng_Fragment kecheng_fragment;
private Shop_Fragment shop_fragment;
private List<String> list;
private ImageView iv_menu;
private ImageView iv_myself;
private SlidingMenu menu_left;
private SlidingMenu menu_right;
private TextView tv_lingli;
private Button close;
private PopupWindow popupWindow;
private View view;
private Button pop_btn_zp, pop_btn_kc;
private ImageView iv_right_login;
private DisplayImageOptions options;
private TextView tv_right_name;
private MyApplication application;
private TextView tv_right_study;
//定义共享优先数据及基础字段
private String MY_RMBCost = "MY_RMBCost";
private String TodayTime = "TodayTime";
private Button bt_qiandao;
private TextView tv_time;
private String str;
private ExpandableListView elv_left_menu;
public GoodsAll goods;
private MyElvAdapter myElvAdapter;
BDLocation location;
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//版本更新
updateVersion();
mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类
mLocationClient.registerLocationListener(myListener); //注册监听函数
initLocation();
//开启定位
mLocationClient.start();
//开启推送服务
PushAgent mPushAgent = PushAgent.getInstance(this);
mPushAgent.enable();
//统计应用启动数据
PushAgent.getInstance(this).onAppStart();
// 获取设备的device_token
String device_token = UmengRegistrar.getRegistrationId(this);
System.out.println(device_token);
application = (MyApplication) getApplication();
//找控件
findView();
//左侧滑
leftMenu();
//右侧滑
rightMenu();
//获取管理对象
manager = getSupportFragmentManager();
//获取事务
FragmentTransaction beginTransaction2 = manager.beginTransaction();
//创建fragment对象
shouye_fragment = new Shouye_Fragment();
zuopin_fragment = new Zuopin_Fragment();
add_fragment = new Add_Fragment();
kecheng_fragment = new Kecheng_Fragment();
shop_fragment = new Shop_Fragment();
//添加进activity中
beginTransaction2.add(R.id.fl, shouye_fragment, "shouye");
beginTransaction2.add(R.id.fl, zuopin_fragment, "zuopin");
beginTransaction2.add(R.id.fl, add_fragment, "add");
beginTransaction2.add(R.id.fl, kecheng_fragment, "kecheng");
beginTransaction2.add(R.id.fl, shop_fragment, "shop");
beginTransaction2.hide(zuopin_fragment);
beginTransaction2.hide(add_fragment);
beginTransaction2.hide(kecheng_fragment);
beginTransaction2.hide(shop_fragment);
beginTransaction2.commit();
//按钮监听
jianTing();
view = View.inflate(MainActivity.this, R.layout.popwindow, null);
popupWindow = new PopupWindow(view, 500, 200);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
// popupWindow.showAtLocation();
//泡泡窗口的空间
pop_btn_zp = (Button) view.findViewById(R.id.pop_btn_zp);
pop_btn_kc = (Button) view.findViewById(R.id.pop_btn_kc);
//泡泡窗口控件的监听
pop_btn_zp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, FaBu_Zp_Activity.class);
startActivity(intent);
}
}
});
pop_btn_kc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, PublishCourseActivity.class);
startActivity(intent);
}
}
});
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
/**
* 设置时间
*/
private void SetTime() {
//读取共享数据
SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
Time t = new Time();
// Time t = new Time();
t.setToNow();
int lastmonth = t.month + 1;
str = t.year + "年" + lastmonth + "月" + t.monthDay + "日";
String nowtime = my_rmb_data.getString(TodayTime, "").toString();
if (nowtime.equals(str) == true) {
// tv_time.setText(nowtime +"已签到!");
bt_qiandao.setText(nowtime + "已签到!");
// bt_qiandao.setBackgroundResource(R.drawable.yqd);
} else {
bt_qiandao.setText("签到");
// tv_time.setText(str);
// bt_qiandao.setBackgroundResource(R.drawable.qd);
}
}
private void findView() {
fl = (FrameLayout) findViewById(R.id.fl);
rb_shouye = (Button) findViewById(R.id.rb_shouye);
rb_zuopin = (Button) findViewById(R.id.rb_zuopin);
rb_add = (Button) findViewById(R.id.rb_add);
rb_kecheng = (Button) findViewById(R.id.rb_kecheng);
rb_shop = (Button) findViewById(R.id.rb_shop);
iv_menu = (ImageView) findViewById(R.id.iv_menu);
iv_myself = (ImageView) findViewById(R.id.iv_myself);
tv_lingli = (TextView) findViewById(R.id.tv_lingli);
}
public void leftMenu() {
// 初始化SlidingMenu对象
menu_left = new SlidingMenu(this);
// 设置侧滑方式为左侧侧滑
menu_left.setMode(SlidingMenu.LEFT);
iv_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu_left.showMenu();
}
});
/*
* 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
* SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
* 不响应触摸事件
*/
menu_left.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置阴影的宽度
menu_left.setShadowWidthRes(R.dimen.shadow_width);
// 设置阴影的图片
// menu.setShadowDrawable(R.drawable.ic_launcher);
// 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
menu_left.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置滑动时的渐变程度
menu_left.setFadeDegree(0.35f);
// 使SlidingMenu附加在Activity右边
// SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
// SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
menu_left.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
// 设置SlidingMenu关联的布局
menu_left.setMenu(R.layout.left_menu);
TextView tv_left_tuangou = (TextView) menu_left.findViewById(R.id.tv_left_tuangou);
elv_left_menu = (ExpandableListView) menu_left.findViewById(R.id.elv_left_menu);
tv_left_tuangou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Group_PurchaseActivity.class);
startActivity(intent);
}
});
elv_left_menu.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
//跳转至详情页面
Intent intent =new Intent(MainActivity.this, GoodsDetailsActivity.class);
intent.putExtra("goods",goods.goods.get(groupPosition));
intent.putExtra("gid",goods.goods.get(groupPosition).gsid);
startActivity(intent);
return false;
}
});
}
public void setType(GoodsAll goodsType) {
goods = goodsType;
if (myElvAdapter == null) {
myElvAdapter = new MyElvAdapter(MainActivity.this, goods);
elv_left_menu.setAdapter(myElvAdapter);
} else {
myElvAdapter.notifyDataSetChanged();
}
}
public void rightMenu() {
// 初始化SlidingMenu对象
menu_right = new SlidingMenu(this);
// 设置侧滑方式为左侧侧滑
menu_right.setMode(SlidingMenu.RIGHT);
iv_myself.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu_right.showMenu();
}
});
/*
* 设置拖拽模式 SlidingMenu.TOUCHMODE_FULLSCREEN全屏触摸有效
* SlidingMenu.TOUCHMODE_MARGIN 拖拽边缘有效 SlidingMenu.TOUCHMODE_NONE
* 不响应触摸事件
*/
menu_right.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置阴影的宽度
menu_right.setShadowWidthRes(R.dimen.shadow_width);
// 设置阴影的图片
// menu.setShadowDrawable(R.drawable.ic_launcher);
// 设置sldingMenu的剩余大小---=内容显示页对应的dp大小
menu_right.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置滑动时的渐变程度
menu_right.setFadeDegree(0.35f);
// 使SlidingMenu附加在Activity右边
// SlidingMenu.SLIDING_CONTENT 将侧滑栏设置为在内容位置
// SlidingMenu.SLIDING_WINDOW 将侧滑栏设置为在整个窗口呈现
menu_right.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
// 设置SlidingMenu关联的布局
menu_right.setMenu(R.layout.right_menu);
//找控件
LinearLayout ll_right_login = (LinearLayout) menu_right.findViewById(R.id.ll_right_login);
iv_right_login = (ImageView) menu_right.findViewById(R.id.iv_right_login);
tv_right_name = (TextView) menu_right.findViewById(R.id.tv_right_name);
TextView tv_right_address = (TextView) menu_right.findViewById(R.id.tv_right_address);
tv_right_study = (TextView) menu_right.findViewById(R.id.tv_right_study);
Button btn_myspace = (Button) menu_right.findViewById(R.id.btn_myspace);
Button btn_mycollect = (Button) menu_right.findViewById(R.id.btn_mycollect);
Button btn_order = (Button) menu_right.findViewById(R.id.btn_order);
Button btn_myhongbao = (Button) menu_right.findViewById(R.id.btn_myhongbao);
Button btn_exit_login = (Button) menu_right.findViewById(R.id.btn_exit_login);
bt_qiandao = (Button) menu_right.findViewById(R.id.bt_qiandao);
Button tv_share = (Button) menu_right.findViewById(R.id.tv_share);
//生成二维码
tv_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,ErWeiMaActivity.class);
startActivity(intent);
}
});
// tv_time = (TextView)menu_right.findViewById(R.id.tv_qiandaotime);
SetTime();
tv_right_address.setText("北京");
//设置监听
iv_right_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivityForResult(intent, 100);
}
});
btn_myspace.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, MySpaceActivity.class);
startActivity(intent);
}
}
});
btn_mycollect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(MainActivity.this, MyCollect_Activity.class);
startActivity(intent);
}
}
});
btn_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, ShopCart_Activity.class);
startActivity(intent);
}
}
});
btn_myhongbao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent(MainActivity.this, PacketActivity.class);
startActivity(intent);
}
}
});
btn_exit_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int uid = application.getUid();
if (uid == 0) {
Toast.makeText(MainActivity.this, "Sorry,请进行登录。", Toast.LENGTH_SHORT).show();
} else {
application.setUid(0);
Toast.makeText(MainActivity.this, "推出成功", Toast.LENGTH_SHORT).show();
}
}
});
//签到功能
bt_qiandao.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences my_rmb_data = getSharedPreferences(MY_RMBCost, 0);
if (my_rmb_data.getString(TodayTime, "").toString().equals(str) == true) {
Toast.makeText(MainActivity.this, "今日已签到!", Toast.LENGTH_SHORT).show();
} else {
my_rmb_data.edit()
.putString(TodayTime, str)
.commit();
// tv_time.setText("日期:"+ str +"已签到!");
// bt_qiandao.setBackgroundResource(R.drawable.yqd);
Toast.makeText(MainActivity.this, "签到成功!", Toast.LENGTH_SHORT).show();
bt_qiandao.setText(str + "已签到!");
//请求数据
getDataQiaoDao();
}
}
/**
* 签到数据
*/
private void getDataQiaoDao() {
new Thread() {
@Override
public void run() {
super.run();
MyApplication application = (MyApplication) getApplication();
String path = "http://169.254.156.130:8080/lingliServer/user.do?action=userSignIn&uid=" + application.getUid();
try {
URL url = new URL(path);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
if (200 == httpURLConnection.getResponseCode()) {
String json = ToStringUtils.getString(httpURLConnection.getInputStream());
JSONObject jsonObject = new JSONObject(json);
JSONObject aPackage = jsonObject.optJSONObject("signin");
int count = aPackage.optInt("count");
System.out.println("------------" + count);
/**
* 添加到用户
*/
handler.sendEmptyMessage(count);
//
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
});
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what = msg.what;
application.setConut(application.getConut() + what);
tv_right_study.setText("学习币:" + application.getConut());
}
};
private void jianTing() {
rb_shouye.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(shouye_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("玲丽学习平台");
beginTransaction.commit();
}
});
rb_zuopin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(zuopin_fragment);
beginTransaction.hide(shouye_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("作品展示");
beginTransaction.commit();
}
});
rb_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.showAtLocation(rb_add, Gravity.CENTER | Gravity.BOTTOM, 20, 20);
}
});
rb_kecheng.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(kecheng_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(shouye_fragment);
beginTransaction.hide(shop_fragment);
tv_lingli.setText("课程展示");
beginTransaction.commit();
}
});
rb_shop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction beginTransaction = manager.beginTransaction();
beginTransaction.show(shop_fragment);
beginTransaction.hide(zuopin_fragment);
beginTransaction.hide(add_fragment);
beginTransaction.hide(kecheng_fragment);
beginTransaction.hide(shouye_fragment);
tv_lingli.setText("微商店");
beginTransaction.commit();
}
});
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
MyWindowManager.removeSmallWindow(this);
}
@Override
protected void onRestart() {
super.onRestart();
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
@Override
protected void onResume() {
super.onResume();
MyWindowManager.createSmallWindow(this);
int conut = application.getConut();
tv_right_study.setText("学习币:" + conut);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
if (requestCode == 100) {
String img = data.getStringExtra("img");
String name = data.getStringExtra("name");
int count = data.getIntExtra("count", 0);
// System.out.println("============>>>"+count);
DisplayImageOptions yuan_options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(100)).build();
ImageLoader.getInstance().displayImage(img, iv_right_login, yuan_options);
ImageLoader.getInstance().displayImage(img, iv_myself, yuan_options);
tv_right_name.setText(name);
tv_right_study.setText("学习币:" + count);
}
}
}
private void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
int span = 1000;
option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//可选,默认false,设置是否使用gps
option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
mLocationClient.setLocOption(option);
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
MainActivity.this.location = location;
}
}
/**
* 版本更新的方法
*/
private void updateVersion() {
dialog = new AlertDialog.Builder(MainActivity.this).setTitle("升级提醒")
.
// setIcon(R.drawable.app_icon).
setPositiveButton("在线升级", onclick)
.setNegativeButton("不想升级", null).create();
// 开启线程
new Thread(new CheckVersionTask()).start(); // 检查版本号
}
private AlertDialog dialog;
/**
* 版本更新的消息机制
*
*/
private Handler bbhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 0:
dialog.setMessage(updateEntity.getDescription());
dialog.show();
break;
case 1:
downLoadApk();
break;
}
}
};
/**
* 版本更新的对话框的监听
*/
DialogInterface.OnClickListener onclick = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
bbhandler.sendEmptyMessage(1);
}
};
/**
* 从服务器中下载APK
*/
protected void downLoadApk() {
final ProgressDialog pd; // 进度条对话框
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下载更新");
pd.show();
new Thread() {
@Override
public void run() {
try {
File file = getFileFromServer(updateEntity.getUrl(), pd);
sleep(3000);
UpdateTools tools = new UpdateTools();
// 安装APk
tools.installApk(file, MainActivity.this);
pd.dismiss(); // 结束掉进度条对话框
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
/**
* 从服务器获取xml解析并进行比对版本号
*/
public class CheckVersionTask implements Runnable {
public void run() {
try {
// 从资源文件获取服务器 地址
String path = "http://169.254.156.130:8080/lingliupdate_file.xml";
Log.i("msg", "获取数据成功!");
// 包装成url的对象
URL url = new URL(path);
Log.i("msg", "url获取数据成功!");
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5000);
InputStream is = conn.getInputStream();
updateEntity = UpdateTools.getUpdataInfo(is);
// 当前版本号
int versionCode = MainActivity.this.getPackageManager()
.getPackageInfo(MainActivity.this.getPackageName(), 0).versionCode;
if (Integer.parseInt(updateEntity.getVersion()) <= versionCode) {
Log.i("xxx", "版本号相同无需升级");
} else {
Log.i("xxxx", "版本号不同 ,提示用户升级 ");
bbhandler.sendEmptyMessage(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 下载新版本方法
*
*
*
*
*
*/
public File getFileFromServer(String path, ProgressDialog pd)
throws Exception {
// 如果相等的话表示当前的sdcard挂载在手机上并且是可用的
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
// 获取到文件的大小
pd.setMax(conn.getContentLength());
InputStream is = conn.getInputStream();
File file = new File(Environment.getExternalStorageDirectory(),
"updata.apk");
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len;
int total = 0;
while ((len = bis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
total += len;
// 获取当前下载量
pd.setProgress(total);
}
fos.close();
bis.close();
is.close();
return file;
} else {
return null;
}
}
}