diff --git a/students/com1714080901106/app/src/main/AndroidManifest.xml b/students/com1714080901106/app/src/main/AndroidManifest.xml index d29abf573..346679249 100644 --- a/students/com1714080901106/app/src/main/AndroidManifest.xml +++ b/students/com1714080901106/app/src/main/AndroidManifest.xml @@ -2,7 +2,16 @@ + + + + + + + + + - + android:label="@string/app_name"> + + + + + \ No newline at end of file diff --git a/students/com1714080901106/app/src/main/java/edu/hzuapps/androidlabs/com1714080901106/Activity_Login.java b/students/com1714080901106/app/src/main/java/edu/hzuapps/androidlabs/com1714080901106/Activity_Login.java index 379c8eaa4..d2914d7b2 100644 --- a/students/com1714080901106/app/src/main/java/edu/hzuapps/androidlabs/com1714080901106/Activity_Login.java +++ b/students/com1714080901106/app/src/main/java/edu/hzuapps/androidlabs/com1714080901106/Activity_Login.java @@ -1,44 +1,51 @@ package edu.hzuapps.androidlabs.com1714080901106; +import android.Manifest; +import android.content.ContentUris; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; -import android.os.Build; +import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.support.annotation.RequiresApi; +import android.os.Environment; +import android.provider.DocumentsContract; +import android.provider.MediaStore; import android.support.constraint.ConstraintLayout; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.FileProvider; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; -import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; -import android.widget.LinearLayout; import android.widget.Toast; -import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import edu.hzuapps.androidlabs.com1714080901106.R; public class Activity_Login extends AppCompatActivity { - private EditText username; - private EditText password; - private Button login; - private Button register; - private Button dl_image; - private String name; - private String word; - private ConstraintLayout layout; + private EditText username;//用户名文本框 + private EditText password;//密码文本框 + private Button login;//登录按钮 + private Button register;//注册按钮 + private Button dl_image;//下载图片按钮 + private Button take_photo;//拍照按钮 + private Button choose_photo;//选择照片 + private String name;//用户名 + private String word;//密码 + private ConstraintLayout layout;//主界面 + private Uri imageUri;//图片路径 + static final int TAKE_PHOTO = 1;//拍照请求 + static final int CHOOSE_PHOTO = 2;//选择照片请求 @Override protected void onCreate(Bundle savedInstanceState) { @@ -50,6 +57,8 @@ protected void onCreate(Bundle savedInstanceState) { login = findViewById(R.id.login); register = findViewById(R.id.register); dl_image = findViewById(R.id.download_image); + take_photo = findViewById(R.id.take_photos); + choose_photo = findViewById(R.id.choose_image); layout = findViewById(R.id.background); login.setOnClickListener(new View.OnClickListener() {//登录 @@ -90,10 +99,94 @@ public void onClick(View v) { @Override public void onClick(View v) { showImage(); + Toast.makeText(Activity_Login.this, "加载成功!", Toast.LENGTH_LONG).show(); + } + }); + + take_photo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + File outputImage = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "photo.jpg"); + try {//初始化图片 + if (outputImage.exists()) { + outputImage.delete(); + } + outputImage.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + imageUri = (Uri) FileProvider.getUriForFile(Activity_Login.this, getPackageName() + ".fileprovider", outputImage); + Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); + intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); + startActivityForResult(intent, TAKE_PHOTO);//打开相机 + } + }); + + choose_photo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent("android.intent.action.GET_CONTENT"); + intent.setType("image/*"); + startActivityForResult(intent, CHOOSE_PHOTO);//打开相册 } }); } + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == CHOOSE_PHOTO && resultCode == RESULT_OK) + handleImageOnKitKat(data); + } + + private void handleImageOnKitKat(Intent data) { + String imagePath = null; + Uri uri = data.getData();//获取路径 + if (DocumentsContract.isDocumentUri(this, uri)) { + String docId = DocumentsContract.getDocumentId(uri); + if ("com.android.providers.media.documents".equals( + uri.getAuthority())) { + String id = docId.split(":")[1]; + String selection = MediaStore.Images.Media._ID + "=" + id; + imagePath = getImagePath( + MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection); + } else if ("com.android.providers.downloads.documents".equals( + uri.getAuthority())) { + Uri contentUri = ContentUris.withAppendedId( + Uri.parse("content://downloads/public_downloads"), + Long.valueOf(docId)); + imagePath = getImagePath(contentUri, null); + } + } else if ("content".equalsIgnoreCase(uri.getScheme())) { + imagePath = getImagePath(uri, null); + } + displayImage(imagePath);//设置背景图片 + } + + private String getImagePath(Uri uri, String selection) {//获取照片路径 + String path = null; + Cursor cursor = getContentResolver().query(uri, null, selection, null, null); + if (cursor != null) { + if (cursor.moveToFirst()) { + path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); + } + cursor.close(); + } + return path; + } + + private void displayImage(String imagePath) {//将照片设置为背景图片 + //获取运行时权限 + if (ActivityCompat.checkSelfPermission(Activity_Login.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(Activity_Login.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1); + } + + if (imagePath != null) { + Bitmap bitmap = BitmapFactory.decodeFile(imagePath); + layout.setBackground(new BitmapDrawable(getResources(), bitmap)); + } else { + Toast.makeText(this, "failed to get image", Toast.LENGTH_SHORT).show(); + } + } + private void showImage() { new Thread(new Runnable() { @Override @@ -127,6 +220,7 @@ private void show_image(final Bitmap bitmap) { @Override public void run() { layout.setBackground(new BitmapDrawable(getResources(), bitmap)); + } }); } diff --git a/students/com1714080901106/app/src/main/res/layout/login.xml b/students/com1714080901106/app/src/main/res/layout/login.xml index 68ed26b70..fae40b802 100644 --- a/students/com1714080901106/app/src/main/res/layout/login.xml +++ b/students/com1714080901106/app/src/main/res/layout/login.xml @@ -17,13 +17,15 @@ android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0"> + android:orientation="horizontal" /> + android:orientation="vertical" + android:gravity="bottom">