Android 探测装置定向
我需要检测android设备方向的变化,而不需要手动播放传感器数据,同时保持活动方向与某些方向一致Android 探测装置定向,android,automation,accelerometer,autorotate,Android,Automation,Accelerometer,Autorotate,我需要检测android设备方向的变化,而不需要手动播放传感器数据,同时保持活动方向与某些方向一致 onConfigurationChange将不起作用,因为它会使我的活动不旋转 围绕传感器数据来检测方向的变化,我认为作为一个车轮的发明,因为Android已经实现了检测设备朝向变化的算法的嵌入式实现。从另一方面来说,方向变化的检测并不是像这样简单的检查 public void onSensorChanged(SensorEvent event) { if (event.s
onConfigurationChange
将不起作用,因为它会使我的活动不旋转
围绕传感器数据来检测方向的变化,我认为作为一个车轮的发明,因为Android已经实现了检测设备朝向变化的算法的嵌入式实现。从另一方面来说,方向变化的检测并不是像这样简单的检查
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER || event.values.length < 3) {
return;
}
//getResources().getConfiguration().orientation;
if (event.values[1] < 6.5 && event.values[1] > -6.5) {
if (orientation!=1) {
Log.d("Sensor", "Protrait");
}
orientation=1;
} else {
if (orientation!=0) {
Log.d("Sensor", "Landscape");
}
orientation=0;
}
}
传感器更改时的公共无效(传感器事件){
if(event.sensor.getType()!=sensor.TYPE|加速计| event.values.length<3){
返回;
}
//getResources().getConfiguration().orientation;
if(事件值[1]<6.5&&event.values[1]>-6.5){
如果(方向!=1){
Log.d(“传感器”、“保护器”);
}
方向=1;
}否则{
如果(方向!=0){
Log.d(“传感器”、“景观”);
}
方向=0;
}
}
它确实需要真正的数据处理,比如过滤噪音和突然的短暂震动/旋转
那么,您知道如何使用传统服务检测设备方向吗?(再一次,我会将我的活动固定在某个方向上,这样配置更改将不起作用)有一个方向事件的侦听器
我希望这将对您有所帮助我的活动设置为始终处于纵向模式。将此代码放在一次创建中
myOrientationEventListener = new OrientationEventListener(this,SensorManager.SENSOR_DELAY_NORMAL) {
public void onOrientationChanged(int arg0) {
if (arg0>=315 || arg0<45){
currentOrientation = Surface.ROTATION_90;
}else if (arg0>=45 && arg0<135){
currentOrientation = Surface.ROTATION_180;
}else if (arg0>=135 && arg0<225){
currentOrientation = Surface.ROTATION_270;
}else if (arg0>=225 && arg0<315){
currentOrientation = Surface.ROTATION_0;
}
}
};
myOrientationEventListener=新方向EventListener(此为SensorManager.SENSOR\u DELAY\u正常){
公共无效onOrientationChanged(int arg0){
如果(arg0>=315 | | arg0=45&&arg0=135&&arg0=225&&arg0通过在清单中设置screenOrientation
属性,您将无法从OnConfiguration Changed
中获取方向值,因为它将停止触发,可以实现SensorEventListener
以获得俯仰
、滚动
和yaw
角度来计算方向,但对于这样的任务来说,这有点复杂,而且有点过分。我找到的最佳解决方案是使用OrientationEventListener
,以下代码将在方向更改时更新旋转值,该值根据旋转角度为0到4:
private OrientationEventListener listener;
private int rotation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
rotation = ((orientation + 45) / 90) % 4;
}
};
if (listener.canDetectOrientation()) listener.enable();
else listener = null; // Orientation detection not supported
}
@Override
protected void onDestroy() {
super.onDestroy();
if (listener != null) listener.disable();
}
这不是你想要的吗???不,我没有任何可以改变的资源谢谢,这正是我需要的!!!尊敬!!!我是新安卓,但似乎很多安卓开发者都不知道这一点,即使在stackoverflowYou欢迎Deimus,没有人是完美的,每个人都有自己的专业领域,我刚刚开始使用过去的3-5天:)愉快的指导这对我帮助很大。当活动锁定在方向上,但您仍然需要获取设备位置时,这是正确的方法:)