gpt4 book ai didi

java - 加速度计应用

转载 作者:行者123 更新时间:2023-12-01 15:22:01 25 4
gpt4 key购买 nike

我必须做一个通过摇动手机返回随机数的应用程序。我用一个按钮做了它,效果很好。问题出在加速度计上。即使我没有错误,它也不起作用。

import java.util.Random;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class RandomButtonActivity extends Activity implements SensorEventListener
{
Button tasto1;

TextView testo;
TextView message;

EditText limiteMin;
EditText limiteMax;

Random generator = new Random();

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

testo = (TextView) findViewById(R.id.textView1);

limiteMin = (EditText) findViewById(R.id.editText2);
limiteMax = (EditText) findViewById(R.id.EditText01);
}

public void onSensorChanged(SensorEvent event)
{
Sensor sensor = event.sensor;
if (sensor.getType()==Sensor.TYPE_ACCELEROMETER)
{
int j = Integer.parseInt(limiteMin.getText().toString());
int i = Integer.parseInt(limiteMax.getText().toString())-j;
int x = 0;

if(i==0 && j==0)
{
x = generator.nextInt();

while(x<0)
{
x = generator.nextInt();
}
}

else
{
if(j>=i)
{
i = 0;
j = 0;
}
else
{
x = generator.nextInt(i+1)+j;
testo.setText(""+x);

}
}
testo.setText(""+x);
}

else
{

}
}

public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
}

在互联网上查找此代码应该可以正常工作。我没有对 XML 文件执行任何操作。

编辑:

我添加:

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"

到 Android:manifest 但没有任何改变。

最佳答案

您似乎从未将您的类添加为事件监听器。这段代码对我有用:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//This is what you are missing:
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);
}
public void onSensorChanged(SensorEvent event)
{
Sensor sensor = event.sensor;
if (sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
/// Do something
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}

像这样重写 onResume/onStop/onPause 也是一个好主意

@Override protected void onResume() 
{
super.onResume();
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}

@Override protected void onStop()
{
sm.unregisterListener(this);
super.onStop();
}

正如埃内尔提到的,始终记住在 list 中拥有所需的权限。

关于java - 加速度计应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758171/

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