From 8ea5648cc7f38438225b4c07b8373304e5255f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E8=BE=B9=E4=B8=80=E6=9C=B5=E4=BA=91?= Date: Mon, 1 Jul 2024 19:14:10 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=A0=E6=84=9F?= =?UTF-8?q?=E5=99=A8=E7=9A=84=E6=BF=80=E6=B4=BB=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloudphone/apiimpl/CloudPhoneImpl.java | 13 +++++++++++++ .../virtualdevice/sensor/VirtualSensor.java | 19 +++++++++++++++++++ .../sensor/VirtualSensorManager.java | 4 ++++ 3 files changed, 36 insertions(+) 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 734f7e0..661f70a 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/apiimpl/CloudPhoneImpl.java @@ -57,6 +57,7 @@ import com.huawei.cloudphone.virtualdevice.camera.VirtualCameraManager; import com.huawei.cloudphone.virtualdevice.common.RingBufferVirtualDeviceIO; import com.huawei.cloudphone.virtualdevice.common.VirtualDeviceManager; import com.huawei.cloudphone.virtualdevice.common.VirtualDeviceProtocol; +import com.huawei.cloudphone.virtualdevice.sensor.VirtualSensorManager; import java.util.HashMap; import java.util.Map; @@ -67,6 +68,7 @@ import static android.view.KeyEvent.KEYCODE_BACK; import static android.view.KeyEvent.KEYCODE_VOLUME_DOWN; import static android.view.KeyEvent.KEYCODE_VOLUME_UP; import static com.huawei.cloudphone.api.CloudPhoneParas.DEV_TYPE_CAMERA; +import static com.huawei.cloudphone.api.CloudPhoneParas.DEV_TYPE_SENSOR; import static com.huawei.cloudphone.api.CloudPhoneParas.DisplayMode.DISPLAY_MODE_FILL; import static com.huawei.cloudphone.common.CasState.CAS_CONNECT_EXCEPTION; import static com.huawei.cloudphone.utils.CasMediaUtils.isValidMediaConfig; @@ -348,6 +350,17 @@ public class CloudPhoneImpl implements ICloudPhone { @Override public String getVideoStatisticInfo() { + + VirtualDeviceProtocol virtualDevice = mVirtualDeviceSession.getVirtualDevice(); + if (virtualDevice == null) { + return ""; + } + VirtualDeviceManager virtualDeviceManager = virtualDevice.getVirtualDeviceManager(DEV_TYPE_SENSOR); + if (virtualDeviceManager == null) { + return ""; + } + ((VirtualSensorManager) virtualDeviceManager).printSensorStatus(); + if (mProccessor != null) { return mProccessor.getVideoStreamStats(); } else { diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java index 4c14852..761e79b 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java @@ -31,6 +31,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class VirtualSensor implements SensorEventListener { private static final String TAG = "VirtualSensor"; @@ -43,10 +44,15 @@ public class VirtualSensor implements SensorEventListener { private boolean mIsStart = false; private Map mSensorMap = new HashMap<>(); + private Map mSensorActiveMap = new HashMap<>(); public VirtualSensor(SensorManager sensorManager) { mSensorManager = sensorManager; mAccelerationSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); + List sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); + for (Sensor sensor: sensorList) { + mSensorActiveMap.put(sensor.getId(), false); + } } void registerSensorDataListener(IVirtualDeviceDataListener listener) { @@ -75,6 +81,10 @@ public class VirtualSensor implements SensorEventListener { public void startProcess(short sensorId) { Log.i(TAG, "register sensor id " + sensorId); + + if (mSensorActiveMap.containsKey((int) sensorId)) { + mSensorActiveMap.replace((int) sensorId, true); + } if (sensorId == 1) { mSensorManager.registerListener(this, mAccelerationSensor, SensorManager.SENSOR_DELAY_GAME, mHandler); return; @@ -85,6 +95,11 @@ public class VirtualSensor implements SensorEventListener { public void stopProcess(short sensorId) { Log.i(TAG, "unregister sensor id " + sensorId); + + if (mSensorActiveMap.containsKey((int) sensorId)) { + mSensorActiveMap.replace((int) sensorId, false); + } + if (sensorId == 1) { mSensorManager.unregisterListener(this, mAccelerationSensor); } @@ -92,6 +107,10 @@ public class VirtualSensor implements SensorEventListener { mSensorManager.unregisterListener(this, mSensor); } + public void printSensorStatus() { + Log.i(TAG, mSensorActiveMap.toString()); + } + @Override public void onSensorChanged(SensorEvent sensorEvent) { if (mListener == null) { diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java index f93ce01..fe3100f 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java @@ -100,6 +100,10 @@ public class VirtualSensorManager extends VirtualDeviceManager { mVirtualSensor.stop(); } + public void printSensorStatus() { + mVirtualSensor.printSensorStatus(); + } + class SensorDataListener implements IVirtualDeviceDataListener { @Override public void onRecvData(Object... args) { -- Gitee From 8da9190b94c8404f3318fb37ef73e78207dbd386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E8=BE=B9=E4=B8=80=E6=9C=B5=E4=BA=91?= Date: Tue, 2 Jul 2024 14:33:43 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=A0=E6=84=9F=E5=99=A8=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/activity/CasCloudPhoneActivity.java | 35 +++- .../res/layout/cas_activity_fullscreen.xml | 19 ++ .../huawei/cloudphone/api/ICloudPhone.java | 2 + .../cloudphone/apiimpl/CloudPhoneImpl.java | 16 +- .../virtualdevice/sensor/VirtualSensor.java | 170 +++++++++++++++++- .../sensor/VirtualSensorManager.java | 5 +- 6 files changed, 228 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/huawei/cloudapp/ui/activity/CasCloudPhoneActivity.java b/app/src/main/java/com/huawei/cloudapp/ui/activity/CasCloudPhoneActivity.java index 3494f9c..09742b3 100644 --- a/app/src/main/java/com/huawei/cloudapp/ui/activity/CasCloudPhoneActivity.java +++ b/app/src/main/java/com/huawei/cloudapp/ui/activity/CasCloudPhoneActivity.java @@ -181,6 +181,10 @@ public class CasCloudPhoneActivity extends FragmentActivity implements IHandleDa private TextView mNavigationTextView; private TextView mStatisticsTextView; private CheckBox mStatisticsCheckBox; + + private TextView mSensorInfoTextView; + + private CheckBox mSensorInfoCheckBox; private Timer mTimer = new Timer(); private boolean isReadyToExit; private Toast mToast; @@ -278,9 +282,26 @@ public class CasCloudPhoneActivity extends FragmentActivity implements IHandleDa mTimer.schedule(new TimerTask() { @Override public void run() { - runOnUiThread(() -> onUpdateStatisticInfo()); + runOnUiThread(() -> { + onUpdateSensorInfo(); + onUpdateStatisticInfo(); + }); } - }, 1000, 1000); // 1000 毫秒后执行,之后每隔 1000 毫秒执行一次 + }, 1000, 1000); + + mSensorInfoTextView = findViewById(R.id.cas_sensor_view); + mSensorInfoTextView.setTextColor(Color.GREEN); + + mSensorInfoCheckBox = findViewById(R.id.cas_sensor_checkBox); + mSensorInfoCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { + if (isChecked) { + mSensorInfoTextView.setVisibility(View.VISIBLE); + float density = getResources().getDisplayMetrics().density; + mSensorInfoTextView.setHeight((int) (50 * density)); + } else { + mSensorInfoTextView.setVisibility(View.INVISIBLE); + } + }); mNavigationTextView = findViewById(R.id.cas_navigaiton); mNavigationTextView.setOnTouchListener(new View.OnTouchListener() { @@ -360,6 +381,16 @@ public class CasCloudPhoneActivity extends FragmentActivity implements IHandleDa mStatisticsTextView.setText(str); } + public void onUpdateSensorInfo() { + if (mSensorInfoTextView.getVisibility() != View.VISIBLE) { + return; + } + + String str = "传感器启停状况>>"; + str += mCloudPhone.getSensorStatusInfo(); + mSensorInfoTextView.setText(str); + } + /** * Activity:onStart */ diff --git a/app/src/main/res/layout/cas_activity_fullscreen.xml b/app/src/main/res/layout/cas_activity_fullscreen.xml index f170d41..841ede1 100644 --- a/app/src/main/res/layout/cas_activity_fullscreen.xml +++ b/app/src/main/res/layout/cas_activity_fullscreen.xml @@ -24,6 +24,15 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="165dp" + android:layout_marginStart="20dp" + android:layout_gravity="start" /> + + + + sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor sensor: sensorList) { - mSensorActiveMap.put(sensor.getId(), false); + int type = sensor.getType(); + if (type >= Sensor.TYPE_DEVICE_PRIVATE_BASE) { + continue; + } + mSensorActiveMap.put(type, false); } } @@ -107,8 +108,163 @@ public class VirtualSensor implements SensorEventListener { mSensorManager.unregisterListener(this, mSensor); } - public void printSensorStatus() { - Log.i(TAG, mSensorActiveMap.toString()); + public String getSensorStatus() { +// Log.i(TAG, mSensorActiveMap.toString()); + StringBuilder status = new StringBuilder(); + + for (Map.Entry entry : mSensorActiveMap.entrySet()) { + status.append("\n"); + status.append(getSensorNameByType(entry.getKey())); + status.append(" : "); + if (entry.getValue()) { + status.append("启用"); + } else { + status.append("关闭"); + } + } + return status.toString(); + } + + private String getSensorNameByType(Integer type) { + String sensorName; + switch (type) { + case 1 : { + sensorName = "加速度传感器"; + break; + } + case 2 : { + sensorName = "磁力传感器"; + break; + } + case 3 : { + sensorName = "方向传感器"; + break; + } + case 4 : { + sensorName = "陀螺仪"; + break; + } + case 5 : { + sensorName = "光线传感器"; + break; + } + case 6 : { + sensorName = "压力传感器"; + break; + } + case 7 : { + sensorName = "温度传感器2"; + break; + } + case 8 : { + sensorName = "接近传感器"; + break; + } + case 9 : { + sensorName = "重力传感器"; + break; + } + case 10 : { + sensorName = "线性加速度传感器"; + break; + } + case 11 : { + sensorName = "旋转矢量传感器"; + break; + } + case 12 : { + sensorName = "湿度传感器"; + break; + } + case 13 : { + sensorName = "温度传感器"; + break; + } + case 14 : { + sensorName = "未校准磁力传感器"; + break; + } + case 15 : { + sensorName = "游戏矢量传感器"; + break; + } + case 16 : { + sensorName = "未校准陀螺仪"; + break; + } + case 17 : { + sensorName = "大幅动作传感器"; + break; + } + case 18 : { + sensorName = "步数检测器"; + break; + } + case 19 : { + sensorName = "计步器"; + break; + } + case 20 : { + sensorName = "地磁旋转矢量传感器"; + break; + } + case 21 : { + sensorName = "心率传感器"; + break; + } + case 22 : { + sensorName = "倾斜检测传感器"; + break; + } + case 23 : { + sensorName = "手势唤醒传感器"; + break; + } + case 24 : { + sensorName = "快览手势传感器"; + break; + } + case 25 : { + sensorName = "唤醒手势传感器"; + break; + } + case 26 : { + sensorName = "抬腕倾斜传感器"; + break; + } + case 27 : { + sensorName = "设备方向传感器"; + break; + } + case 28 : { + sensorName = "6向姿势传感器"; + break; + } + case 29 : { + sensorName = "静止检测传感器"; + break; + } + case 30 : { + sensorName = "运动检测传感器"; + break; + } + case 31 : { + sensorName = "心跳传感器"; + break; + } + case 34 : { + sensorName = "低延迟离开身体检测"; + break; + } + case 35 : { + sensorName = "未校准加速度传感器"; + break; + } + default: { + sensorName = type.toString(); + } + } + return sensorName; } @Override diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java index fe3100f..40410e7 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensorManager.java @@ -24,7 +24,6 @@ import android.hardware.SensorEvent; import android.hardware.SensorManager; import android.util.Log; -import com.huawei.cloudphone.common.CASLog; import com.huawei.cloudphone.virtualdevice.common.IVirtualDeviceDataListener; import com.huawei.cloudphone.virtualdevice.common.VirtualDeviceManager; import com.huawei.cloudphone.virtualdevice.common.VirtualDeviceProtocol; @@ -100,8 +99,8 @@ public class VirtualSensorManager extends VirtualDeviceManager { mVirtualSensor.stop(); } - public void printSensorStatus() { - mVirtualSensor.printSensorStatus(); + public String getSensorStatus() { + return mVirtualSensor.getSensorStatus(); } class SensorDataListener implements IVirtualDeviceDataListener { -- Gitee From 48718d8e865478c76670ab9326a9f271c2e1e18a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E8=BE=B9=E4=B8=80=E6=9C=B5=E4=BA=91?= Date: Tue, 2 Jul 2024 14:53:15 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BC=A0=E6=84=9F=E5=99=A8=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=EF=BC=8C=E6=B6=88=E9=99=A4=E9=AD=94=E9=AC=BC=E6=95=B0?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../virtualdevice/sensor/VirtualSensor.java | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java index 81a375e..aa98225 100644 --- a/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java +++ b/cloudphone/src/main/java/com/huawei/cloudphone/virtualdevice/sensor/VirtualSensor.java @@ -128,87 +128,87 @@ public class VirtualSensor implements SensorEventListener { private String getSensorNameByType(Integer type) { String sensorName; switch (type) { - case 1 : { + case Sensor.TYPE_ACCELEROMETER : { sensorName = "加速度传感器"; break; } - case 2 : { + case Sensor.TYPE_MAGNETIC_FIELD : { sensorName = "磁力传感器"; break; } - case 3 : { + case Sensor.TYPE_ORIENTATION: { sensorName = "方向传感器"; break; } - case 4 : { + case Sensor.TYPE_GYROSCOPE : { sensorName = "陀螺仪"; break; } - case 5 : { + case Sensor.TYPE_LIGHT : { sensorName = "光线传感器"; break; } - case 6 : { + case Sensor.TYPE_PRESSURE : { sensorName = "压力传感器"; break; } - case 7 : { + case Sensor.TYPE_TEMPERATURE : { sensorName = "温度传感器2"; break; } - case 8 : { + case Sensor.TYPE_PROXIMITY : { sensorName = "接近传感器"; break; } - case 9 : { + case Sensor.TYPE_GRAVITY : { sensorName = "重力传感器"; break; } - case 10 : { + case Sensor.TYPE_LINEAR_ACCELERATION : { sensorName = "线性加速度传感器"; break; } - case 11 : { + case Sensor.TYPE_ROTATION_VECTOR : { sensorName = "旋转矢量传感器"; break; } - case 12 : { + case Sensor.TYPE_RELATIVE_HUMIDITY : { sensorName = "湿度传感器"; break; } - case 13 : { + case Sensor.TYPE_AMBIENT_TEMPERATURE : { sensorName = "温度传感器"; break; } - case 14 : { + case Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED : { sensorName = "未校准磁力传感器"; break; } - case 15 : { + case Sensor.TYPE_GAME_ROTATION_VECTOR : { sensorName = "游戏矢量传感器"; break; } - case 16 : { + case Sensor.TYPE_GYROSCOPE_UNCALIBRATED : { sensorName = "未校准陀螺仪"; break; } - case 17 : { + case Sensor.TYPE_SIGNIFICANT_MOTION : { sensorName = "大幅动作传感器"; break; } - case 18 : { + case Sensor.TYPE_STEP_DETECTOR : { sensorName = "步数检测器"; break; } - case 19 : { + case Sensor.TYPE_STEP_COUNTER : { sensorName = "计步器"; break; } - case 20 : { + case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR : { sensorName = "地磁旋转矢量传感器"; break; } - case 21 : { + case Sensor.TYPE_HEART_RATE : { sensorName = "心率传感器"; break; } @@ -236,27 +236,27 @@ public class VirtualSensor implements SensorEventListener { sensorName = "设备方向传感器"; break; } - case 28 : { + case Sensor.TYPE_POSE_6DOF : { sensorName = "6向姿势传感器"; break; } - case 29 : { + case Sensor.TYPE_STATIONARY_DETECT : { sensorName = "静止检测传感器"; break; } - case 30 : { + case Sensor.TYPE_MOTION_DETECT : { sensorName = "运动检测传感器"; break; } - case 31 : { + case Sensor.TYPE_HEART_BEAT : { sensorName = "心跳传感器"; break; } - case 34 : { + case Sensor.TYPE_LOW_LATENCY_OFFBODY_DETECT : { sensorName = "低延迟离开身体检测"; break; } - case 35 : { + case Sensor.TYPE_ACCELEROMETER_UNCALIBRATED : { sensorName = "未校准加速度传感器"; break; } -- Gitee From 232fee522e8fb9b43359b5b1ed8a84430d04affc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E8=BE=B9=E4=B8=80=E6=9C=B5=E4=BA=91?= Date: Tue, 2 Jul 2024 19:25:48 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=8A=E8=A1=8C?= =?UTF-8?q?=E6=8C=87=E4=BB=A4=E7=A0=81=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloudphone/src/main/cpp/CasController.cpp | 6 ++++ .../src/main/cpp/libs/Arm64/libmtrans.a | Bin 36909354 -> 36914360 bytes .../main/cpp/libs/mtrans/include/net_trans.h | 1 + .../cpp/libs/mtrans/include/net_trans_def.h | 27 ++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/cloudphone/src/main/cpp/CasController.cpp b/cloudphone/src/main/cpp/CasController.cpp index c95668f..67b059c 100644 --- a/cloudphone/src/main/cpp/CasController.cpp +++ b/cloudphone/src/main/cpp/CasController.cpp @@ -1365,6 +1365,12 @@ std::string CasController::GetVideoRecvStats() { } else { stream << "音频接收码率 : " << audioStats.recvBitrate << "kbps" << std::endl; } + StreamSendStats cmdSendStats{}; + if (0 != m_mtrans->GetCmdSendStats(&cmdSendStats)) { + WARN("GetCmdSendStats failed"); + } else { + stream << "指令发送码率(需操作):" << cmdSendStats.encBitrate << "kbps" << std::endl; + } } #endif stream << "帧率 : " << GetCurrentFPS() << "fps" << std::endl; diff --git a/cloudphone/src/main/cpp/libs/Arm64/libmtrans.a b/cloudphone/src/main/cpp/libs/Arm64/libmtrans.a index af361d9ba15ba74d1dd334dee88284ea8cca3b87..1306a9e703a6f76f085da496d2aef1022cb0e303 100644 GIT binary patch delta 250516 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