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 9cf0a6f159e41130e7be22c95b3bb8a3d0ed95d5..15ebf22c114071e821fd1377e82eaea656806fa8 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/CasCloudPhoneActivity.java @@ -30,12 +30,12 @@ import android.os.Message; import androidx.fragment.app.FragmentActivity; +import android.util.DisplayMetrics; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.widget.Button; import android.widget.FrameLayout; import android.widget.ProgressBar; import android.widget.RadioButton; @@ -56,7 +56,6 @@ import com.huawei.cloudapp.common.CasImageQualityManager; import com.huawei.cloudapp.common.CasListener; import com.huawei.cloudapp.common.CasState; import com.huawei.cloudapp.utils.CasAdaptPhoneUtils; -import com.huawei.cloudapp.utils.CasQualityUtil; import com.huawei.cloudphone.api.CloudAppDataListener; import com.huawei.cloudphone.api.CloudPhoneManager; import com.huawei.cloudphone.api.CloudPhoneOrientationChangeListener; @@ -79,23 +78,22 @@ import static com.huawei.cloudapp.utils.CasConstantsUtil.AES_KEY; import static com.huawei.cloudapp.utils.CasConstantsUtil.AUTH_TS; import static com.huawei.cloudapp.utils.CasConstantsUtil.AVAILABLE_PLAYTIME; import static com.huawei.cloudapp.utils.CasConstantsUtil.BACKGROUND_TIMEOUT; +import static com.huawei.cloudapp.utils.CasConstantsUtil.DEFINITION_BASIC; +import static com.huawei.cloudapp.utils.CasConstantsUtil.DEFINITION_BEST; +import static com.huawei.cloudapp.utils.CasConstantsUtil.DEFINITION_MAIN; +import static com.huawei.cloudapp.utils.CasConstantsUtil.FRAME_TYPE_H265; import static com.huawei.cloudapp.utils.CasConstantsUtil.IP; import static com.huawei.cloudapp.utils.CasConstantsUtil.PORT; +import static com.huawei.cloudapp.utils.CasConstantsUtil.RESOLUTION_1080P; import static com.huawei.cloudapp.utils.CasConstantsUtil.SESSION_ID; import static com.huawei.cloudapp.utils.CasConstantsUtil.TICKET; import static com.huawei.cloudapp.utils.CasConstantsUtil.TOUCH_TIMEOUT; import static com.huawei.cloudapp.utils.CasConstantsUtil.USER_ID; -import static com.huawei.cloudapp.utils.CasQualityUtil.DEFINITION_BEST; -import static com.huawei.cloudapp.utils.CasQualityUtil.DEFINITION_MAIN; -import static com.huawei.cloudapp.utils.CasQualityUtil.DEFINITION_BASIC; -import static com.huawei.cloudapp.utils.CasQualityUtil.FRAME_TYPE_H264; -import static com.huawei.cloudapp.utils.CasQualityUtil.FRAME_TYPE_H265; -import static com.huawei.cloudapp.utils.CasQualityUtil.RESOLUTION_1080P; import static com.huawei.cloudphone.api.CloudPhoneParas.DevType.DEV_PHONE; -import static com.huawei.cloudphone.utils.CasConstantsUtil.BITRATE; import static com.huawei.cloudphone.utils.CasConstantsUtil.FRAME_TYPE; -import static com.huawei.cloudphone.utils.CasConstantsUtil.STREAM_HEIGHT; -import static com.huawei.cloudphone.utils.CasConstantsUtil.STREAM_WIDTH; +import static com.huawei.cloudphone.utils.CasConstantsUtil.PHYSICAL_HEIGHT; +import static com.huawei.cloudphone.utils.CasConstantsUtil.PHYSICAL_WIDTH; +import static com.huawei.cloudphone.utils.CasConstantsUtil.QUALITY; import static com.huawei.cloudphone.utils.CasConstantsUtil.WIDTH; import static com.huawei.cloudphone.utils.CasMediaUtils.isSupportH265; import static com.huawei.cloudphone.virtualdevice.camera.VirtualCameraManager.GRANT_CAMERA_PERMISSION_SUCCESS_ACTION; @@ -176,17 +174,17 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl if (group.getCheckedRadioButtonId() != checkedId) { CASLog.e("CasMainActivity", "group.getCheckedRadioButtonId() != checkedId"); } else { - int selectType = QUALITY_BEST; - String[] quality = CasQualityUtil.GetQuality(mFrameType, mResolution, DEFINITION_BEST); + int selectType = QUALITY_MAIN; + String quality = DEFINITION_MAIN; if (radioViewBest.getId() == checkedId) { selectType = QUALITY_BEST; - quality = CasQualityUtil.GetQuality(mFrameType, mResolution, DEFINITION_BEST); + quality = DEFINITION_BEST; } else if (radioViewMain.getId() == checkedId) { selectType = QUALITY_MAIN; - quality = CasQualityUtil.GetQuality(mFrameType, mResolution, DEFINITION_MAIN); + quality = DEFINITION_MAIN; } else if (radioViewBasic.getId() == checkedId) { selectType = QUALITY_BASIC; - quality = CasQualityUtil.GetQuality(mFrameType, mResolution, DEFINITION_BASIC); + quality = DEFINITION_BASIC; } int oldSelectType = CasImageQualityManager.getInstance().getImageQualityStatus(); @@ -194,9 +192,7 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl CasImageQualityManager.getInstance().setImageQualityStatus(selectType); checkImageQualityStatus(selectType); HashMap config = new HashMap<>(); - config.put(BITRATE, quality[0]); - config.put(STREAM_WIDTH, quality[1]); - config.put(STREAM_HEIGHT, quality[2]); + config.put(QUALITY, quality); mCloudPhone.setMediaConfig(config); } if (ctrView != null && ctrView.getVisibility() == View.VISIBLE) { @@ -324,6 +320,13 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl } else { mMediaConfig.put(FRAME_TYPE, "h264"); } + + mMediaConfig.put(QUALITY, DEFINITION_MAIN); + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getRealMetrics(metrics); + mMediaConfig.put(PHYSICAL_WIDTH, String.valueOf(metrics.widthPixels)); + mMediaConfig.put(PHYSICAL_HEIGHT, String.valueOf(metrics.heightPixels)); + mCloudPhone.setMediaConfig(mMediaConfig); mCloudPhone.startCloudPhone(this, mFrameLayout, parasMap); } catch (IllegalArgumentException e) { @@ -536,14 +539,6 @@ public class CasCloudPhoneActivity extends FragmentActivity implements View.OnCl radioViewMain.setText(R.string.quality_HD); radioViewBasic.setText(R.string.quality_SD); } - String[] qualityStr = CasQualityUtil.GetQuality(mFrameType, mResolution, DEFINITION_MAIN); - - mMediaConfig.put(FRAME_TYPE, mFrameType); - HashMap config = new HashMap<>(); - config.put(BITRATE, qualityStr[0]); - config.put(STREAM_WIDTH, qualityStr[1]); - config.put(STREAM_HEIGHT, qualityStr[2]); - mCloudPhone.setMediaConfig(config); qualityRadioViewGroup.setVisibility(View.VISIBLE); } 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 1657170b074328cff2ca0beade75e9263bb8e4ca..516a75b5f7379b1837edb762df3a4cb5ad269e8d 100644 --- a/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java +++ b/app/src/main/java/com/huawei/cloudapp/utils/CasConstantsUtil.java @@ -112,4 +112,15 @@ public class CasConstantsUtil { * check whether is positive number */ public static final Pattern POSITIVE_NUMBER_PATTERN = Pattern.compile("^[1-9]\\d*$"); + + + public static final String FRAME_TYPE_H265 = "h265"; + public static final String FRAME_TYPE_H264 = "h264"; + + public static final String RESOLUTION_720P = "720"; + public static final String RESOLUTION_1080P = "1080"; + + public static final String DEFINITION_BEST = "best"; + public static final String DEFINITION_MAIN = "main"; + public static final String DEFINITION_BASIC = "basic"; } diff --git a/app/src/main/java/com/huawei/cloudapp/utils/CasQualityUtil.java b/app/src/main/java/com/huawei/cloudapp/utils/CasQualityUtil.java deleted file mode 100644 index d410c75fdb2f1dfa5df77da513f763fe9a75efb3..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/huawei/cloudapp/utils/CasQualityUtil.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.huawei.cloudapp.utils; - -import java.util.HashMap; - -public class CasQualityUtil { - - public static final String FRAME_TYPE_H265 = "h265"; - public static final String FRAME_TYPE_H264 = "h264"; - - public static final String RESOLUTION_720P = "720"; - public static final String RESOLUTION_1080P = "1080"; - - public static final String DEFINITION_BEST = "best"; - public static final String DEFINITION_MAIN = "main"; - public static final String DEFINITION_BASIC = "basic"; - - private static final String H264_720P_BEST = "2000000,720,1280"; - private static final String H264_720P_MAIN = "1300000,720,1280"; - private static final String H264_720P_BASIC = "1000000,544,960"; - - private static final String H264_1080P_BEST = "4000000,1080,1920"; - private static final String H264_1080P_MAIN = "2600000,1080,1920"; - private static final String H264_1080P_BASIC = "2000000,720,1280"; - - private static final String H265_720P_BEST = "1300000,720,1280"; - private static final String H265_720P_MAIN = "1000000,720,1280"; - private static final String H265_720P_BASIC = "700000,544,960"; - - private static final String H265_1080P_BEST = "2600000,1080,1920"; - private static final String H265_1080P_MAIN = "2000000,1080,1920"; - private static final String H265_1080P_BASIC = "1400000,720,1280"; - - private static HashMap>> quality = - new HashMap>>(); - - static { - quality.put(FRAME_TYPE_H264, new HashMap>()); - - quality.get(FRAME_TYPE_H264).put(RESOLUTION_720P, new HashMap()); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_720P).put(DEFINITION_BEST, H264_720P_BEST); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_720P).put(DEFINITION_MAIN, H264_720P_MAIN); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_720P).put(DEFINITION_BASIC, H264_720P_BASIC); - - quality.get(FRAME_TYPE_H264).put(RESOLUTION_1080P, new HashMap()); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_1080P).put(DEFINITION_BEST, H264_1080P_BEST); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_1080P).put(DEFINITION_MAIN, H264_1080P_MAIN); - quality.get(FRAME_TYPE_H264).get(RESOLUTION_1080P).put(DEFINITION_BASIC, H264_1080P_BASIC); - - quality.put(FRAME_TYPE_H265, new HashMap>()); - - quality.get(FRAME_TYPE_H265).put(RESOLUTION_720P, new HashMap()); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_720P).put(DEFINITION_BEST, H265_720P_BEST); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_720P).put(DEFINITION_MAIN, H265_720P_MAIN); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_720P).put(DEFINITION_BASIC, H265_720P_BASIC); - - quality.get(FRAME_TYPE_H265).put(RESOLUTION_1080P, new HashMap()); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_1080P).put(DEFINITION_BEST, H265_1080P_BEST); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_1080P).put(DEFINITION_MAIN, H265_1080P_MAIN); - quality.get(FRAME_TYPE_H265).get(RESOLUTION_1080P).put(DEFINITION_BASIC, H265_1080P_BASIC); - } - - public static String[] GetQuality(String frameType, String resolution, String definition) { - return quality.get(frameType).get(resolution).get(definition).split(","); - } -} diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/utils/CasConstantsUtil.java b/cloudphone/src/main/java/com/huawei/cloudphone/utils/CasConstantsUtil.java index 2d9af8e5c1702bf5181b2435f32cb7bcd846bc17..04a8ec7ea352f748a9dd2f92ab3ba585c0b8da61 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/utils/CasConstantsUtil.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/utils/CasConstantsUtil.java @@ -128,10 +128,20 @@ public class CasConstantsUtil { */ public static final String WIDTH = "width"; + /** + * Physical_width + */ + public static final String PHYSICAL_WIDTH = "physical_width"; + /** * Physical_height */ - public static final String HEIGHT = "height"; + public static final String PHYSICAL_HEIGHT = "physical_height"; + + /** + * quality + */ + public static final String QUALITY = "quality"; /** * rgb2yuv rgb转yuv 0:编码时转换 1:抓图时转换