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 4501f594bce60700d57c0e8f637dfba85056a2b3..520ba79571f5c45651a593f2a2c9f7d784975e64 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudMainActivity.java @@ -16,17 +16,28 @@ package com.huawei.cloudapp.ui; +import static com.huawei.cloudapp.ui.CasCloudPhoneActivity.MEDIA_CONFIG; +import static com.huawei.cloudapp.utils.CasConstantsUtil.ENCODE_TYPE; +import static com.huawei.cloudapp.utils.CasConstantsUtil.FRAME_TYPE; +import static com.huawei.cloudapp.utils.CasConstantsUtil.REMOTE_SCHEDULING_ELB_IP; +import static com.huawei.cloudapp.utils.CasConstantsUtil.REMOTE_SCHEDULING_ELB_PORT; + import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.RadioGroup; import com.huawei.cloudapp.R; import com.huawei.cloudapp.common.CASLog; import com.huawei.cloudapp.common.CasConnectInfo; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; public class CasCloudMainActivity extends Activity { @@ -34,6 +45,14 @@ public class CasCloudMainActivity extends Activity { private static final String TAG = "CasCloudMainActivity"; private EditText mCloudPhoneId; private EditText mCloudPhonePort; + private RadioGroup mEncodeTypeGroup; + private int mEncodeType = 0; + private String mFrameType = "h264"; + private LinearLayout mRemoteEncodeServerIpLayout; + private LinearLayout mRemoteEncodeServerPortLayout; + private EditText mRemoteEncodeServerIp; + private EditText mRemoteEncodeServerPort; + private RadioGroup mFrameTypeGroup; @Override protected void onCreate(Bundle savedInstanceState) { @@ -45,6 +64,52 @@ public class CasCloudMainActivity extends Activity { private void initView() { mCloudPhoneId = findViewById(R.id.cloud_phone_id); mCloudPhonePort = findViewById(R.id.cloud_phone_port); + 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); + + mEncodeTypeGroup.check(R.id.radioButtonCpu); + mEncodeTypeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + switch (i) { + case R.id.radioButtonCpu: + mEncodeType = 1; + mRemoteEncodeServerIpLayout.setVisibility(View.GONE); + mRemoteEncodeServerPortLayout.setVisibility(View.GONE); + break; + case R.id.radioButtonGpu: + mEncodeType = 2; + mRemoteEncodeServerIpLayout.setVisibility(View.GONE); + mRemoteEncodeServerPortLayout.setVisibility(View.GONE); + break; + case R.id.radioButtonRemote: + mRemoteEncodeServerIpLayout.setVisibility(View.VISIBLE); + mRemoteEncodeServerPortLayout.setVisibility(View.VISIBLE); + break; + default: + mEncodeType = 0; + mRemoteEncodeServerIpLayout.setVisibility(View.GONE); + mRemoteEncodeServerPortLayout.setVisibility(View.GONE); + break; + } + } + }); + + mFrameTypeGroup.check(R.id.radioButtonH264); + mFrameTypeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + if (i == R.id.radioButtonH265) { + mFrameType = "h265"; + } else { + mFrameType = "h264"; + } + } + }); } public void cloudPhoneConnect(View view) { @@ -58,14 +123,31 @@ public class CasCloudMainActivity extends Activity { CASLog.e(TAG, "输入Port为空"); return; } - startCloudPhoneActivity(phoneIp, phonePort); + String remoteEncodeServerIp = mRemoteEncodeServerIp.getText().toString().trim(); + String remoteEncodeServerPort = mRemoteEncodeServerPort.getText().toString().trim(); + if (mEncodeType == 3) { + if (remoteEncodeServerIp.isEmpty() || remoteEncodeServerPort.isEmpty()) { + CASLog.e(TAG, "远编服务器信息不全"); + return; + } + } + + startCloudPhoneActivity(phoneIp, phonePort, remoteEncodeServerIp, remoteEncodeServerPort); } - private void startCloudPhoneActivity(String phoneIp, String phonePort) { + private void startCloudPhoneActivity(String phoneIp, String phonePort, String remoteEncodeServerIp, String remoteEncodeServerPort) { Intent intent = new Intent(CasCloudMainActivity.this, CasCloudPhoneActivity.class); CasConnectInfo connectorInfo = getCasConnectorInfo(phoneIp, phonePort); + Map mediaConfig = new HashMap(); + mediaConfig.put(FRAME_TYPE, mFrameType); + mediaConfig.put(ENCODE_TYPE, String.valueOf(mEncodeType)); + if (!remoteEncodeServerIp.isEmpty() && !remoteEncodeServerPort.isEmpty()) { + mediaConfig.put(REMOTE_SCHEDULING_ELB_IP, remoteEncodeServerIp); + mediaConfig.put(REMOTE_SCHEDULING_ELB_PORT, remoteEncodeServerPort); + } intent.putExtra(CasConnectInfo.BUNDLE_KEY, connectorInfo); + intent.putExtra(MEDIA_CONFIG, (Serializable) mediaConfig); startActivity(intent); } diff --git a/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java b/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java index 9b7fb513407499ff89e8a8e23518a8d300699c35..1657170b074328cff2ca0beade75e9263bb8e4ca 100644 --- a/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java +++ b/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java @@ -83,6 +83,26 @@ public class CasConstantsUtil { */ public static final String TOUCH_TIMEOUT = "touch_timeout"; + /** + * frame_type + */ + public static final String FRAME_TYPE = "frame_type"; + + /** + * encode_type + */ + public static final String ENCODE_TYPE = "encode_type"; + + /** + * remote_scheduling_elb_ip + */ + public static final String REMOTE_SCHEDULING_ELB_IP = "remote_scheduling_elb_ip"; + + /** + * remote_scheduling_elb_ip + */ + public static final String REMOTE_SCHEDULING_ELB_PORT = "remote_scheduling_elb_port"; + /** * check aes key */ 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 e66ff8c3bb9be32483f42ce7da3f71e4c845a0d6..b2e7e16ae28c9790812f5dfce19203ba03f1b90a 100644 --- a/app/src/main/res/layout/activity_cas_cloud_main.xml +++ b/app/src/main/res/layout/activity_cas_cloud_main.xml @@ -12,7 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" - android:layout_marginTop="50dp" + android:layout_marginTop="30dp" android:layout_marginRight="20dp" android:orientation="horizontal"> @@ -39,7 +39,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" - android:layout_marginTop="50dp" + android:layout_marginTop="30dp" android:layout_marginRight="20dp" android:orientation="horizontal"> @@ -62,6 +62,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +