我正在尝试使用OrientationEventListener
检测手机是否发生了方向更改,但代码无法正常工作。以下是与此问题相关的代码的一部分:
public class MainActivity extends Activity {
OrientationEventListener myOrientationEventListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
myOrientationEventListener
= new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL){
@Override
public void onOrientationChanged(int arg0) {
DO SOMETHING;
}
};
if (myOrientationEventListener.canDetectOrientation()) {
myOrientationEventListener.enable();
}
如果我在第DO SOMETHING
行调试模式中设置断点并且没有移动电话,请查看arg0
的值,我看到它变为8然后是9然后是8等等我输入onOrientationChanged
功能的时间。
我的问题是:为什么它会进入onOrientationChanged功能,虽然手机放在桌子上而不动?。第二个问题是为什么arg0
的值在8和9之间变化?
顺便说一句我使用android:screenOrientation="portrait"
中的AndroidManifest.xml
强制我的主要布局为肖像。
代码中是否有我遗漏或不正确的内容? 提前感谢您提供任何帮助。
答案 0 :(得分:1)
这不是答案,但我没有足够的声誉将其添加为评论:
我有一个微笑的情况。我有一个固定在纵向模式的应用程序,我使用OrientationEventListener&& onOrientationChanged来监视设备旋转。换句话说,我的设置与TJ1非常相似。
我在上面的测试中观察到的代码在某些设备上工作正常,但后来我有一个设备(Nokia6,api27),其中代码无效。根本没有调用“onOrientationChanged”-fn。
(有点偏离主题,然后我问了一个与此主题相关的问题: OrientationEventListener vs Rotation Vector Sensor to get “orientation” )