AddStudentActivity.java
18.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
package com.hjx.parent;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.core.content.FileProvider;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.gson.Gson;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.prws.common.base.BaseActivity;
import com.prws.common.base.BasePresenter;
import com.prws.common.bean.ResponseResult;
import com.prws.common.bean.Teacher;
import com.prws.common.net.NetWorks;
import com.prws.common.utils.LogUtil;
import com.prws.common.utils.ScreenUtils;
import com.prws.common.utils.SharedPreferencesUtil;
import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import okhttp3.ResponseBody;
public class AddStudentActivity extends BaseActivity {
@Override
protected int layoutResId() {
return R.layout.activity_add_stu;
}
@Override
public Object getContract() {
return null;
}
@Override
public BasePresenter getPresenter() {
return null;
}
View view_2;
View view_3;
View view_4;
View view_5;
@BindView(R.id.tv_teacher)
TextView tv_teacher;
@BindView(R.id.rl_teacher)
RelativeLayout rl_teacher;
@BindView(R.id.iv_teacher)
ImageView iv_teacher;
@BindView(R.id.tv_bind)
TextView tv_bind;
Button btn_next;
TextView tv_name, tv_sex, tv_nian, tv_shen;
@BindView(R.id.iv_avatar)
ImageView iv_avatar;
@Override
protected void initView() {
view_2 = findViewById(R.id.view_2);
view_3 = findViewById(R.id.view_3);
view_4 = findViewById(R.id.view_4);
view_5 = findViewById(R.id.view_5);
tv_name = findViewById(R.id.tv_name);
tv_sex = findViewById(R.id.tv_sex);
tv_nian = findViewById(R.id.tv_nian);
tv_shen = findViewById(R.id.tv_shen);
btn_next = findViewById(R.id.btn_next);
}
boolean isName = false;
boolean isSex = false;
boolean isNian = false;
boolean isShen = false;
private static int CAMERA_REQUEST_CODE = 343;
private static int ALBUM_REQUEST_CODE = 456;
private static int CROP_REQUEST_CODE = 234;
private static int BIND_TEACHER_CODE = 345;
private File tempFile;
private String path;
private Teacher teacher;
@Override
protected void onStart() {
super.onStart();
String name = (String) SharedPreferencesUtil.getData("setName", "");
String sex = (String) SharedPreferencesUtil.getData("setSex", "");
String nian = (String) SharedPreferencesUtil.getData("setNian", "") + SharedPreferencesUtil.getData("setXueq", "");
String shen = (String) SharedPreferencesUtil.getData("setShen", "");
if (name != null && name.length() > 0) {
tv_name.setText(name);
isName = true;
} else {
isName = false;
}
if (sex != null && sex.length() > 0) {
tv_sex.setText(sex);
isSex = true;
} else {
isSex = false;
}
if (nian != null && nian.length() > 0) {
tv_nian.setText(nian);
isNian = true;
} else {
isNian = false;
}
if (shen != null && shen.length() > 0) {
tv_shen.setText(shen);
isShen = true;
} else {
isShen = false;
}
if (isName && isSex && isNian && isShen) {
btn_next.setTextColor(Color.WHITE);
btn_next.setBackground(getResources().getDrawable(R.drawable.bg_solid_btn));
}
}
@Override
protected void initListener() {
view_2.setOnClickListener(view -> startActivity(NickActivity.class));
view_3.setOnClickListener(view -> startActivity(SexActivity.class));
view_4.setOnClickListener(view -> startActivity(NianActivity.class));
view_5.setOnClickListener(view -> startActivity(ShenActivity.class));
findViewById(R.id.tv_cancel).setOnClickListener(view -> onBackPressed());
btn_next.setOnClickListener(view -> {
if (isName && isSex && isNian && isShen) {
if (teacher != null) {
addStudent();
} else {
showDialog("温馨提示", "您还未绑定老师,是否绑定?", "去绑定", "暂不绑定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
showDialog("温馨提示", "您暂未绑定老师,如需绑定老师\n" + "请联系400-800-3813", "确定", "", null, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
addStudent();
}
});
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(AddStudentActivity.this, AddTeacherActivity.class);
startActivityForResult(intent, BIND_TEACHER_CODE);
}
});
}
} else {
Toast.makeText(this, "请完成设置后点击", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferencesUtil.putData("setName", "");
SharedPreferencesUtil.putData("setSex", "");
SharedPreferencesUtil.putData("setNian", "");
SharedPreferencesUtil.putData("setShen", "");
SharedPreferencesUtil.putData("setXueq", "");
SharedPreferencesUtil.putData("grade", 0);
}
public void addStudent() {
String name = (String) SharedPreferencesUtil.getData("setName", "");
String sex = (String) SharedPreferencesUtil.getData("setSex", "");
String nian = (String) SharedPreferencesUtil.getData("setNian", "");
String shen = (String) SharedPreferencesUtil.getData("setShen", "");
String xueq = (String) SharedPreferencesUtil.getData("setXueq", "");
Map map = new HashMap();
map.put("nickName", name);
map.put("gender", "男".equals(sex) ? 0 : 1);
map.put("gradeId", SharedPreferencesUtil.getData("grade", 1));
map.put("parentIdentity", shen);
map.put("term", xueq);
if (teacher != null)
map.put("userId", teacher.getId());
if (path != null) {
map.put("photo", path);
}
NetWorks.registerStudent(NetWorks.getMapRequestBody(map), new Observer<ResponseBody>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseBody responseBody) {
try {
String str = responseBody.string().toString();
LogUtil.e(TAG, "----" + str);
JSONObject jo = new JSONObject(str);
boolean isSucceed = jo.getBoolean("success");
if (isSucceed) {
finish();
} else {
Toast.makeText(AddStudentActivity.this, jo.getString("msg"), Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(AddStudentActivity.this, "服务繁忙,请重试", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
@Override
protected void initData() {
}
@Override
public void onNetChanged(int netWorkState) {
}
@OnClick(R.id.iv_avatar)
public void showButtonDialog(View view) {
BottomSheetDialog dialog = new BottomSheetDialog(this, R.style.BottomSheetDialog);
View bottomView = LayoutInflater.from(this).inflate(R.layout.bottom_sheet_layout, null);
dialog.setContentView(bottomView);
bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
if (!XXPermissions.isGranted(AddStudentActivity.this, Permission.CAMERA)) {
XXPermissions.with(AddStudentActivity.this)
// 申请多个权限
.permission(Permission.CAMERA)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
if (all) {
//开启扫码界面
getPicFromCamera();
} else {
Toast.makeText(AddStudentActivity.this, "需要相机权限", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onDenied(List<String> permissions, boolean never) {
XXPermissions.startPermissionActivity(AddStudentActivity.this, permissions);
}
});
} else {
getPicFromCamera();
}
}
});
bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
getPicFromAlbm();
}
});
bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}
private void cropPhoto(Uri uri) {
Uri contentUri = Uri.fromFile(new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg"));
Intent intent = new Intent("com.android.camera.action.CROP");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//Android 7.0需要临时添加读取Url的权限, 添加此属性是为了解决:调用裁剪框时候提示:图片无法加载或者加载图片失败或者无法加载此图片
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");//发送裁剪信号,去掉也能进行裁剪
intent.putExtra("scale", true);// 设置缩放
intent.putExtra("scaleUpIfNeeded", true);// 去黑边
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//上述两个属性控制裁剪框的缩放比例。
//当用户用手拉伸裁剪框时候,裁剪框会按照上述比例缩放。
intent.putExtra("outputX", 300);//属性控制裁剪完毕,保存的图片的大小格式。
intent.putExtra("outputY", 300);//你按照1:1的比例来裁剪的,如果最后成像是800*400,那么按照2:1的样式保存,
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//输出裁剪文件的格式
intent.putExtra("return-data", true);//是否返回裁剪后图片的Bitmap
intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);//设置输出路径
startActivityForResult(intent, CROP_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == CAMERA_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
//用相机返回的照片去调用剪裁也需要对Uri进行处理
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri contentUri = FileProvider.getUriForFile(AddStudentActivity.this,
this.getPackageName() + ".fileprovider", tempFile);
cropPhoto(contentUri);
} else {
cropPhoto(Uri.fromFile(tempFile));
}
}
} else if (requestCode == ALBUM_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Uri uri = intent.getData();
cropPhoto(uri);
}
} else if (requestCode == CROP_REQUEST_CODE) {
if (intent == null) {
return;
}
Bundle bundle = intent.getExtras();
if (bundle != null) {
//在这里获得了剪裁后的Bitmap对象,可以用于上传
Bitmap image = bundle.getParcelable("data");
//设置到ImageView上
//也可以进行一些保存、压缩等操作后上传
File file = saveImage("head_output", image);
uploadAvatar(file);
}
} else if (requestCode == BIND_TEACHER_CODE && resultCode == 1000) {
String t = intent.getStringExtra("teacher");
teacher = new Gson().fromJson(t, Teacher.class);
rl_teacher.setVisibility(View.VISIBLE);
tv_bind.setText("重新绑定");
tv_teacher.setText(teacher.getUserName());
if (!TextUtils.isEmpty(teacher.getPhoto())) {
RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(AddStudentActivity.this, 20));
RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
Glide.with(AddStudentActivity.this).load(teacher.getPhoto()).apply(options).into(iv_teacher);
}
}
}
private void uploadAvatar(File file) {
NetWorks.uploadAvatar(file, new Observer<ResponseResult<Map<String, String>>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseResult<Map<String, String>> responseBody) {
if (responseBody.getData() != null && responseBody.getCode() == 200) {
path = responseBody.getData().get("imageUrl");
RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(AddStudentActivity.this, 45));
RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
Glide.with(AddStudentActivity.this).load(path).apply(options).into(iv_avatar);
}
}
@Override
public void onError(Throwable e) {
e.toString();
}
@Override
public void onComplete() {
}
});
}
public File saveImage(String name, Bitmap bmp) {
File appDir = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath());
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = name + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
return file;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private void getPicFromCamera() {
//用于保存调用相机拍照后所生成的文件
tempFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg");
//跳转到调用系统相机
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//判断版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //如果在Android7.0以上,使用FileProvider获取Uri
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(AddStudentActivity.this,
this.getPackageName() + ".fileprovider", tempFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);
} else { //否则使用Uri.fromFile(file)方法获取Uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
}
startActivityForResult(intent, CAMERA_REQUEST_CODE);
}
/**
* 从相册获取图片
*/
private void getPicFromAlbm() {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, ALBUM_REQUEST_CODE);
}
@OnClick(R.id.view_6)
public void toAddTeacher(View view) {
Intent intent = new Intent(AddStudentActivity.this, AddTeacherActivity.class);
startActivityForResult(intent, BIND_TEACHER_CODE);
}
}