代码之家  ›  专栏  ›  技术社区  ›  blue-sky

Android wear emulator未触发SensorChanged事件

  •  0
  • blue-sky  · 技术社区  · 4 年前

    我有一个非常简单的手表应用程序,试图检测运动:

    package com.example.watchapp;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Context;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.hardware.TriggerEvent;
    import android.hardware.TriggerEventListener;
    import android.os.Bundle;
    import android.util.Log;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity implements SensorEventListener {
    
    
        private static final String TAG = "CUSTOM_TAG";
        private SensorManager sensorManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
            List<Sensor> deviceSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
    
            for (Sensor deviceSensor : deviceSensors) {
                System.out.println("sensor : " + deviceSensor.getName());
            }
    
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public final void onSensorChanged(SensorEvent event) {
            int sensorType = event.sensor.getType();
            switch (sensorType) {
                case Sensor.TYPE_ACCELEROMETER:
                    float valueX = event.values[0];
                    float valueY = event.values[1];
                    float valueZ = event.values[2];
                    System.out.println("Sensor Changed value:");
                    Log.d(TAG, "Sensor Changed value:" + valueX + ":" + valueY + ":" + valueZ);
                    break;
    
            }
        }
    
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
    
    
        }
    
    }
    

    使用模拟器模拟手机上的移动:

    enter image description here

    这个 onSensorChanged 事件似乎不会被触发,因为“Sensor Changed value:”不会打印到Android Studio控制台。是否有一个可穿戴应用程序的特定模拟器,我应该用它来模拟手表应用程序上的移动?或者我没有正确地编写应用程序?

    0 回复  |  直到 4 年前
        1
  •  -1
  •   blue-sky    4 年前

    我错误地假设使用androidstudio为三星设备开发应用程序。三星拥有自己的手表操作系统IDE环境。