--- /dev/null
+package com.ic.launcher;
+
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.TypedValue;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.core.view.GestureDetectorCompat;
+
+import com.ic.launcher.databinding.ActivityQrCodeBinding;
+import com.ic.launcher.listener.MainClockGestureDetectorImpl;
+import com.ic.launcher.util.IcLog;
+import com.ic.launcher.util.QRCodeUtil;
+import com.ic.launcher.util.SystemUtils;
+
+public class PractiseActivity extends AppCompatActivity implements
+ MainClockGestureDetectorImpl.OnClockGestureFlingListener, View.OnClickListener {
+
+ final static String KeyPractiseState = "persist.sys.practising";
+ final static String ACTION_START_PRACTISE = "com.ic.action_start_practice";
+ final static String KeyPractice = "cmd";
+
+ private GestureDetectorCompat gesture;
+ private boolean practising=false;
+ ImageView imageView;
+ ActivityQrCodeBinding qrCodeBinding;
+ Handler mhandler=new Handler(){
+ @Override
+ public void handleMessage(@NonNull Message msg) {
+
+ switch (msg.what)
+ {
+ case 0:
+ sendAction(false);
+ qrCodeBinding.setQrCodeDrawable(ContextCompat.getDrawable(PractiseActivity.this, R.mipmap.practice));
+ qrCodeBinding.setQrCodeText(PractiseActivity.this.getResources().getString(R.string.app_practise_stoped));
+ break;
+ case 1:
+ sendAction(true);
+ qrCodeBinding.setQrCodeDrawable(ContextCompat.getDrawable(PractiseActivity.this, R.mipmap.practising));
+ qrCodeBinding.setQrCodeText(PractiseActivity.this.getResources().getString(R.string.app_practising));
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+
+ private void sendAction(boolean start){
+
+ Intent intent=new Intent();
+ intent.setAction(ACTION_START_PRACTISE);
+
+ if (start)
+ intent.putExtra(KeyPractice,1);
+ else
+ intent.putExtra(KeyPractice,0);
+
+ this.sendBroadcast(intent);
+ }
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ qrCodeBinding = ActivityQrCodeBinding.inflate(getLayoutInflater());
+ setContentView(qrCodeBinding.getRoot());
+ imageView=this.findViewById(R.id.qr_code_iv);
+ imageView.setOnClickListener(this);
+ String str_practising = getPrefStringPublic(this, KeyPractiseState, "false");
+
+
+ if (str_practising.equals("true")) {
+ practising=true;
+ qrCodeBinding.setQrCodeDrawable(ContextCompat.getDrawable(this, R.mipmap.practising));
+ qrCodeBinding.setQrCodeText(this.getResources().getString(R.string.app_practising));
+ }else{
+ practising=false;
+ qrCodeBinding.setQrCodeDrawable(ContextCompat.getDrawable(this, R.mipmap.practice));
+ qrCodeBinding.setQrCodeText(this.getResources().getString(R.string.app_practise_stoped));
+ }
+
+
+ gesture = new GestureDetectorCompat(this, new MainClockGestureDetectorImpl(this));
+
+ registerCloseSystemReceiver();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unregisterReceiver(systemReceiver);
+ }
+
+ @SuppressLint("WorldReadableFiles")
+ public static String getPrefStringPublic(Context context, String key, String value) {
+ return SystemUtils.getSystemPropertiesString(key,value);
+ }
+
+ private float dpToPx(float dp) {
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
+ }
+
+ @Override
+ public void onDirection(int flag) {
+ if (flag == 2) {
+ finish();
+ }
+ }
+
+ @Override
+ public void onDouble() {
+
+ }
+
+ private void registerCloseSystemReceiver(){
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+ registerReceiver(systemReceiver, filter);
+ }
+
+ private final BroadcastReceiver systemReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
+ String reason = intent.getStringExtra("reason");
+ if ("homekey".equals(reason)) {
+ // 按下HOME健
+ IcLog.i("QrCodeActivity","Home");
+ finish();
+ }
+ }
+ }
+ };
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (gesture.onTouchEvent(event)) {
+
+
+
+
+ return true;
+ }
+ return true;
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ // 禁用 KEYCODE_BACK 退出功能
+ finish();
+ }
+ return true;
+ }
+
+ @Override
+ public void onClick(View view) {
+ practising=!practising;
+ if(practising){
+ mhandler.sendEmptyMessage(1);
+ }else{
+ mhandler.sendEmptyMessage(0);
+ }
+ }
+}