更新扫码功能,教师端点击二维码可以全屏展示,教师端长按二维码可以分享到QQ/微信等其他软件

master
呗 呗 3 years ago
parent d143081efc
commit 81ba7cb270

@ -95,6 +95,7 @@
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_location_poi.xml" value="0.21472663139329806" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_location_poi.xml" value="0.21472663139329806" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_my_info_record.xml" value="0.25364583333333335" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_my_info_record.xml" value="0.25364583333333335" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/content_home_activity_stu.xml" value="0.17346014492753623" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/content_home_activity_stu.xml" value="0.17346014492753623" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/dialog_image.xml" value="0.25364583333333335" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/dialog_input.xml" value="0.25364583333333335" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/dialog_input.xml" value="0.25364583333333335" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_class_list.xml" value="0.25364583333333335" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_class_list.xml" value="0.25364583333333335" />
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_class_list.xml" value="0.25364583333333335" /> <entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_class_list.xml" value="0.25364583333333335" />

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.example.stlink.R; import com.example.stlink.R;
import com.example.stlink.activitys.ScanQRCodeActivity;
import com.example.stlink.configs.adapter.StuCourseSignedAdapter; import com.example.stlink.configs.adapter.StuCourseSignedAdapter;
import com.example.stlink.model.constants.ModelFieldConstants; import com.example.stlink.model.constants.ModelFieldConstants;
import com.example.stlink.model.constants.UrlConstants; import com.example.stlink.model.constants.UrlConstants;
@ -261,9 +260,7 @@ public class CourseSignIn extends AppCompatActivity {
* @param stuSignRequest * @param stuSignRequest
*/ */
private void signIn(StuSignRequest stuSignRequest){ private void signIn(StuSignRequest stuSignRequest){
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
System.out.println( "CourseSignIn:stuSignRequest : " + stuSignRequest.toString()); System.out.println( "CourseSignIn:stuSignRequest : " + stuSignRequest.toString());
String json = JSON.toJSONString(stuSignRequest); String json = JSON.toJSONString(stuSignRequest);
String url = UrlConstants.STUDENT_SIGN; String url = UrlConstants.STUDENT_SIGN;
@ -283,7 +280,6 @@ public class CourseSignIn extends AppCompatActivity {
signHandler.sendMessage(message); signHandler.sendMessage(message);
} }
}.postConnect(url, json); }.postConnect(url, json);
}
}).start(); }).start();
} }
@ -303,9 +299,7 @@ public class CourseSignIn extends AppCompatActivity {
try{ try{
signCode = Integer.parseInt(signCodeStr); signCode = Integer.parseInt(signCodeStr);
stuSignRequest.setSignCode(signCode); stuSignRequest.setSignCode(signCode);
signHandler = new Handler(new Handler.Callback() { signHandler = new Handler(msg -> {
@Override
public boolean handleMessage(@NonNull Message msg) {
if(msg.arg1 == -1){ if(msg.arg1 == -1){
String errorMsg = (String) msg.obj; String errorMsg = (String) msg.obj;
Toast.makeText(CourseSignIn.this, errorMsg, Toast.LENGTH_SHORT).show(); Toast.makeText(CourseSignIn.this, errorMsg, Toast.LENGTH_SHORT).show();
@ -325,7 +319,6 @@ public class CourseSignIn extends AppCompatActivity {
getHasSignedList(); getHasSignedList();
} }
return false; return false;
}
}); });
signIn(stuSignRequest); signIn(stuSignRequest);
}catch ( NumberFormatException numberFormatException){ }catch ( NumberFormatException numberFormatException){

@ -1,21 +1,38 @@
package com.example.stlink.activitys.fragmentChild.activityTeaHome; package com.example.stlink.activitys.fragmentChild.activityTeaHome;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.provider.MediaStore;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.example.stlink.BuildConfig;
import com.example.stlink.R; import com.example.stlink.R;
import com.example.stlink.activitys.fragmentChild.activityStuClassList.CourseSignIn;
import com.example.stlink.fragments.DidNotSignListFragment; import com.example.stlink.fragments.DidNotSignListFragment;
import com.example.stlink.fragments.LeaveListFragment; import com.example.stlink.fragments.LeaveListFragment;
import com.example.stlink.fragments.SignListFragment; import com.example.stlink.fragments.SignListFragment;
@ -32,6 +49,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.internal.LinkedTreeMap; import com.google.gson.internal.LinkedTreeMap;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -55,6 +73,11 @@ public class CheckCourseSign extends AppCompatActivity {
private Bundle bundle; private Bundle bundle;
private Handler handler; private Handler handler;
private Handler shareImageHandler;
private static ActivityResultLauncher<Intent> intentActivityResultLauncher;
Dialog dialog;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -67,6 +90,7 @@ public class CheckCourseSign extends AppCompatActivity {
private void initView(){ private void initView(){
CommonUtils.changeStatusBar(CheckCourseSign.this); CommonUtils.changeStatusBar(CheckCourseSign.this);
ivCode = findViewById(R.id.iv_code); ivCode = findViewById(R.id.iv_code);
abIvTitle = findViewById(R.id.ab_iv_title); abIvTitle = findViewById(R.id.ab_iv_title);
aTvCourseName = findViewById(R.id.ab_tv_course_name); aTvCourseName = findViewById(R.id.ab_tv_course_name);
@ -78,22 +102,42 @@ public class CheckCourseSign extends AppCompatActivity {
checkCourseSignUtil = new CheckCourseSignUtil(this.getWindow().getDecorView(),CheckCourseSign.this); checkCourseSignUtil = new CheckCourseSignUtil(this.getWindow().getDecorView(),CheckCourseSign.this);
dialog = new Dialog(this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
setClickListener(); setClickListener();
refreshData(); refreshData();
handler = new Handler(new Handler.Callback() { handler = new Handler(msg -> {
@Override
public boolean handleMessage(@NonNull Message msg) {
if(msg.arg1 == 200){ if(msg.arg1 == 200){
aTvCourseName.setText(courseSignMsg.getCourseName()); aTvCourseName.setText(courseSignMsg.getCourseName());
tvCourseStuAmountMsg.setText(String.valueOf(courseSignMsg.getCourseNum())); tvCourseStuAmountMsg.setText(String.valueOf(courseSignMsg.getCourseNum()));
} }
return false; return false;
}
}); });
getCourseSignMsg(); getCourseSignMsg();
shareImageHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
if(msg.arg1 == 200){
Intent shareIntent = (Intent) msg.obj;
System.out.println("Here...............shareImageHandler.....");
startActivity(Intent.createChooser(shareIntent, "分享图片"));
}
return false;
}
});
// 意图函数加载器
intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Intent data = result.getData();
int resultCode = result.getResultCode();
System.out.println("registerForActivityResult...........................");
if (resultCode == Activity.RESULT_OK) {
System.out.println("图片分享成功。。。。");
}
});
} }
private void refreshData(){ private void refreshData(){
@ -117,11 +161,28 @@ public class CheckCourseSign extends AppCompatActivity {
} }
private void setClickListener(){ private void setClickListener(){
abIvTitle.setOnClickListener(new View.OnClickListener() { abIvTitle.setOnClickListener(v -> finish());
@Override ivCode.setOnClickListener(v -> {
public void onClick(View v) { ivCode.setVisibility(View.INVISIBLE);
finish(); View view = LayoutInflater.from(CheckCourseSign.this).inflate(R.layout.dialog_image, null);
} ImageView ivCodeBig = view.findViewById(R.id.iv_code_big);
ivCodeBig.setImageDrawable(ivCode.getDrawable());
dialog.setContentView(view);
dialog.show();
ivCodeBig.setOnClickListener(v1 -> {
dialog.dismiss();
ivCode.setVisibility(View.VISIBLE);
});
ivCodeBig.setOnLongClickListener(v12 -> {
Toast.makeText(CheckCourseSign.this, "长按", Toast.LENGTH_SHORT).show();
shareImage();
return true;
});
});
ivCode.setOnLongClickListener(v -> {
Toast.makeText(CheckCourseSign.this, "长按", Toast.LENGTH_SHORT).show();
shareImage();
return true;
}); });
} }
@ -182,4 +243,39 @@ public class CheckCourseSign extends AppCompatActivity {
} }
}).start(); }).start();
} }
/**
*
*/
private void shareImage(){
new Thread(() -> {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*"); //设置分享内容的类型
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), getBitmap(ivCode.getDrawable()), null,null));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
Message message = new Message();
message.arg1 = 200;
message.obj = shareIntent;
shareImageHandler.sendMessage(message);
}).start();
}
/**
* drawableBitMap
* @param drawable ImageView
* @return BitMap
*/
private Bitmap getBitmap(Drawable drawable) {
Bitmap bitmap = Bitmap.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
//canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}
} }

@ -189,9 +189,7 @@ public class UserInfoFragment extends Fragment {
} }
private static void shareApk(){ private static void shareApk(){
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
PackageManager mPackageManager = mAppCompatActivity.getPackageManager(); PackageManager mPackageManager = mAppCompatActivity.getPackageManager();
List<PackageInfo> packageInfoList = mPackageManager.getInstalledPackages(0); List<PackageInfo> packageInfoList = mPackageManager.getInstalledPackages(0);
System.out.println("UserInfoFragment:PackageInfo : " + packageInfoList); System.out.println("UserInfoFragment:PackageInfo : " + packageInfoList);
@ -224,7 +222,6 @@ public class UserInfoFragment extends Fragment {
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
} }
}
}).start(); }).start();
} }
} }

@ -159,7 +159,7 @@
app:layout_constraintTop_toTopOf="@id/ll_course_info_msg" app:layout_constraintTop_toTopOf="@id/ll_course_info_msg"
app:layout_constraintBottom_toBottomOf="@id/ll_course_info_msg" app:layout_constraintBottom_toBottomOf="@id/ll_course_info_msg"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="10dp" android:layout_marginEnd="30dp"
/> />

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/iv_code_big"
android:layout_width="300dp"
android:layout_height="300dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save