diff --git a/app/build.gradle b/app/build.gradle index 0146823d1110c3b3bb25a6e07802727b94783785..8e3e5c3d321f908a9ab6b50ad6d08e9979c0aa1a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,6 +73,7 @@ dependencies { implementation 'com.github.bumptech.glide:glide:4.13.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.14.0' implementation 'com.hyman:flowlayout-lib:1.1.2' + implementation 'com.github.Petterpx:FloatingX:1.3.1' implementation 'com.android.support:design:28.0.0' implementation 'com.github.Justson.AgentWeb:agentweb-core:v5.0.6-androidx' implementation project(':cloudphone') diff --git a/app/src/main/java/com/huawei/cloudapp/common/CasState.java b/app/src/main/java/com/huawei/cloudapp/common/CasState.java index 2503e76b518a92719bfd8a4bd2e3f0a71cdd717e..80cacb411c4885d3803a371fcfa10d7907dcb52c 100644 --- a/app/src/main/java/com/huawei/cloudapp/common/CasState.java +++ b/app/src/main/java/com/huawei/cloudapp/common/CasState.java @@ -31,6 +31,7 @@ public class CasState { static public final int CAS_VERIFY_AESKEY_INVALID = 0x0604; static public final int CAS_VERIFY_DECRYPT_FAILED = 0x0605; static public final int CAS_VERIFY_FAILED = 0x0606; + static public final int CAS_VERIFY_SESSION_ID_INVALID = 0x0607; static public final int CAS_START_SUCCESS = 0x0800; static public final int CAS_PARAMETER_MISSING = 0x0904; diff --git a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java index 69c06aaaa363a7f84c45cf21f4ae23bc1289a160..e33eb1669f9410bd0829652d181cbd0543322c1b 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java @@ -37,11 +37,11 @@ import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RelativeLayout; +import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; @@ -66,6 +66,8 @@ import com.huawei.cloudphone.api.CloudPhoneVirtualDevDataListener; import com.huawei.cloudphone.api.ICloudPhone; import com.huawei.cloudphone.virtualdevice.VirtualDeviceSession; import com.huawei.cloudphone.virtualdevice.common.RingBufferVirtualDeviceIO; +import com.petterp.floatingx.assist.FxGravity; +import com.petterp.floatingx.assist.helper.ScopeHelper; import java.util.HashMap; @@ -145,11 +147,10 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl // debug info private boolean isShowingLagInfoView; - private TextView lag; - private Button lagSwitch; + private Switch lagSwitch; private TextView textCtrl; private RelativeLayout ctrView; - private Button mQuitCloudPhone; + private TextView mQuitCloudPhone; // intent trans value private CasConnectInfo connectInfo; @@ -259,14 +260,11 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl mProgressBar = findViewById(R.id.loading_progress_bar); mFrameLayout = (FrameLayout) findViewById(R.id.frame_layout); mFloatContainer = (FrameLayout) findViewById(R.id.floatContainer); - lag = (TextView) findViewById(R.id.lag); - lagSwitch = (Button) findViewById(R.id.lag_switch); + lagSwitch = (Switch) findViewById(R.id.lag_switch); lagSwitch.setOnClickListener(CasCloudPhoneActivity.this); - textCtrl = (TextView) findViewById(R.id.tv_ctrl); - textCtrl.setOnClickListener(CasCloudPhoneActivity.this); ctrView = (RelativeLayout) findViewById(R.id.ctr_view); ctrView.setOnClickListener(CasCloudPhoneActivity.this); - mQuitCloudPhone = (Button) findViewById(R.id.quit_cloud_phone); + mQuitCloudPhone = (TextView) findViewById(R.id.quit_cloud_phone); mQuitCloudPhone.setOnClickListener(CasCloudPhoneActivity.this); // ctrlView qualityRadioViewGroup = findViewById(R.id.pic_quality_choose_layout); @@ -277,8 +275,20 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl qualityRadioViewGroup.check(radioViewMain.getId()); qualityRadioViewGroup.setOnCheckedChangeListener(qualityCheckedChangeListener); + float dp = getResources().getDisplayMetrics().density; + ScopeHelper.builder().setLayout(R.layout.cas_ctrl_button_view). + setEnableEdgeAdsorption(true). + setEdgeOffset(10f). + setEnableScrollOutsideScreen(true). + setGravity(FxGravity.LEFT_OR_TOP). + setEnableAssistDirection(150 * dp, 0f, 0f, 0f). + build().toControl(this).show(); + textCtrl = (TextView) findViewById(R.id.tv_ctrl); + textCtrl.setOnClickListener(CasCloudPhoneActivity.this); + textCtrl.setBackgroundResource(R.drawable.button_sub_action_selector); + setRotation(mOrientation); - isShowingLagInfoView = true; + lagSwitch.setChecked(false); gAcitivity = this; try { mCloudPhone = CloudPhoneManager.createCloudPhoneInstance(); @@ -442,7 +452,6 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl CASLog.i(TAG, "processStateChangeMsg code = " + code); switch (code) { case CasState.CAS_START_SUCCESS: - lag.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); startSuccessThreadTask(); handleStartSuccessMsg(msg); @@ -474,6 +483,9 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl case CasState.CAS_VERIFY_FAILED: showDialog(getResources().getString(R.string.cas_phone_start_auth_fail_tip_message)); break; + case CasState.CAS_VERIFY_SESSION_ID_INVALID: + showDialog(getResources().getString(R.string.cas_phone_session_invalid_tip_message)); + break; case CasState.CAS_TRAIL_PLAY_TIMEOUT: mIsTrailPlayTimeout = true; if (!mIsActivityBackground) { @@ -551,7 +563,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl if (Build.VERSION.SDK_INT >= 28) { // Adapt by setting parameters - params.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER; + params.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; } else { CasAdaptPhoneUtils.getInstance().adaptPhoneNotch(this, params); } @@ -595,14 +607,11 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl /** * update lag info view state */ - public void updateLagInfoViewState() { - isShowingLagInfoView = !isShowingLagInfoView; - if (isShowingLagInfoView) { - lag.setVisibility(View.VISIBLE); - lagSwitch.setText(R.string.cas_close_lag_view); - } else { - lag.setVisibility(View.INVISIBLE); - lagSwitch.setText(R.string.cas_show_lag_view); + public void updateLagInfoViewState(Boolean isChecked) { + isShowingLagInfoView = isChecked; + if (!isShowingLagInfoView) { + textCtrl.setText("CTRL"); + textCtrl.setTextColor(getResources().getColor(R.color.black)); } } @@ -715,8 +724,8 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl builder.setTitle(R.string.cas_phone_quit_app_tip_message); builder.setContentView(contentView); - builder.setPositiveButton("取消", dialogListener); - builder.setNegativeButton("退出", new DialogInterface.OnClickListener() { + builder.setPositiveButton(getResources().getString(R.string.cas_phone_cancel_tip_message), dialogListener); + builder.setNegativeButton(getResources().getString(R.string.cas_phone_quit_app_tip_message), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { CASLog.i(TAG, "showUiLevelDialog stopCloudPhone"); @@ -737,7 +746,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl CasCommonDialog.DialogClickListener dialogListener = new CasCommonDialog.DialogClickListener(); builder.setTitle(R.string.cas_phone_tip); builder.setMessage(message); - builder.setPositiveButton(R.string.cas_phone_quit_tip_message, dialogListener); + builder.setPositiveButton(R.string.cas_phone_quit_app_tip_message, dialogListener); mDialog = builder.create(); mDialog.setCanceledOnTouchOutside(false); @@ -801,22 +810,22 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl * resident lag */ private void setLagText(int lagVal) { + if (!isShowingLagInfoView) return; String lagContent = String.valueOf(lagVal); if (lagVal > REFERENCE_LAG_MAX_VALUE || lagVal <= REFERENCE_LAG_ZERO_VALUE) { lagContent = "*"; } - String lagStr = RESIDENT_LAG_FORMAT + lagContent + RESIDENT_LAG_UNIT_FORMAT; if (lagVal > REFERENCE_LAG_MID_VALUE) { - lag.setTextColor(Color.RED); + textCtrl.setTextColor(Color.RED); } else if (lagVal > REFERENCE_LAG_MIN_VALUE) { - lag.setTextColor(Color.YELLOW); + textCtrl.setTextColor(Color.YELLOW); } else if (lagVal > REFERENCE_LAG_ZERO_VALUE) { - lag.setTextColor(Color.GREEN); + textCtrl.setTextColor(Color.GREEN); } else { - lag.setTextColor(Color.RED); + textCtrl.setTextColor(Color.RED); } - lag.setText(lagStr); + textCtrl.setText(lagContent); } @Override @@ -830,7 +839,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl } else if (id == R.id.ctr_view) { switchCtrlViewShow(); } else if (id == R.id.lag_switch) { - updateLagInfoViewState(); + updateLagInfoViewState(lagSwitch.isChecked()); } } diff --git a/app/src/main/res/layout/cas_activity_fullscreen.xml b/app/src/main/res/layout/cas_activity_fullscreen.xml index 6866007a0f8cfd7fa2692f0b2860e7cd5ea1dcd9..b715b168468c7db3e56214f262e03fceca12575f 100644 --- a/app/src/main/res/layout/cas_activity_fullscreen.xml +++ b/app/src/main/res/layout/cas_activity_fullscreen.xml @@ -13,6 +13,11 @@ android:background="@color/cas_black" android:focusable="true"> + + + - - \ No newline at end of file diff --git a/app/src/main/res/layout/cas_ctrl_button_view.xml b/app/src/main/res/layout/cas_ctrl_button_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..0d933fc62a2b0590a602ee69fe7ae0f6f2ecf072 --- /dev/null +++ b/app/src/main/res/layout/cas_ctrl_button_view.xml @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/cas_ctrl_view.xml b/app/src/main/res/layout/cas_ctrl_view.xml index 82531f737e440d982831f51ac9cabb6100e38cc7..25a81e3b876452fa9a52c9ab6bf31882a911e9f5 100644 --- a/app/src/main/res/layout/cas_ctrl_view.xml +++ b/app/src/main/res/layout/cas_ctrl_view.xml @@ -60,21 +60,45 @@ -