package com.parttime.main; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.media.ExifInterface; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request.Method; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageRequest; import com.android.volley.toolbox.StringRequest; import com.carson.constant.ConstantForSaveList; import com.qingmu.jianzhidaren.R; import com.quark.common.JsonUtil; import com.quark.common.Url; import com.quark.fragment.company.BaseFragment; import com.quark.http.image.CircularImage; import com.quark.http.image.LoadImage; import com.quark.image.UploadImg; import com.quark.model.Function; import com.quark.ui.widget.ActionSheet.OnActionSheetSelected; import com.quark.us.AuthenticationActivity; import com.quark.us.ReputationAuthorityActivity; import com.quark.utils.Util; import com.thirdparty.alipay.RechargeActivity; /** * 商家 功能 * * @author C罗 * */ public class IntroduceFragment extends BaseFragment implements View.OnClickListener, OnActionSheetSelected, OnCancelListener { private static final String TAG = "IntroduceFragment"; private static final int IMAGE_REQUEST_CODE = 0; private static final int CAMERA_REQUEST_CODE = 1; private static final int RESULT_REQUEST_CODE = 2; private static final String IMAGE_FILE_NAME = "faceImage.jpg";// 图片名称 private String uploadAvatarUrl; CircularImage cover_user_photo; private Bitmap userPhotoBmp = null; private SharedPreferences sp; /** * Use this factory method to create a new instance of this fragment using * the provided parameters. * * @param param1 * Parameter 1. * @param param2 * Parameter 2. * @return A new instance of fragment IntroduceFragment. */ public static IntroduceFragment newInstance(String param1, String param2) { IntroduceFragment fragment = new IntroduceFragment(); return fragment; } public IntroduceFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } private View Roster, reputationvalue_com, authdata_layout; private String company_id, url; Function function = new Function(); View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_introduce_company, container, false); sp = getActivity().getSharedPreferences("jrdr.setting", Context.MODE_PRIVATE); company_id = sp.getString("userId", ""); url = Url.COMPANY_function + "?token=" + MainTabActivity.token; uploadAvatarUrl = Url.COMPANY_upload_avatar + "?token=" + MainTabActivity.token; // 初始化界面 // 花名册 // Roster = view.findViewById(R.id.Roster); // initComontView(Roster, R.string.Roster, false); // 资料认证 authdata_layout = view.findViewById(R.id.authdata_layout); initComontView(authdata_layout, R.string.authentication_data, false, 1); // 关于信誉值与诚意金 reputationvalue_com = view.findViewById(R.id.reputationvalue_com); initComontView(reputationvalue_com, R.string.reputationvalue_com, false, 2); Button recharge = (Button) view.findViewById(R.id.recharge); recharge.setOnClickListener(toRechargeListener); return view; } /** * 初次进来先加载本地缓存头像 * */ private void loadNativePhotoFirst() { File mePhotoFold = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image"); if (!mePhotoFold.exists()) { mePhotoFold.mkdirs(); } File picture_1 = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + sp.getString("c" + company_id + "_photo", "a")); if (picture_1.exists()) { // 加载本地图片 // Bitmap bb_bmp = MyResumeActivity.zoomImg(picture_1, 300, 300); Bitmap bb_bmp = BitmapFactory.decodeFile(Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + sp.getString("c" + company_id + "_photo", "a")); if (bb_bmp != null) { cover_user_photo .setImageBitmap(LoadImage.toRoundBitmap(bb_bmp)); } } } /** * 先加载缓存 * */ private void loadHuncunFirst() { TextView textView = (TextView) view.findViewById(R.id.name); textView.setText(sp.getString(company_id + "name", "未知")); ImageView yan_img = (ImageView) view.findViewById(R.id.yan_img); if (sp.getInt(company_id + "status", 0) == 2) { yan_img.setImageResource(R.drawable.my_certified); } else { yan_img.setImageResource(R.drawable.my_unauthorized); yan_img.setOnClickListener(yanzhengOnclick); } TextView money = (TextView) view.findViewById(R.id.money); money.setText(sp.getInt(company_id + "money", 0) + "元"); cover_user_photo = (CircularImage) view .findViewById(R.id.cover_user_photo); if (sp.getString("c" + company_id + "_photo", "") == null || sp.getString("c" + company_id + "_photo", "").equals("")) { cover_user_photo.setImageDrawable(getResources().getDrawable( R.drawable.photo_male)); } else { loadNativePhotoFirst(); } TextView renzheng = (TextView) view.findViewById(R.id.renzheng); if (sp.getInt(company_id + "status", 0) == 2) { renzheng.setText("已认证"); } else { renzheng.setText("未认证"); } } /** * 保存商家信息 */ private void saveInfor() { Editor edt = sp.edit(); edt.putString(company_id + "name", function.getName()); edt.putString("c" + company_id + "realname", function.getName()); edt.putInt(company_id + "status", function.getStatus()); edt.putFloat(company_id + "money", function.getMoney() > 0 ? function.getMoney() : 0); edt.putString("c" + company_id + "_photo", function.getAvatar()); edt.putString(company_id + "_photo", function.getAvatar()); edt.commit(); } /** * 判断本地是否存储了之前的照片 * */ private void checkPhotoExits(String picName, ImageView iv) { File mePhotoFold = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image"); if (!mePhotoFold.exists()) { mePhotoFold.mkdirs(); } File f = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + picName); if (f.exists()) { // Bitmap bb_bmp = MyResumeActivity.zoomImg(f, 300, 300); Bitmap bb_bmp = BitmapFactory.decodeFile(Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + picName); if (bb_bmp != null) { iv.setImageBitmap(LoadImage.toRoundBitmap(bb_bmp)); } else { loadpersonPic(picName, iv, 0); } } else { loadpersonPic(picName, iv, 0); } } /** * @Description: 加载图片 * @author howe * @date 2014-7-30 下午5:57:52 * */ private void loadpersonPic(final String picName, final ImageView imageView, final int isRound) { ImageRequest imgRequest = new ImageRequest(Url.GETPIC + picName, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap arg0) { if (isRound == 1) { } else { imageView.setImageBitmap(arg0); OutputStream output = null; try { File mePhotoFold = new File( Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image"); if (!mePhotoFold.exists()) { mePhotoFold.mkdirs(); } output = new FileOutputStream( Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + picName); arg0.compress(Bitmap.CompressFormat.JPEG, 100, output); output.flush(); output.close(); } catch (Exception e) { e.printStackTrace(); } } } }, 300, 200, Config.ARGB_8888, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { } }); queue.add(imgRequest); imgRequest.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } /** * 获取商家信息 * */ private void initMy() { StringRequest stringRequest = new StringRequest(Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject js = new JSONObject(response); function = (Function) JsonUtil.jsonToBean(js, Function.class); initView(); saveInfor(); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { } }) { @Override protected Map<String, String> getParams() { Map<String, String> map = new HashMap<String, String>(); map.put("company_id", company_id); return map; } }; queue.add(stringRequest); stringRequest.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } @Override public void onDestroyView() { super.onDestroyView(); if (null == userPhotoBmp) { } else { userPhotoBmp.recycle(); userPhotoBmp = null; } } protected void initView() { TextView textView = (TextView) view.findViewById(R.id.name); textView.setText(function.getName()); ImageView yan_img = (ImageView) view.findViewById(R.id.yan_img); if (function.getStatus() == 2) { yan_img.setImageResource(R.drawable.my_certified); } else { yan_img.setImageResource(R.drawable.my_unauthorized); yan_img.setOnClickListener(yanzhengOnclick); } TextView money = (TextView) view.findViewById(R.id.money); money.setText((function.getMoney() > 0 ? function.getMoney() : 0) + "元"); cover_user_photo = (CircularImage) view .findViewById(R.id.cover_user_photo); if (function.getAvatar() == null || function.getAvatar().equals("")) { if (isAdded()) { cover_user_photo.setImageDrawable(getResources().getDrawable( R.drawable.photo_male)); } } else { checkPhotoExits(function.getAvatar(), cover_user_photo); } cover_user_photo.setOnClickListener(chargeOnclick); TextView renzheng = (TextView) view.findViewById(R.id.renzheng); if (function.getStatus() == 2) { renzheng.setText("已认证"); } else { renzheng.setText("未认证"); } } /** * 验证黑户 */ OnClickListener yanzhengOnclick = new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mActivity, AuthenticationActivity.class); startActivity(intent); } }; /** * 修改头像 */ OnClickListener chargeOnclick = new OnClickListener() { @Override public void onClick(View v) { showSheetPic(); } }; OnClickListener toRechargeListener = new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(getActivity(), RechargeActivity.class); startActivity(intent); } }; private void initComontView(View view, int titleId, boolean showNum, int position) { view.setOnClickListener(layoutListener); ((TextView) view.findViewById(R.id.me_title)).setText(titleId); ((Button) view.findViewById(R.id.jobtitlenum)) .setVisibility(showNum ? View.VISIBLE : View.INVISIBLE); ((ImageView) view.findViewById(R.id.me_enter)).setTag(view); ((ImageView) view.findViewById(R.id.me_enter)).setOnClickListener(this); ImageView iconImv = (ImageView) view.findViewById(R.id.left_icon_imv); if (position == 1) { iconImv.setImageResource(R.drawable.my_realname); } else if (position == 2) { iconImv.setImageResource(R.drawable.my_credibility); } } private View.OnClickListener layoutListener = new View.OnClickListener() { @Override public void onClick(View v) { handlerClickIntent(v.getId()); } }; // 响应点击事件 private void handlerClickIntent(int viewId) { Intent intent = null; switch (viewId) { // case R.id.Roster: // intent = new Intent(mActivity, RosterActivity.class); // break; case R.id.authdata_layout: SharedPreferences sp = getActivity().getSharedPreferences( "jrdr.setting", getActivity().MODE_PRIVATE); intent = new Intent(mActivity, AuthenticationActivity.class); break; // 关于信誉值和诚意金 case R.id.reputationvalue_com: intent = new Intent(mActivity, ReputationAuthorityActivity.class); break; } if (null != intent) { startActivity(intent); } } @Override public void onClick(View v) { View parnet = (View) v.getTag(); handlerClickIntent(parnet.getId()); } @Override public void onCancel(DialogInterface dialog) { } @Override public void onClick(int whichButton) { } /** * 读取图片的旋转的角度 * * @param path * 图片绝对路径 * @return 图片的旋转角度 */ private int getBitmapDegree(String path) { int degree = 0; try { // 从指定路径下读取图片,并获取其EXIF信息 ExifInterface exifInterface = new ExifInterface(path); // 获取图片的旋转信息 int orientation = exifInterface.getAttributeInt( ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_90: degree = 90; break; case ExifInterface.ORIENTATION_ROTATE_180: degree = 180; break; case ExifInterface.ORIENTATION_ROTATE_270: degree = 270; break; } } catch (IOException e) { e.printStackTrace(); } return degree; } /** * 将图片按照某个角度进行旋转 * * @param bm * 需要旋转的图片 * @param degree * 旋转角度 * @return 旋转后的图片 */ private Bitmap rotateBitmapByDegree(Bitmap bm, int degree) { Bitmap returnBm = null; // 根据旋转角度,生成旋转矩阵 Matrix matrix = new Matrix(); matrix.postRotate(degree); try { // 将原始图片按照旋转矩阵进行旋转,并得到新的图片 returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); } catch (OutOfMemoryError e) { } if (returnBm == null) { returnBm = bm; } if (bm != returnBm) { bm.recycle(); } return returnBm; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 结果码不等于取消时候 if (resultCode != getActivity().RESULT_CANCELED) { switch (requestCode) { case IMAGE_REQUEST_CODE: if (data.getData() != null) { startPhotoZoom(data.getData(), 300, 300); } else { Toast mToast = Toast.makeText(getActivity(), "获取图片失败。。。", Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } break; case CAMERA_REQUEST_CODE: if (Util.hasSdcard()) { File tempFile = new File( Environment.getExternalStorageDirectory() + "/" + IMAGE_FILE_NAME); // BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inJustDecodeBounds = true; userPhotoBmp = BitmapFactory.decodeFile( Environment.getExternalStorageDirectory() + "/" + IMAGE_FILE_NAME, opt); // 获取到这个图片的原始宽度和高度 int picWidth = opt.outWidth; int picHeight = opt.outHeight; // 获取屏的宽度和高度 WindowManager windowManager = mActivity.getWindowManager(); Display display = windowManager.getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); opt.inSampleSize = 2; if (picWidth > picHeight) { if (picWidth > screenWidth) opt.inSampleSize = picWidth / screenWidth; } else { if (picHeight > screenHeight) opt.inSampleSize = picHeight / screenHeight; } int degree = getBitmapDegree(Environment .getExternalStorageDirectory() + "/" + IMAGE_FILE_NAME); opt.inJustDecodeBounds = false; userPhotoBmp = BitmapFactory.decodeFile( Environment.getExternalStorageDirectory() + "/" + IMAGE_FILE_NAME, opt); userPhotoBmp = rotateBitmapByDegree(userPhotoBmp, degree); Uri tt_uri = null; try { // tt_uri = // Uri.parse(MediaStore.Images.Media.insertImage( // getActivity().getContentResolver(), // Environment.getExternalStorageDirectory() + "/" // + IMAGE_FILE_NAME, null, null)); tt_uri = Uri.parse(MediaStore.Images.Media.insertImage( getActivity().getContentResolver(), userPhotoBmp, null, null)); } catch (Exception e) { e.printStackTrace(); tt_uri = Uri.fromFile(tempFile); } if (tt_uri != null) { startPhotoZoom(tt_uri, 300, 300); } else { Toast mToast = Toast.makeText(getActivity(), "未找到存储卡,无法存储照片!", Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } } else { Toast mToast = Toast.makeText(getActivity(), "未找到存储卡,无法存储照片!", Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } break; case RESULT_REQUEST_CODE: if (data != null) { Toast mToast = Toast.makeText(getActivity(), "正在上传头像,请稍候。", Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); UploadImg.getImageToView(getActivity(), data, cover_user_photo, uploadAvatarUrl, null, null, null, "avatar", null, "company_id", company_id, null, null); } break; } } } // ========头像上传 不可抽取出================== /** * 显示选择对话框 */ public Dialog showSheetPic() { final Dialog dlg = new Dialog(getActivity(), R.style.ActionSheet); LayoutInflater inflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout layout = (LinearLayout) inflater.inflate( R.layout.actionsheet, null); final int cFullFillWidth = 10000; layout.setMinimumWidth(cFullFillWidth); TextView mContent = (TextView) layout.findViewById(R.id.content);// 拍照上传 TextView mCancel = (TextView) layout.findViewById(R.id.cancel); TextView mTitle = (TextView) layout.findViewById(R.id.title);// 相册中选择 // 拍照上传 mContent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intentFromCapture = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); if (Util.hasSdcard()) { File s = Environment.getExternalStorageDirectory(); intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT, Uri .fromFile(new File(Environment .getExternalStorageDirectory(), IMAGE_FILE_NAME))); } else { Toast mToast = Toast.makeText(getActivity(), "未找到存储卡,无法存储照片!", Toast.LENGTH_LONG); mToast.setGravity(Gravity.CENTER, 0, 0); mToast.show(); } startActivityForResult(intentFromCapture, CAMERA_REQUEST_CODE); dlg.dismiss(); } }); mTitle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intentFromGallery = new Intent(); intentFromGallery.setType("image/*"); // 设置文件类型 intentFromGallery.setAction(Intent.ACTION_PICK); startActivityForResult(intentFromGallery, IMAGE_REQUEST_CODE); dlg.dismiss(); } }); mCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dlg.dismiss(); } }); Window w = dlg.getWindow(); WindowManager.LayoutParams lp = w.getAttributes(); lp.x = 0; final int cMakeBottom = -1000; lp.y = cMakeBottom; lp.gravity = Gravity.BOTTOM; dlg.onWindowAttributesChanged(lp); dlg.setCanceledOnTouchOutside(false); dlg.setContentView(layout); dlg.show(); return dlg; } /** * 裁剪图片方法实现 * * @param uri */ public void startPhotoZoom(Uri uri, int x, int y) { ConstantForSaveList.uploadUri = uri;// 暂时存储uri 如htc不能保存uri Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", x); intent.putExtra("aspectY", y); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", x); intent.putExtra("outputY", y); intent.putExtra("noFaceDetection", true);// 取消人脸识别 intent.putExtra("return-data", false); startActivityForResult(intent, RESULT_REQUEST_CODE); } // ========头像上传 不可抽取出end================== @Override public void onResume() { super.onResume(); // 先加载缓存 loadHuncunFirst(); // 更新花名册数字 // 个人信息 initMy(); } }