gpt4 book ai didi

android - 如何检测android中的翻转 Action ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:13:36 25 4
gpt4 key购买 nike

如果用户打开电话,我想通过停止文本到语音朗读来对此作出 react 。这对我的应用程序来说是个不错的功能,但我如何才能检测到这个 Action 呢?我对运动传感器不是很熟悉,而且我在任何地方都找不到这个特定的运动监听器,主要是屏幕方向。感谢您的帮助!

最佳答案

此示例 Activity 演示了如何使用设备的重力传感器来检测设备何时被翻转。在方法 onSensorChanged() 中,术语 factor 确定“翻转”必须完成的程度。典型范围可能是 0.7 到 0.95。

Android API 9 中添加了对重力传感器的支持。并非所有设备都有重力传感器。

public class MainActivity extends AppCompatActivity implements SensorEventListener {

private static final String TAG = "Demo";

private SensorManager mSensorManager;
private Sensor mGravitySensor;
private boolean mFacingDown;

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// nothing
}

@Override
public void onSensorChanged(SensorEvent event) {
final float factor = 0.95F;

if (event.sensor == mGravitySensor) {
boolean nowDown = event.values[2] < -SensorManager.GRAVITY_EARTH * factor;
if (nowDown != mFacingDown) {
if (nowDown) {
Log.i(TAG, "DOWN");
} else {
Log.i(TAG, "UP");
}
mFacingDown = nowDown;
}
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mGravitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

if (mGravitySensor == null) {
Log.w(TAG, "Device has no gravity sensor");
}
}

@Override
protected void onResume() {
super.onResume();
if (mGravitySensor != null) {
mSensorManager.registerListener(this, mGravitySensor, SensorManager.SENSOR_DELAY_NORMAL);
}
}

@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}

关于android - 如何检测android中的翻转 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com