diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ee49eb7a0b..a5c0d1abba 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -150,6 +150,9 @@
+
params = new HashMap<>();
+ String android_id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
+ if (!TextUtils.isEmpty(android_id)) {
+ params.put("ANDROID_ID", android_id);
+ }
+ String imei = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
+ if (!TextUtils.isEmpty(imei)) {
+ params.put("IMEI", imei);
+ }
+ WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ String mac = wm.getConnectionInfo().getMacAddress();
+ if (!TextUtils.isEmpty(mac)) {
+ params.put("MAC", mac);
+ }
+ String mid = StatConfig.getMid(context);
+ if (!TextUtils.isEmpty(mid) || !"0".equals(mid)) {
+ params.put("MTA_ID", mid);
+ }
+ JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(Request.Method.POST,
+ "http://user.ghzhushou.com/v1d0/device/register", new JSONObject(params).toString(),
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+ Utils.log("onResponse = " + response);
+ try {
+ // 保存device_id
+ saveDeviceId(context, response.getString("device_id"));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ Utils.log("onErrorResponse = " + error);
+ }
+ });
+ AppController.addToRequestQueue(request, TokenUtils.class);
+ }
+
+ // 保存用户设备id
+ public static synchronized void saveDeviceId(Context context, String device_id) {
+
+ }
+
+ // 获取用户设备id
+ public static synchronized String getDeviceId(Context context) {
+ return "57ddf9348a3200304f441112";
+ }
+
// 获取用户token
public static synchronized String getToken(Context context) {
SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE,
@@ -30,40 +92,18 @@ public class TokenUtils {
long time = System.currentTimeMillis();
// 判断token是否过期
if (time < expire) {
+ // token未过期
return token;
}
}
-// Map params = DeviceUtils.getDeviceParams(context);
- Map params = new HashMap();
- String url = Config.HOST + "v1d45/token/visit";
-
- //判断是否已登录
- if (sp.getBoolean("isLogin", false)) {
- // 已登录,获取用户名和密码自动登录
- String username = sp.getString("username", null);
- String password = sp.getString("password", null);
- if (username == null || password == null) {
- url = Config.HOST + "v2/token/user?time=" + System.currentTimeMillis();
- params.put("username", username);
- try {
- String s = RSEUtils.encryptByPublic(password + username + System.currentTimeMillis() / 1000);
- Utils.log("加密 = " + s);
- params.put("password", s);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- url = Config.HOST + "v2/token/mobile?time=" + System.currentTimeMillis();
- String mobile = sp.getString("mobile", null);
- params.put("mobile_number", mobile);
- }
- }
-
+ // 重新获取token
+ String url = "http://user.ghzhushou.com/v1d0/login";
+ Map params = new HashMap<>();
+ params.put("device_id", getDeviceId(context));
try {
JSONObject body = new JSONObject(params);
- HttpURLConnection connection = (HttpURLConnection) new URL(url)
- .openConnection();
+ HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setConnectTimeout(5000);
@@ -90,12 +130,15 @@ public class TokenUtils {
}
reader.close();
try {
- JSONObject jsonObject = new JSONObject(builder.toString());
Editor editor = sp.edit();
- editor.putString("token", jsonObject.getString("token"));
+ JSONObject jsonObject = new JSONObject(builder.toString());
+ editor.putString("user_name", jsonObject.getString("name"));
+ editor.putString("user_icon", jsonObject.getString("icon"));
+ jsonObject = jsonObject.getJSONObject("token");
+ editor.putString("token", jsonObject.getString("value"));
editor.putLong("token_expire", jsonObject.getLong("expire"));
editor.apply();
- return jsonObject.getString("token");
+ return jsonObject.getString("value");
} catch (JSONException e) {
e.printStackTrace();
}
@@ -103,7 +146,6 @@ public class TokenUtils {
} catch (IOException e) {
e.printStackTrace();
}
-
return null;
}
diff --git a/app/src/main/java/com/gh/gamecenter/CropImageActivity.java b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java
new file mode 100644
index 0000000000..f9e80da93c
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/CropImageActivity.java
@@ -0,0 +1,97 @@
+package com.gh.gamecenter;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.gh.base.BaseActivity;
+import com.gh.common.util.DialogUtils;
+import com.gh.common.util.DisplayUtils;
+import com.gh.common.util.FileUtils;
+import com.gh.common.util.ImageUtils;
+import com.gh.common.util.TokenUtils;
+import com.gh.common.view.CropImageCustom;
+
+import java.io.File;
+
+public class CropImageActivity extends BaseActivity {
+
+ private CropImageCustom cropimage_custom;
+
+ private Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == 0) {
+ toast("上传成功");
+ } else if (msg.what == 1) {
+ toast("上传失败");
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ View contentView = View.inflate(this, R.layout.activity_cropimage, null);
+
+ init(contentView, "图片裁剪");
+
+ RelativeLayout reuse_actionbar = (RelativeLayout) findViewById(R.id.reuse_actionbar);
+
+ TextView confirm = new TextView(this);
+ confirm.setText("确定");
+ confirm.setTextColor(0xffffffff);
+ confirm.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
+ int padding = DisplayUtils.dip2px(getApplicationContext(), 10);
+ confirm.setPadding(padding, padding, padding, padding);
+ confirm.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final Dialog dialog = DialogUtils.showWaitDialog(
+ CropImageActivity.this, "上传中...");
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ String path = getCacheDir() + File.separator
+ + System.currentTimeMillis() + ".jpg";
+ cropimage_custom.savePicture(path);
+ // 上传图片
+ String url = FileUtils.uploadFile("http://user.ghzhushou.com/v1d0/icon",
+ path, TokenUtils.getToken(CropImageActivity.this));
+ dialog.dismiss();
+ if (url != null) {
+ Intent data = new Intent();
+ data.putExtra("url", url);
+ setResult(RESULT_OK, data);
+ finish();
+ handler.sendEmptyMessage(0);
+ } else {
+ handler.sendEmptyMessage(1);
+ }
+ }
+ }).start();
+ }
+ });
+ RelativeLayout.LayoutParams rparams = new RelativeLayout.LayoutParams(
+ LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+ rparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+ rparams.addRule(RelativeLayout.CENTER_VERTICAL);
+ confirm.setLayoutParams(rparams);
+ reuse_actionbar.addView(confirm);
+
+ String path = getIntent().getStringExtra("path");
+
+ ImageUtils.getInstance(getApplicationContext()).displayFile(
+ "file://" + path, cropimage_custom.getCropImageZoomView());
+
+ }
+
+}
diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java
index 461743182e..de35aceb5e 100644
--- a/app/src/main/java/com/gh/gamecenter/MainActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java
@@ -1358,10 +1358,12 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
- Gson gson = new Gson();
- GameDigestEntity gameDigestEntity = gson.fromJson(
- response.toString(), GameDigestEntity.class);
- concernGame(gameDigestEntity.getId());
+ if (response.length() != 0) {
+ Gson gson = new Gson();
+ GameDigestEntity gameDigestEntity = gson.fromJson(
+ response.toString(), GameDigestEntity.class);
+ concernGame(gameDigestEntity.getId());
+ }
}
}, null);
AppController.addToRequestQueue(request, MainActivity.class);
diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
index 2132c41f0e..e2d18c0650 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java
@@ -1,30 +1,56 @@
package com.gh.gamecenter.personal;
import android.app.Dialog;
-import android.content.DialogInterface;
+import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.net.Uri;
import android.os.Bundle;
+import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
+import android.text.TextUtils;
import android.util.DisplayMetrics;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import android.widget.Toast;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
import com.gh.base.AppController;
+import com.gh.common.constant.Config;
+import com.gh.common.util.DialogUtils;
import com.gh.common.util.DisplayUtils;
+import com.gh.common.util.ImageUtils;
+import com.gh.common.util.TokenUtils;
+import com.gh.common.util.Utils;
+import com.gh.gamecenter.CropImageActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SettingActivity;
import com.gh.gamecenter.eventbus.EBMoveTop;
import com.gh.gamecenter.eventbus.EBSlide;
+import com.gh.gamecenter.volley.extended.JsonObjectExtendedRequest;
+import com.gh.gamecenter.volley.extended.StringExtendedRequest;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
import de.greenrobot.event.EventBus;
@@ -36,6 +62,8 @@ import de.greenrobot.event.EventBus;
*/
public class PersonalFragment extends Fragment implements View.OnClickListener, ViewPager.OnPageChangeListener {
+ private static final int SUCCESS = 0x123;
+ private static final int FAILURE = 0x124;
private View view;
private ViewPager me_vp_show;
@@ -61,6 +89,7 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
private int dis;
private int previous;
+
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -150,6 +179,8 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
previous = 0;
EventBus.getDefault().register(this);
+
+ login();
}
@Override
@@ -252,18 +283,72 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
|| v.getId() == R.id.me_tv_topbar_concern) {
me_vp_show.setCurrentItem(1);
} else if (id == R.id.me_tv_top_name) {
-// showModifyNickNameDialog();
+ showModifyNicknameDialog();
+ } else if (id == R.id.me_iv_top_icon) {
+ Intent intent = new Intent(Intent.ACTION_PICK,
+ MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+ startActivityForResult(intent, 0x123);
}
}
- private void showModifyNickNameDialog() {
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == 0x123 && data != null) {
+ Uri selectedImage = data.getData();
+ String[] filePathColumn = { MediaStore.Images.Media.DATA };
+
+ Cursor cursor = getActivity().getContentResolver().query(selectedImage,
+ filePathColumn, null, null, null);
+ if (cursor == null) {
+ return;
+ }
+ cursor.moveToFirst();
+
+ int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
+ String picturePath = cursor.getString(columnIndex);
+ cursor.close();
+
+ Utils.log("picturePath = " + picturePath);
+ // 上传头像
+ Intent intent = new Intent(getActivity(), CropImageActivity.class);
+ intent.putExtra("path", picturePath);
+ startActivityForResult(intent, 0x124);
+ } else if (requestCode == 0x124 && data != null) {
+ String url = data.getExtras().getString("url");
+ ImageUtils.getInstance(getActivity()).display(url, me_iv_top_icon, R.drawable.user_default_icon);
+ }
+ }
+
+ private void showModifyNicknameDialog() {
final Dialog dialog = new Dialog(getActivity());
View view = View.inflate(getActivity(), R.layout.dialog_modify_nickname, null);
+ final EditText input = (EditText) view.findViewById(R.id.dialog_nickname_input);
+
+ input.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_DONE) {
+ String nickname = input.getText().toString().trim();
+ if (TextUtils.isEmpty(nickname)) {
+ Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
+ return true;
+ }
+ InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+ modifyNickname(nickname);
+ dialog.dismiss();
+ return true;
+ }
+ return false;
+ }
+ });
+
// 取消按钮
- TextView alertdialog_cannel = (TextView) view.findViewById(R.id.alertdialog_cannel);
- alertdialog_cannel.setOnClickListener(new View.OnClickListener() {
+ TextView cancel = (TextView) view.findViewById(R.id.dialog_nickname_cannel);
+ cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
@@ -271,10 +356,18 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
});
// 确定按钮
- TextView alertdialog_confirm = (TextView) view.findViewById(R.id.alertdialog_confirm);
- alertdialog_confirm.setOnClickListener(new View.OnClickListener() {
+ TextView confirm = (TextView) view.findViewById(R.id.dialog_nickname_confirm);
+ confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ String nickname = input.getText().toString().trim();
+ if (TextUtils.isEmpty(nickname)) {
+ Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+ modifyNickname(nickname);
dialog.dismiss();
}
});
@@ -284,6 +377,72 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
dialog.show();
}
+ private void modifyNickname(final String nickname) {
+ final Dialog waitDialog = DialogUtils.showWaitDialog(getActivity(), "修改中...");
+ new Thread(){
+ @Override
+ public void run() {
+ HashMap params = new HashMap<>();
+ params.put("name", nickname);
+ StringExtendedRequest request = new StringExtendedRequest(Request.Method.POST,
+ "http://user.ghzhushou.com/v1d0/name", new JSONObject(params).toString(),
+ new Response.Listener() {
+ @Override
+ public void onResponse(String response) {
+ Utils.log("onResponse = " + response);
+ waitDialog.dismiss();
+ Toast.makeText(getActivity(), "修改成功", Toast.LENGTH_SHORT).show();
+ me_tv_top_name.setText(nickname);
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ Utils.log("onErrorResponse = " + error);
+ waitDialog.dismiss();
+ Toast.makeText(getActivity(), "修改失败", Toast.LENGTH_SHORT).show();
+ }
+ });
+ request.addHeader("TOKEN", TokenUtils.getToken(getActivity()));
+ AppController.addToRequestQueue(request, PersonalFragment.class);
+ }
+ }.start();
+ }
+
+ private void login() {
+ HashMap params = new HashMap<>();
+ params.put("device_id", TokenUtils.getDeviceId(getActivity()));
+ JsonObjectExtendedRequest request = new JsonObjectExtendedRequest(Request.Method.POST,
+ "http://user.ghzhushou.com/v1d0/login", new JSONObject(params).toString(),
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+ try {
+ me_tv_top_name.setText(response.getString("name"));
+ String icon = response.getString("icon");
+ if (!TextUtils.isEmpty(icon)) {
+ ImageUtils.getInstance(getActivity()).display(icon, me_iv_top_icon, R.drawable.user_default_icon);
+ }
+ JSONObject token = response.getJSONObject("token");
+ SharedPreferences sp = getActivity().getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ editor.putString("user_name", response.getString("name"));
+ editor.putString("user_icon", response.getString("icon"));
+ editor.putString("token", token.getString("value"));
+ editor.putLong("token_expire", token.getLong("expire"));
+ editor.apply();
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ Utils.log("onErrorResponse = " + error);
+ }
+ });
+ AppController.addToRequestQueue(request, PersonalFragment.class);
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
diff --git a/app/src/main/res/drawable/dialog_edit_bg.xml b/app/src/main/res/drawable/dialog_edit_bg.xml
new file mode 100644
index 0000000000..8dac581d35
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_edit_bg.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_cropimage.xml b/app/src/main/res/layout/activity_cropimage.xml
new file mode 100644
index 0000000000..6c6eb7e42f
--- /dev/null
+++ b/app/src/main/res/layout/activity_cropimage.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_modify_nickname.xml b/app/src/main/res/layout/dialog_modify_nickname.xml
index ba9d3495b0..7b445c2ff4 100644
--- a/app/src/main/res/layout/dialog_modify_nickname.xml
+++ b/app/src/main/res/layout/dialog_modify_nickname.xml
@@ -20,12 +20,22 @@
android:background="#E5E5E5"/>
+ android:background="@drawable/dialog_edit_bg"
+ android:textColorHint="#9a9a9a"
+ android:maxLength="12"
+ android:padding="8dp"
+ android:singleLine="true"
+ android:imeOptions="actionDone"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:layout_marginLeft="15dp"
+ android:layout_marginRight="15dp"/>
diff --git a/app/src/main/res/layout/home3_fragment.xml b/app/src/main/res/layout/home3_fragment.xml
index d383870b97..6760c16618 100644
--- a/app/src/main/res/layout/home3_fragment.xml
+++ b/app/src/main/res/layout/home3_fragment.xml
@@ -25,7 +25,6 @@
android:id="@+id/me_iv_top_icon"
android:layout_width="100dp"
android:layout_height="100dp"
- android:scaleType="centerCrop"
android:layout_centerHorizontal="true"
android:src="@drawable/user_default_icon"
android:layout_marginTop="55dp"/>