tôi đang sử dụng Google Cardboard(它的 HeadTracker
类)来检测 AR 应用程序中有关设备旋转的某些事情。效果很好。
但是,在某些设备上,它不起作用(没有任何反应)。我认为这是因为他们没有必要的传感器。我的问题:
1) 我想在运行时检测当前设备是否支持 HeadTracker,即它有可用的必要传感器。为此,我需要知道 HeadTracker 使用了哪些传感器,以便查询这些传感器是否存在。这些传感器是什么?
2) 有没有办法在 AndroidManifest 中指定必要的传感器?据我所知,没有办法。因此,如果用户下载我的应用程序,该应用程序必须在运行时通知用户他的设备不受支持。这不好。有什么想法吗?
Google cardboard 的网站有一个设备 compatibility list :似乎有些不完整,所以我尝试查看 Cardboard.jar 的 source code . HeadTracker.java 似乎有以下逻辑:
SensorManager sensorManager = (SensorManager)HeadTracker.this.mContext.getSystemService("sensor");
for (int sensorType : HeadTracker.INPUT_SENSORS) {
Sensor sensor = sensorManager.getDefaultSensor(sensorType);
sensorManager.registerListener(HeadTracker.this.mSensorEventListener, sensor, 0, handler);
}
将 INPUT_SENSORS 定义在与
相同的文件中
{TYPE_ACCELEROMETER, TYPE_GYROSCOPE};
我不确定 HeadTracker 是否可以在只有其中一个传感器的手机上工作。我的猜测是两者都是必要的。
您的应用可能需要某些审查器才能运行(甚至在 android 市场上可见),您的 list 中包含以下行:
您还可以使用 SensorManager 的在运行时检查传感器是否可用于您的应用public Sensor getDefaultSensor (int type)
chức năng.
Tôi là một lập trình viên xuất sắc, rất giỏi!