package com.jiuqi.njt.register;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.DataDictionaryBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.KindsOfCarBean;
import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode;
import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean;
import com.jiuqi.mobile.nigo.comeclose.exception.LoginException;
import com.jiuqi.mobile.nigo.comeclose.manager.base.IDataDictionaryManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext;
import com.jiuqi.njt.data.CheckStateInterface;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.data.Optdb_interfce;
import com.jiuqi.njt.data.OptsharepreInterface;
import com.jiuqi.njt.management.task.UpUserImageTask;
import com.jiuqi.njt.model.NxwAppVoManager;
import com.jiuqi.njt.register.RegisterTask.RegisterFinishReturnData;
import com.jiuqi.njt.service.ServiceUtil;
import com.jiuqi.njt.service.UpdateService;
import com.jiuqi.njt.son.MyState;
import com.jiuqi.njt.ui.CheckAppInstalledTask;
import com.jiuqi.njt.ui.LoginActivityNew;
import com.jiuqi.njt.ui.NjtMainActivity;
import com.jiuqi.njt.ui.PoiLocateActivity;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.RepairUtils;
import com.jiuqi.njt.util.ReturnObject;
import com.jiuqi.njt.util.UIUtil;
import com.jiuqi.njt.util.ValidateRule;
import com.jiuqi.njt.util.Validator;
import com.jiuqi.njt.util.login.GetLoginUserDataService;
import com.jiuqi.njt.widget.ChosePictureDialog;
import com.jiuqi.njt.widget.DialogWithList;
import com.jqyd.android.module.lbs.util.CheckState_interface;
import com.jqyd.utils.PhotoUtil;
/**
* 注册用的工具类
*
* @author joe
*
*/
public class RegisterUtils {
private String TAG = this.getClass().getName();
/**
*
* @param context
* @param managerClass
* 请求方法的类名
* @param methodName
* 请求的方法名
* @param parameterTypes
* 请求的方法参数类型数组
* @param args
* 请求的方法参数数组
* @param showDialog
* 是否显示提示信息对话框
* @param allTaskInterface
* 数据返回时回调的接口对象
*/
public static void executeTask(Context context, Class<?> managerClass,
String methodName, Class[] parameterTypes, Object[] args,boolean showDialog,
final AllTaskInterface allTaskInterface) {
new TestTask(context, new AllTaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
if(null!=allTaskInterface){
allTaskInterface.taskFinishReturn(result);
}
}
}, managerClass, methodName, parameterTypes, args,showDialog,5).execute();
}
/**
* 获取农机类别(大小类)
*
* @param context
* @param allTaskInterface
* 数据返回时回调的接口对象
*/
@SuppressWarnings("unchecked")
public static void getAgriculturalCategory(Context context,
final AllTaskInterface allTaskInterface) {
Optdb_interfce database = new Optdb_interfce(context);
database.createNJTable(); // 创建数据库表(表存在时不执行)
ArrayList<KindsOfCarBean> agriculturalBCategoryList = database
.getKindsOfCarBeanInfo(MyState.CAR_BIG_TYPE_MARK + ""); // 从数据库中查询数据,如果有数据则不再从网络端获取
if (null != agriculturalBCategoryList
&& agriculturalBCategoryList.size() != 0) {
ArrayList<KindsOfCarBean> agriculturalSCategoryList = database
.getSmallKindsOfCarBeanInfo(MyState.CAR_SMALL_TYPE_MARK
+ "", agriculturalBCategoryList.get(0)
.getBigClassName());
if (agriculturalSCategoryList.size() != 0) {
ArrayList<KindsOfCarBean> agriculturalPCategoryList = database
.getSmallKindsOfCarBeanPMInfo(MyState.CAR_TYPE_MARK
+ "", agriculturalSCategoryList.get(0)
.getSmallClassName());
/**
* 将农机类别数据返回
*/
allTaskInterface.taskFinishReturn(agriculturalBCategoryList,
agriculturalSCategoryList, agriculturalPCategoryList);
}
} else {
new GetDriverDataTask(context, new AllTaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
allTaskInterface.taskFinishReturn(result);
}
}).execute();
}
}
/**
* 根据注册返回的结果和验证用户对象,判断注册的下一步流程
*
* @param context
* @param result
* 注册返回的结果对象
* @param userBean
* 验证用户的返回用户对象
* @param isRegisterByOther
* 判断是不是其他用户注册
*/
public static <T> void judgeRegisterMethods(final Context context, T[] result,UserBean userBean,boolean isRegisterByOther) {
RegisterFinishReturnData registerFinishReturnData = (RegisterFinishReturnData) result[0];
Log.e("judgeRegisterMethods", registerFinishReturnData.toString());
if (registerFinishReturnData.isRegisterSucess())// 注册成功进入下一步,否则就直接在异步类中提示失败原因
{
if (registerFinishReturnData.isClientContextSucess())// 注册成功,并且获取到Session就进行下一步,否则就跳转到登录页面
{
Intent jump = new Intent();
jump.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
String sessionId = registerFinishReturnData.getRegisterReturnString();
jump.putExtra("sessionId",sessionId);
if (null == userBean) // 说明是注册,就跳转到选择角色页面
{
UIUtil.showMsg(context, "已经注册成功,初始密码是手机号的后六位");
jump.setClass(context, SelectRole.class);
jump.putExtra("isRegisterByOther", isRegisterByOther);
} else// 说明是通过验证码登录
{
if (registerFinishReturnData.isNeedPerfectInfor()) // 如果判断用户是否完善信息成功,就进行下一步,否则跳转到登录页面
{
if ("perfectinfo".equals(registerFinishReturnData.getGetNeedPerfectInforString())) // 没有完善信息,就跳转到完善信息页面
{
// 如果是老用户先要插入角色,然后整合模块,(更新SessionID)
jump.setClass(context, PerfectInformation.class);
jump.putExtra("UserBean", userBean);
} else if ("index".equals(registerFinishReturnData.getGetNeedPerfectInforString()))// 如果已经完善信息,就直接进入主页
{
// 如果是老用户先要插入角色,然后整合模块,(更新SessionID)
jump.setClass(context, NjtMainActivity.class);
MyApp application = (MyApp) context.getApplicationContext();
application.setIsLogin(true);
new RegisterUtils().loginSuccess(context);
} else if ("chooserole".equals(registerFinishReturnData.getGetNeedPerfectInforString()))// 如果是没选择角色,就跳转到完善信息页面
{
jump.setClass(context, SelectRole.class);
} else {
UIUtil.showMsg(context, "错误的状态");
jump.setClass(context, LoginActivityNew.class);
}
} else {
jump.setClass(context, LoginActivityNew.class);
}
}
context.startActivity(jump);
((Activity) context).finish();
} else {
UIUtil.showMsg(context, registerFinishReturnData.getRegisterReturnString());
}
}
}
/**
* 根据用户对象保存用户的角色数据
*
* @param context
* @param userBean
* 用户对象
* @param sessionId
* 注册返回的SessionID
* @param allTaskInterface
* 验证用户的返回用户对象
*/
public static void saveUserRolesByUserBean(Context context,
UserBean userBean, String sessionId,final AllTaskInterface allTaskInterface,boolean showDialog) {
List<RoleCode> roleCodeList = getUserSelectRoles(userBean);
saveUserRolesByRoles(context, roleCodeList, sessionId,new AllTaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
// TODO Auto-generated method stub
allTaskInterface.taskFinishReturn(result);
}
},showDialog);
}
/**
* 根据用户选择的角色保存角色数据
*
* @param context
* @param roleCodeList
* 用户选择的角色
* @param sessionId
* 注册返回的SessionID
* @param allTaskInterface
* 验证用户的返回用户对象
*/
public static void saveUserRolesByRoles(Context context,
List<RoleCode> roleCodeList, String sessionId,final AllTaskInterface allTaskInterface,boolean showDialog) {
new SaveUserRolesTask(context, roleCodeList, sessionId,new AllTaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
// TODO Auto-generated method stub
allTaskInterface.taskFinishReturn(result);
}
},showDialog).execute();
}
/**
* 请求位置标记
* 请求码Constants.REQUEST_MAP_LOCATE_CODE
* @param context
*/
public static void requestLocation(Activity context) {
Intent intent = new Intent(context, PoiLocateActivity.class);
context.startActivityForResult(intent,
Constants.REQUEST_MAP_LOCATE_CODE);
}
/**
* 验证控件上是不是有内容,
* @param context
* @param widgets
* 待验证的控件数组(TextView[] )
* @return
*/
public static boolean validatorTextViewHaveData(Context context,
TextView[] widgets) {
Validator validator = null;
ReturnObject ro = null;
validator = new Validator();
validator.addRules(ValidateRule.IS_NOT_EMPTY);
for (TextView w : widgets) {
ro = validator.val(w.getText());
if (!ro.isSuccess) {
UIUtil.showMsg(context, w.getHint().toString());
w.requestFocus();
return false;
}
}
return true;
}
/**
* 验证控件内容是不是电话号码
* @param context
* @param widgets
* 待验证的控件数组(TextView[] )
* @return
*/
public static boolean validatorIsPhoneNumber(Context context,
TextView[] widgets) {
Validator validator = null;
ReturnObject ro = null;
validator = new Validator();
validator.addRules(ValidateRule.IS_MOBILE_NUMBER);
for (TextView w : widgets) {
ro = validator.val(w.getText());
if (!ro.isSuccess) {
w.requestFocus();
UIUtil.showMsg(context, ro.getErrorMessage());
return false;
}
}
return true;
}
/**
* 弹出一个对话框(ListView样式,还包含一个标题和一个取消按钮)
*
* @param items
* 显示内容
* @param btn
* 触发对话框弹出按钮
* @param title
* 弹出框标题
*/
public static void doPopWindow(Context context, final Button btn,
final String[] items, String title,
final JDialogOnItemOnClick jDialogOnItemOnClick) {
if (null != items && items.length > 0) {
DialogWithList.Builder dialog = new DialogWithList.Builder(context);
dialog.setTitle(title);
dialog.setPositiveButton(Constants.CANCEL_TEXT,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
btn.setText(items[which]);
dialog.dismiss();
jDialogOnItemOnClick.JItemClick(which);
}
});
dialog.create().show();
}
}
public interface JDialogOnItemOnClick {
/**
* 返回选择的下标
* @param index
*/
public void JItemClick(int index);
}
/**
* 获取完善信息相应的角色类别数据
* 主要包括农机厂家(90005)、加油站(90001)、维修点(10502)、服务机构(90002)、合作社(30101)
*
* @param context
* 上下文环境
* @param allTaskInterface
* 数据返回接口,返回的数据类型是T[](泛型数组)
* 数据存在数组的第一个索引位置,类型是DataDictionaryBean[]
* @param mark
* 对应角色的标识
* 农机厂家(90005)、加油站(90001)、维修点(10502)、服务机构(90002)、合作社(30101)
*/
public static void getPerfectMessage(Context context,
final AllTaskInterface allTaskInterface, int mark) {
if(new CheckState_interface(context).checkConnection()){
Class<?> managerClass = IDataDictionaryManager.class;
final String methodName = "get";
Class[] parameterTypes = { int.class };
Object[] args = { mark };
new TestTask(context, new AllTaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
allTaskInterface.taskFinishReturn(result);
}
}, managerClass, methodName, parameterTypes, args,true,5).execute();
}else{
UIUtil.showMsg(context, Constants.NETWORK_STATE_ERROR);
}
}
/**
* 根据农机类别获取到农机类别对应的名称
*
* @param dataArray
* 农机类别
* @return String[] 农机类别获取到农机类别对应的名称
*/
public static String[] getDataDictionaryBeanName(
DataDictionaryBean[] dataArray) {
String[] nameArray = null;
if (null != dataArray && dataArray.length > 0) {
nameArray = new String[dataArray.length];
for (int i = 0; i < dataArray.length; i++) {
nameArray[i] = dataArray[i].getName();
}
}
return nameArray;
}
/**
* 根据用户对象获取到用户选择的角色
*
* @param userBean
* 用户对象
* @return List<RoleCode> 用户选择的角色集合
*/
public static List<RoleCode> getUserSelectRoles(UserBean userBean) {
List<RoleCode> selectRoleList = new ArrayList<RoleCode>();
if(null!=userBean){
if(null!=userBean){
String roleString = userBean.getRolesString();
@SuppressWarnings("static-access")
RoleCode[] allRoleCodeArray = RoleCode.CityManager.values();
for (RoleCode roleCode : allRoleCodeArray) {
if(roleString.contains(roleCode.getWeiyima())){
selectRoleList.add(roleCode);
}
}
}
}
return selectRoleList;
}
/**
* 获取用户可以添加的员工角色集合
* @param context
* @return ArrayList<RoleCode>
* 用户可以添加的员工角色集合
*/
public static ArrayList<RoleCode> getUserStaffRolesArray(Context context){
ArrayList<RoleCode> staffCategory = new ArrayList<RoleCode>();
if(null!=context){
OptsharepreInterface sharePre = new OptsharepreInterface(context);
String rolesString = sharePre.getPres("rolesString");
if(!"".equals(rolesString)){
if(rolesString.contains(RoleCode.AdminManager.getWeiyima())){
staffCategory.add(RoleCode.OrgEmployee);
}else if(rolesString.contains(RoleCode.Cooper.getWeiyima())){
staffCategory.add(RoleCode.CooperEmployee);
}else if(rolesString.contains(RoleCode.Repair.getWeiyima())){
staffCategory.add(RoleCode.ReapirEmployee);
}else if(rolesString.contains(RoleCode.Dealer.getWeiyima())){
staffCategory.add(RoleCode.DealerEmployee);
}
}
for (RoleCode roleCode : staffCategory) {
Log.e("getUserStaffRolesArray", roleCode.getName());
}
}
return staffCategory;
}
/**
* 获取用户可以添加的员工角色集合
* @param context
* @return ArrayList<RoleCode>
* 用户可以添加的员工角色集合
*/
public static ArrayList<RoleCode> getUserRolesArray(Context context){
ArrayList<RoleCode> staffCategory = new ArrayList<RoleCode>();
if(null!=context){
OptsharepreInterface sharePre = new OptsharepreInterface(context);
String rolesString = sharePre.getPres("rolesString");
if(!"".equals(rolesString)){
if(rolesString.contains(RoleCode.AdminManager.getWeiyima())){
staffCategory.add(RoleCode.AdminManager);
}else if(rolesString.contains(RoleCode.Cooper.getWeiyima())){
staffCategory.add(RoleCode.Cooper);
}else if(rolesString.contains(RoleCode.Repair.getWeiyima())){
staffCategory.add(RoleCode.Repair);
}else if(rolesString.contains(RoleCode.Dealer.getWeiyima())){
staffCategory.add(RoleCode.Dealer);
}
}
for (RoleCode roleCode : staffCategory) {
Log.e("getUserStaffRolesArray", roleCode.getName());
}
}
return staffCategory;
}
/**
*
* @param context
* @param manager
* 请求接口的管理对象
* @param managerInterface
* 获取到接口的管理对象后返回管理对象的接口
* @param dialogType
* 显示的对话框类型1 :正在定位...2:正在获取天气...3:正在验证账号... 4:正在提交数据...5:正在获取数据... 6:正在验证手机号码...
*/
@SuppressWarnings("hiding")
public static <T> void getData(Context context,Class<?> manager,final TaskInterface taskInterface,int dialogType){
if(new CheckStateInterface(context).checkConnection()){
new BaseTask<T>(context, manager, new TaskInterface() {
@Override
public <T> void taskFinishReturn(T... result) {
taskInterface.taskFinishReturn(result);
}
@Override
public <T> void taskExecuteReturn(T... result) {
taskInterface.taskExecuteReturn(result);
}
},dialogType).execute();
}else{
UIUtil.showMsg(context,Constants.NETWORK_STATE_ERROR);
}
}
/**
* 将登录的用户信息保存到手机上
*
* @param context
* @param userBean
* 登录的用户对象
*/
public static void saveLoginData(Context context,UserBean userBean) {
OptsharepreInterface sharePre = new OptsharepreInterface(context);
MyApp application = (MyApp) context.getApplicationContext();
if(null!=userBean){
sharePre.putPres("guid", userBean.getGuid());
AdminAreaBean xzqh = userBean.getAdminArea() ;
if(null!=xzqh){
sharePre.putPres("province", xzqh.getProvinceName());
sharePre.putPres("provinceCode",
String.valueOf(xzqh.getProvinceCode()));
sharePre.putPres("areacode",
String.valueOf(xzqh.getCode()));
sharePre.putPres("city", xzqh.getCityName());
sharePre.putPres("cityCode",
String.valueOf(xzqh.getCityCode()));
sharePre.putPres("country", xzqh.getCityName());
}
sharePre.putPres("account", userBean.getAccount());
sharePre.putPres("username", userBean.getUserName());
sharePre.putPres("mobileNumber", userBean.getMobileNumber());
sharePre.putPres("role", String.valueOf(userBean.getRole_().getCode()));
String rolesString = sharePre.getPres("rolesString");
String newRolesString = userBean.getRolesString();
/**
* 如果角色标示(rolesString)为空或者之前记录的角色标示和用户的角色标示不一样
* 说明需要获取角色模块数据,设置application的whetherUpdateRolesModule状态是true(表示需要更新角色模块数据)
*/
if("".equals(rolesString)||!rolesString.equals(newRolesString)){
sharePre.putPres("rolesString", null==newRolesString?"":newRolesString);
application.setWhetherUpdateRolesModule(true);
}
/**
* 多角色后用户的角色GUID为用户的GUID+rolesString
*/
sharePre.putPres("roleguid", userBean.getGuid()+userBean.getRolesString());
sharePre.putPres("mark", userBean.getRole().getMark());
sharePre.putPres("level", String.valueOf(userBean.getLevel()));
sharePre.putPres("isPublicInfo",String.valueOf(userBean.getIsPublicInfo()));
sharePre.putPres("state", String.valueOf(userBean.getState().getCode()));// 0未激活,1激活,2关闭
sharePre.putPres("imageURL", userBean.getImagePath());
/**
* 管理员角色,
*/
sharePre.putPres("coRoleStrings", userBean.getCoRoleStrings());
if(userBean.getRole_().getCode() == RoleCode.Driver.getCode() ||userBean.getRolesString().contains(RoleCode.Driver.getWeiyima())){
RegisterUtils.startService(context);
}else{
RegisterUtils.stopService(context);
}
}
}
/**
* 更新任务服务
*/
// public final static String UpPlanServiceName = UpLocationService.class.getName();
/**
* 定时上报服务
*/
// public final static String UpLocServiceName = TimerUpLocationService.class.getName();
/**
* 重传服务
*/
// public final static String RetransServiceName = RetransmissionService.class.getName();
/**
* 更新客户端服务
*/
public final static String UpdateServiceName = UpdateService.class.getName();
/**
* 启动服务(更新任务服务、定时上报服务、重传服务)
* @param context
*/
public static void startService(Context context){
ServiceUtil.startService(context);
}
public static void stopService(Context context2) {
ServiceUtil.stopService(context2);
}
/**
* 检测用户的角色模块数据和用户模块数据是否需要更新
* @param context
*/
public static void getUserModuleData(Context context){
Optdb_interfce db = new Optdb_interfce(context);
db.createTable();// 鉴权成功,创建数据库
db.close_SqlDb();
context.startService(new Intent(context, GetLoginUserDataService.class));
// new CheckModuleVersionTask(context).execute();
}
/**
* 处理登录成功后的操作
* 因为数据较多,所以在线程中处理
* @param context
*/
public static void loginSuccess(final Context context){
new Thread(new Runnable() {
@Override
public void run() {
if (null != context) {
MyApp application = (MyApp) context.getApplicationContext();
// Log.e(TAG, "用户登录"+application.getIsLogin());
if(application.getIsLogin()){
// /**
// * 登录后查询公告通知
// */
// AdminAreaBean xzqh = null;
// if (application.getProvince() != null && application.getProvinceCode() != null) {
// xzqh = new AdminAreaBean();
// xzqh.setCode(UIUtil.tryToLong(application.getProvinceCode()));
// }
// new QueryNewsTask(context, xzqh).execute();
OptsharepreInterface sharePre = new OptsharepreInterface(context);
//记录登录账号,验证码登录使用
UserBean userBean = getLoginUserBean(context);
if(null!=userBean){
sharePre.putPres("account",userBean.getAccount());
//记录登录者的信息
saveLoginData(context, userBean);
// String newRolesString = getLoginUserBean(context).getRolesString();
// sharePre.putPres("rolesString", null==newRolesString?"":newRolesString);
// //设置登陆成功标示
// application.setIsLogin(true);
//发送登录成功广播,更新侧滑菜单页面
Intent intent = new Intent();
intent.setAction("loginSuccess");
context.sendBroadcast(intent);
/**
* 登录成功,需要设置application的isShowDialog为true
* 表示首页显示获取用户模块进度条
*/
// application.setShowDialog(true);
// 鉴权成功,创建数据库
// Optdb_interfce db = new Optdb_interfce(context);
// db.createTable();
// db.close_SqlDb();
// 启动相关服务
// new RegisterUtils().startService(context);
//获取角色模块数据
// context.startService(new Intent(context, GetLoginUserDataService.class));
// new CheckModuleVersionTask(context).execute();
}
}
}
}
}).start();;
}
/**
* 处理登录成功后的操作
* 因为数据较多,所以在线程中处理
* @param context
* @date 20150609
*/
public static void loginSuccessNew(final Context context,final UserBean userBean){
new Thread(new Runnable() {
@Override
public void run() {
if (null != context) {
//记录登录账号,验证码登录使用
if(null!=userBean){
//记录登录者的信息 +启动相关服务
saveLoginData(context, userBean);
//发送登录成功广播,更新侧滑菜单页面
Intent intent = new Intent();
intent.setAction("loginSuccess");
context.sendBroadcast(intent);
/**
* 登录成功,需要设置application的isShowDialog为true
* 表示首页显示获取用户模块进度条
*/
//设置推送的标签
UIUtil.setPushMsgTags(context);
}
}
}
}).start();
}
/**
* 获取当前登陆用户的UserBean
* @param context
* @return UserBean
*/
public static UserBean getLoginUserBean(Context context){
UserBean bean=null;
if(null!=context){
MyApp application = (MyApp) context.getApplicationContext();
ClientContext clientContext = application.getClientContext();
if(null!=clientContext){
try {
clientContext = ClientContext.getClientContext(Constants.SERVER_URL, clientContext.getSessionID());
application.setClientContext(clientContext);
bean = clientContext.getUser();
} catch (LoginException e) {
e.printStackTrace();
}
}
}
return bean;
}
/**
* 打开其他程序 如果手机上没有安装这个程序就弹出下载的提示框
*
* @param context
* @param appName
* 要打开的应用名称(必须在RAW文件夹下面的NJT文件中配置)
*/
public static void startOtherApp(Context context,String appName){
NxwAppVoManager ma = NxwAppVoManager
.getInstance(context);
new CheckAppInstalledTask(context).execute(ma
.getAppByName(appName));
}
private Context context;
public RegisterUtils() {
super();
}
public RegisterUtils(Context context) {
super();
this.context = context;
}
public static final int PHOTO_IMAGE_CODE = 300;
public static final int PHOTOGRAPH = 400;
private File myImageFile;
public File getMyImageFile() {
return myImageFile;
}
/**
* 创建一个 拍照对话框
* 主要包括三个按钮 从手机相册选择、拍照、取消
*
*/
public void takeCameraDialog(final Context context) {
ChosePictureDialog.Builder builder = new ChosePictureDialog.Builder(
context);
builder.setDialogGravity(false);
builder.setChosePictureFromPhoneButton("从手机相册选择",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (PhotoUtil.photos.size() < 1) {
Intent intent1 = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
((Activity)(context)).startActivityForResult(intent1,
PHOTO_IMAGE_CODE);
dialog.dismiss();
}
}
});
builder.setChosePictureFromCameraButton("拍照",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (!RepairUtils.isExistSDCard()) {
UIUtil.showMsg(context, "SD卡不存在,请安装SD后再进行操作");
return;
}
myImageFile = RepairUtils.createFile(new File(""));
if (PhotoUtil.photos.size() < 1) {
Intent intent3 = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
Uri imageUri = Uri.fromFile(myImageFile);
intent3.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
((Activity)(context)).startActivityForResult(intent3, PHOTOGRAPH);
}
dialog.dismiss();
}
});
builder.setChosePictureCancelButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
public static void upLoadImage(Context context,String imagePath){
new UpUserImageTask(context, imagePath).execute();
}
// 根据图片的url得到要显示的图片
public static Bitmap getBitmap(String url) {
Bitmap bm = null;// 生成了一张bmp图像
try {
URL iconurl = new URL(url);
URLConnection conn = iconurl.openConnection();
conn.connect();
// 获得图像的字符流
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, 8192);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();// 关闭流
} catch (Exception e) {
e.printStackTrace();
}
return bm;
}
}