From aba5e66a33b6519a02871e553076bac4fba97ea5 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 09:57:45 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E4=BF=9D=E7=95=99=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=87=AA=E5=8A=A8=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + .../cloudapp/ui/CasCloudMainActivity.java | 105 +++++++++++++++++- .../cloudapp/ui/CasCloudPhoneActivity.java | 1 + .../res/layout/activity_cas_cloud_main.xml | 23 +++- app/src/main/res/layout/flow_item.xml | 15 +++ .../cloudphone/apiimpl/CloudPhoneImpl.java | 4 +- 6 files changed, 139 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/layout/flow_item.xml diff --git a/app/build.gradle b/app/build.gradle index c2d5123..176191d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,5 +72,6 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.0' 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 project(':cloudphone') } diff --git a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java index 5ed6ad5..997532c 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java @@ -24,18 +24,29 @@ import static com.huawei.cloudapp.utils.CasConstantsUtil.REMOTE_SCHEDULING_ELB_P import android.app.Activity; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.text.TextUtils; +import android.util.Log; import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RadioGroup; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; import com.huawei.cloudapp.R; import com.huawei.cloudapp.common.CASLog; import com.huawei.cloudapp.common.CasConnectInfo; +import com.zhy.view.flowlayout.FlowLayout; +import com.zhy.view.flowlayout.TagAdapter; +import com.zhy.view.flowlayout.TagFlowLayout; import java.io.Serializable; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -43,8 +54,8 @@ import java.util.UUID; public class CasCloudMainActivity extends Activity { private static final String TAG = "CasCloudMainActivity"; - private EditText mCloudPhoneId; - private EditText mCloudPhonePort; + private AutoCompleteTextView mCloudPhoneId; + private AutoCompleteTextView mCloudPhonePort; private RadioGroup mEncodeTypeGroup; private int mEncodeType = 0; private String mFrameType = "h264"; @@ -53,23 +64,30 @@ public class CasCloudMainActivity extends Activity { private EditText mRemoteEncodeServerIp; private EditText mRemoteEncodeServerPort; private RadioGroup mFrameTypeGroup; + private SharedPreferences mPreferences; + private TagFlowLayout mFlowLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cas_cloud_main); + mPreferences = getSharedPreferences("input_history", MODE_PRIVATE); initView(); } private void initView() { mCloudPhoneId = findViewById(R.id.cloud_phone_id); + initAutoCompleteTextView("ip", mCloudPhoneId); mCloudPhonePort = findViewById(R.id.cloud_phone_port); + initAutoCompleteTextView("port", mCloudPhonePort); mEncodeTypeGroup = findViewById(R.id.encodeTypeRadioButtonGroup); mFrameTypeGroup = findViewById(R.id.frameTypeRadioButtonGroup); mRemoteEncodeServerIpLayout = findViewById(R.id.remote_ip_view_layout); mRemoteEncodeServerPortLayout = findViewById(R.id.remote_port_view_layout); mRemoteEncodeServerIp = findViewById(R.id.edit_text_remote_ip); mRemoteEncodeServerPort = findViewById(R.id.edit_text_remote_port); + mFlowLayout = findViewById(R.id.flow); + setAdapter(mFlowLayout); mEncodeTypeGroup.check(R.id.radioButtonCpu); mEncodeTypeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @@ -124,11 +142,14 @@ public class CasCloudMainActivity extends Activity { CASLog.e(TAG, "输入Ip为空"); return; } + setHistory("ip", phoneIp); String phonePort = mCloudPhonePort.getText().toString().trim(); if (TextUtils.isEmpty(phonePort)) { CASLog.e(TAG, "输入Port为空"); return; } + setHistory("port", phonePort); + setHistory("ip:port", phoneIp + ":" + phonePort); String remoteEncodeServerIp = mRemoteEncodeServerIp.getText().toString().trim(); String remoteEncodeServerPort = mRemoteEncodeServerPort.getText().toString().trim(); if (mEncodeType == 3) { @@ -173,4 +194,84 @@ public class CasCloudMainActivity extends Activity { return connectorInfo; } + private void initAutoCompleteTextView(String key, AutoCompleteTextView autoCompleteTextView) { + String[] keyHistoryList = getHistory(key); + ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, keyHistoryList); + autoCompleteTextView.setAdapter(adapter); + autoCompleteTextView.setDropDownHeight(450); + autoCompleteTextView.setCompletionHint("仅显示最近的10条记录"); + autoCompleteTextView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + dropDownItem(view); + } + }); + autoCompleteTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View view, boolean hasFocus) { + if (hasFocus) { + dropDownItem(view); + } + } + }); + } + + private void dropDownItem(View view) { + AutoCompleteTextView autoCompleteTextView = ((AutoCompleteTextView) view); + if (autoCompleteTextView.getAdapter().getCount() != 0) { + autoCompleteTextView.showDropDown(); + } else { + autoCompleteTextView.dismissDropDown(); + } + } + + private String[] getHistory(String key) { + String[] keyHistoryList = {}; + String keyHistoryListStr = mPreferences.getString(key, ""); + if (!keyHistoryListStr.isEmpty()) { + keyHistoryList = keyHistoryListStr.split(","); + } + if (keyHistoryList.length > 10) { + String[] newArrays = new String[10]; + System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); + keyHistoryList = newArrays; + } + return keyHistoryList; + } + + private void setHistory(String key, String value) { + String[] keyHistoryList = mPreferences.getString(key, "").split(","); + if (keyHistoryList.length > 10) { + String[] newArrays = new String[10]; + System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); + keyHistoryList = newArrays; + } + if (!Arrays.asList(keyHistoryList).contains(value)) { + String keyHistoryListStr = Arrays.toString(keyHistoryList); + StringBuilder sb = new StringBuilder(keyHistoryListStr.substring(1, keyHistoryListStr.length() - 1)); + sb.insert(0, value + ","); + mPreferences.edit().putString(key, sb.toString()).apply(); + } + } + + private void setAdapter(TagFlowLayout flowLayout) { + String[] data = getHistory("ip:port"); + if (data.length == 0) return; + flowLayout.setAdapter(new TagAdapter(data) { + @Override + public View getView(FlowLayout parent, int position, String s) { + TextView textView = (TextView) View.inflate(CasCloudMainActivity.this, R.layout.flow_item, null); + textView.setText(s); + return textView; + } + + @Override + public void onSelected(int position, View view) { + String[] ipAndPortStr = data[position].split(":"); + mCloudPhoneId.setText(ipAndPortStr[0]); + mCloudPhonePort.setText(ipAndPortStr[1]); + Log.e(TAG, "ipAndPortStr : "+ Arrays.toString(ipAndPortStr)); + } + }); + } } \ No newline at end of file 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 424cbe9..08f07c9 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java @@ -311,6 +311,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl mCloudPhone.startCloudPhone(this, mFrameLayout, parasMap); } catch (Exception e) { CASLog.e(TAG, "startCloudApp start failed." + e.getMessage()); + showDialog(getResources().getString(R.string.cas_phone_start_fail_tip_message)); } } diff --git a/app/src/main/res/layout/activity_cas_cloud_main.xml b/app/src/main/res/layout/activity_cas_cloud_main.xml index edc4fdd..9e12662 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@android:color/white" android:orientation="vertical" android:paddingTop="50dp" @@ -14,7 +15,8 @@ android:layout_marginLeft="20dp" android:layout_marginTop="30dp" android:layout_marginRight="20dp" - android:orientation="horizontal"> + android:orientation="horizontal" + android:focusableInTouchMode="true"> - - + android:textSize="18sp" + android:completionThreshold="0"/> - + android:textSize="18sp" + android:completionThreshold="1" /> @@ -217,4 +220,12 @@ android:onClick="cloudPhoneConnect" android:textSize="20dp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/flow_item.xml b/app/src/main/res/layout/flow_item.xml new file mode 100644 index 0000000..8538425 --- /dev/null +++ b/app/src/main/res/layout/flow_item.xml @@ -0,0 +1,15 @@ + + + \ No newline at end of file diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java index 3bec087..c83f83f 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java @@ -194,7 +194,7 @@ public class CloudPhoneImpl implements ICloudPhone { public void startCloudPhone(Activity activity, ViewGroup view, Map params) { if (mCurrentState == STATE_DEINIT) { CASLog.e(TAG, "Call init first."); - return; + throw new IllegalStateException("Call init first."); } CASLog.i(TAG, "startCloudPhone called"); mActivity = activity; @@ -203,7 +203,7 @@ public class CloudPhoneImpl implements ICloudPhone { mConnectorInfo = new CasConnectorInfo(); if (!mConnectorInfo.initConnectorParams(mStartParas)) { CASLog.e(TAG, "Init connector params failed."); - return; + throw new IllegalArgumentException("Init connector params failed."); } mBgTimeout = Integer.parseInt(mConnectorInfo.getBackgroundTimeout()) * 1000; mIsStartSuccess = false; -- Gitee From 5c18a32ec4b80cd0702413f68e208da72c54c33b Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 15:22:52 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E4=BF=9D=E7=95=99=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=87=AA=E5=8A=A8=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_cas_cloud_main.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/activity_cas_cloud_main.xml b/app/src/main/res/layout/activity_cas_cloud_main.xml index 952c2d4..9e12662 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -25,7 +25,7 @@ android:textColor="@android:color/black" android:textSize="18sp" /> - - + android:textSize="18sp" + android:completionThreshold="0"/> - + android:textSize="18sp" + android:completionThreshold="1" /> -- Gitee From bd388c66cd03a611fbfb9a86fcf4c5d189345186 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 15:22:52 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E4=BF=9D=E7=95=99=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=87=AA=E5=8A=A8=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../huawei/cloudapp/ui/CasCloudMainActivity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java index 997532c..194fec5 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java @@ -26,6 +26,8 @@ import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; +import android.text.InputFilter; +import android.text.Spanned; import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -214,6 +216,19 @@ public class CasCloudMainActivity extends Activity { } } }); + InputFilter filter = new InputFilter() { + public CharSequence filter(CharSequence source, int start, int end, + Spanned dest, int dstart, int dend) { + for (int i = start; i < end; i++) { + char c = source.charAt(i); + if (!Character.isDigit(c) && c != '.') { + return ""; + } + } + return null; + } + }; + autoCompleteTextView.setFilters(new InputFilter[]{filter}); } private void dropDownItem(View view) { -- Gitee From b054c0429f4129382a314821167e031c331d98c0 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 15:22:52 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E4=BF=9D=E7=95=99=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=87=AA=E5=8A=A8=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_cas_cloud_main.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/activity_cas_cloud_main.xml b/app/src/main/res/layout/activity_cas_cloud_main.xml index 9e12662..4e49d6b 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -220,12 +220,18 @@ android:onClick="cloudPhoneConnect" android:textSize="20dp" /> + + + app:max_select="1"/> \ No newline at end of file -- Gitee From 3f180aee8e29e9b75a5d1460288759883b0713cd Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 16:03:59 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/huawei/cloudapp/ui/CasCloudMainActivity.java | 12 +++++------- app/src/main/res/layout/activity_cas_cloud_main.xml | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java index 194fec5..b109cf4 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java @@ -38,8 +38,6 @@ import android.widget.LinearLayout; import android.widget.RadioGroup; import android.widget.TextView; -import androidx.appcompat.app.AppCompatActivity; - import com.huawei.cloudapp.R; import com.huawei.cloudapp.common.CASLog; import com.huawei.cloudapp.common.CasConnectInfo; @@ -56,7 +54,7 @@ import java.util.UUID; public class CasCloudMainActivity extends Activity { private static final String TAG = "CasCloudMainActivity"; - private AutoCompleteTextView mCloudPhoneId; + private AutoCompleteTextView mCloudPhoneIp; private AutoCompleteTextView mCloudPhonePort; private RadioGroup mEncodeTypeGroup; private int mEncodeType = 0; @@ -78,8 +76,8 @@ public class CasCloudMainActivity extends Activity { } private void initView() { - mCloudPhoneId = findViewById(R.id.cloud_phone_id); - initAutoCompleteTextView("ip", mCloudPhoneId); + mCloudPhoneIp = findViewById(R.id.cloud_phone_ip); + initAutoCompleteTextView("ip", mCloudPhoneIp); mCloudPhonePort = findViewById(R.id.cloud_phone_port); initAutoCompleteTextView("port", mCloudPhonePort); mEncodeTypeGroup = findViewById(R.id.encodeTypeRadioButtonGroup); @@ -139,7 +137,7 @@ public class CasCloudMainActivity extends Activity { } public void cloudPhoneConnect(View view) { - String phoneIp = mCloudPhoneId.getText().toString().trim(); + String phoneIp = mCloudPhoneIp.getText().toString().trim(); if (TextUtils.isEmpty(phoneIp)) { CASLog.e(TAG, "输入Ip为空"); return; @@ -283,7 +281,7 @@ public class CasCloudMainActivity extends Activity { @Override public void onSelected(int position, View view) { String[] ipAndPortStr = data[position].split(":"); - mCloudPhoneId.setText(ipAndPortStr[0]); + mCloudPhoneIp.setText(ipAndPortStr[0]); mCloudPhonePort.setText(ipAndPortStr[1]); Log.e(TAG, "ipAndPortStr : "+ Arrays.toString(ipAndPortStr)); } diff --git a/app/src/main/res/layout/activity_cas_cloud_main.xml b/app/src/main/res/layout/activity_cas_cloud_main.xml index 4e49d6b..5ad904d 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -26,7 +26,7 @@ android:textSize="18sp" /> Date: Tue, 13 Jun 2023 16:10:27 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java | 2 ++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 3 insertions(+) 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 08f07c9..07387d8 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java @@ -309,6 +309,8 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl } mCloudPhone.startCloudPhone(this, mFrameLayout, parasMap); + } catch (IllegalArgumentException e) { + showDialog(getResources().getString(R.string.cas_phone_input_param_invalid)); } catch (Exception e) { CASLog.e(TAG, "startCloudApp start failed." + e.getMessage()); showDialog(getResources().getString(R.string.cas_phone_start_fail_tip_message)); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 431cd08..d4fc14e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,6 +24,7 @@ 验证失败 试玩时间已到 由于您长时间未操作游戏,服务断开 + 输入的参数不合法 云手机ip: 连接 云手机port: -- Gitee From 5e86e2e46c7871f4723a6dd194117bcedc2af444 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 16:35:17 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E6=89=8D=E4=BF=9D=E5=AD=98=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../huawei/cloudapp/common/CasHistory.java | 46 +++++++++++++++++++ .../cloudapp/ui/CasCloudMainActivity.java | 41 ++--------------- .../cloudapp/ui/CasCloudPhoneActivity.java | 7 ++- 3 files changed, 57 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/com/huawei/cloudapp/common/CasHistory.java diff --git a/app/src/main/java/com/huawei/cloudapp/common/CasHistory.java b/app/src/main/java/com/huawei/cloudapp/common/CasHistory.java new file mode 100644 index 0000000..1e38528 --- /dev/null +++ b/app/src/main/java/com/huawei/cloudapp/common/CasHistory.java @@ -0,0 +1,46 @@ +package com.huawei.cloudapp.common; + +import static android.content.Context.MODE_PRIVATE; + +import android.content.SharedPreferences; + +import java.util.Arrays; + +public class CasHistory { + + private SharedPreferences mPreferences; + + public CasHistory(SharedPreferences preferences) { + mPreferences = preferences; + } + + public String[] getHistory(String key) { + String[] keyHistoryList = {}; + String keyHistoryListStr = mPreferences.getString(key, ""); + if (!keyHistoryListStr.isEmpty()) { + keyHistoryList = keyHistoryListStr.split(","); + } + if (keyHistoryList.length > 10) { + String[] newArrays = new String[10]; + System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); + keyHistoryList = newArrays; + } + return keyHistoryList; + } + + public void setHistory(String key, String value) { + String[] keyHistoryList = mPreferences.getString(key, "").split(","); + if (keyHistoryList.length > 10) { + String[] newArrays = new String[10]; + System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); + keyHistoryList = newArrays; + } + if (!Arrays.asList(keyHistoryList).contains(value)) { + String keyHistoryListStr = Arrays.toString(keyHistoryList); + StringBuilder sb = new StringBuilder(keyHistoryListStr.substring(1, keyHistoryListStr.length() - 1)); + sb.insert(0, value + ","); + mPreferences.edit().putString(key, sb.toString()).apply(); + } + } + +} diff --git a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java index b109cf4..973f1b8 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java @@ -41,6 +41,7 @@ import android.widget.TextView; import com.huawei.cloudapp.R; import com.huawei.cloudapp.common.CASLog; import com.huawei.cloudapp.common.CasConnectInfo; +import com.huawei.cloudapp.common.CasHistory; import com.zhy.view.flowlayout.FlowLayout; import com.zhy.view.flowlayout.TagAdapter; import com.zhy.view.flowlayout.TagFlowLayout; @@ -64,14 +65,14 @@ public class CasCloudMainActivity extends Activity { private EditText mRemoteEncodeServerIp; private EditText mRemoteEncodeServerPort; private RadioGroup mFrameTypeGroup; - private SharedPreferences mPreferences; private TagFlowLayout mFlowLayout; + private CasHistory mCasHistory; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cas_cloud_main); - mPreferences = getSharedPreferences("input_history", MODE_PRIVATE); + mCasHistory = new CasHistory(getSharedPreferences("input_history", MODE_PRIVATE)); initView(); } @@ -142,14 +143,11 @@ public class CasCloudMainActivity extends Activity { CASLog.e(TAG, "输入Ip为空"); return; } - setHistory("ip", phoneIp); String phonePort = mCloudPhonePort.getText().toString().trim(); if (TextUtils.isEmpty(phonePort)) { CASLog.e(TAG, "输入Port为空"); return; } - setHistory("port", phonePort); - setHistory("ip:port", phoneIp + ":" + phonePort); String remoteEncodeServerIp = mRemoteEncodeServerIp.getText().toString().trim(); String remoteEncodeServerPort = mRemoteEncodeServerPort.getText().toString().trim(); if (mEncodeType == 3) { @@ -195,7 +193,7 @@ public class CasCloudMainActivity extends Activity { } private void initAutoCompleteTextView(String key, AutoCompleteTextView autoCompleteTextView) { - String[] keyHistoryList = getHistory(key); + String[] keyHistoryList = mCasHistory.getHistory(key); ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, keyHistoryList); autoCompleteTextView.setAdapter(adapter); autoCompleteTextView.setDropDownHeight(450); @@ -238,37 +236,8 @@ public class CasCloudMainActivity extends Activity { } } - private String[] getHistory(String key) { - String[] keyHistoryList = {}; - String keyHistoryListStr = mPreferences.getString(key, ""); - if (!keyHistoryListStr.isEmpty()) { - keyHistoryList = keyHistoryListStr.split(","); - } - if (keyHistoryList.length > 10) { - String[] newArrays = new String[10]; - System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); - keyHistoryList = newArrays; - } - return keyHistoryList; - } - - private void setHistory(String key, String value) { - String[] keyHistoryList = mPreferences.getString(key, "").split(","); - if (keyHistoryList.length > 10) { - String[] newArrays = new String[10]; - System.arraycopy(keyHistoryList, 0, newArrays, 0, 10); - keyHistoryList = newArrays; - } - if (!Arrays.asList(keyHistoryList).contains(value)) { - String keyHistoryListStr = Arrays.toString(keyHistoryList); - StringBuilder sb = new StringBuilder(keyHistoryListStr.substring(1, keyHistoryListStr.length() - 1)); - sb.insert(0, value + ","); - mPreferences.edit().putString(key, sb.toString()).apply(); - } - } - private void setAdapter(TagFlowLayout flowLayout) { - String[] data = getHistory("ip:port"); + String[] data = mCasHistory.getHistory("ip:port"); if (data.length == 0) return; flowLayout.setAdapter(new TagAdapter(data) { @Override 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 07387d8..92b1362 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java @@ -53,6 +53,7 @@ import com.huawei.cloudapp.R; import com.huawei.cloudapp.common.CASLog; import com.huawei.cloudapp.common.CasCommonDialog; import com.huawei.cloudapp.common.CasConnectInfo; +import com.huawei.cloudapp.common.CasHistory; import com.huawei.cloudapp.common.CasImageQualityManager; import com.huawei.cloudapp.common.CasListener; import com.huawei.cloudapp.common.CasState; @@ -129,6 +130,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl private int currentRotation = -1; private CasCommonDialog quitDialog; private CasCommonDialog mDialog; + private CasHistory mCasHistory; //virtual devices VirtualDeviceSession mVirtualDeviceSession = null; @@ -253,7 +255,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl keepScreenLongLight(this, true); getIntentData(); initVirtualDeviceSession(); - + mCasHistory = new CasHistory(getSharedPreferences("input_history", MODE_PRIVATE)); // get views loadingView = (ImageView) findViewById(R.id.loadingView); mFrameLayout = (FrameLayout) findViewById(R.id.frame_layout); @@ -436,6 +438,9 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl lag.setVisibility(View.VISIBLE); loadingView.setVisibility(View.GONE); startSuccessThreadTask(); + mCasHistory.setHistory("ip", connectInfo.getConnectIp()); + mCasHistory.setHistory("port", connectInfo.getConnectPort()); + mCasHistory.setHistory("ip:port", connectInfo.getConnectIp() + ":" + connectInfo.getConnectPort()); if (mVirtualDeviceSession != null) { mVirtualDeviceSession.start(); } -- Gitee From ca516ef2ae23051413ca65d709620d3c66203b70 Mon Sep 17 00:00:00 2001 From: wangshuo <584363327@qq.com> Date: Tue, 13 Jun 2023 17:11:43 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E6=89=8D=E4=BF=9D=E5=AD=98=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_cas_cloud_main.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_cas_cloud_main.xml b/app/src/main/res/layout/activity_cas_cloud_main.xml index 5ad904d..6dcf8df 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -225,7 +225,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" - android:text="历史纪录" + android:text="历史记录" />