加速度+按钮
问题描述:
早安各位!加速度+按钮
我有以下烦恼:我有传感器accelerometter并增加了一个按钮,它可以帮助我在另一个意图进入,但不知道为什么这个按钮不起作用!任何建议??谢谢你的帮助!
程序是这样的:
package com.dani;
import android.app.Activity;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class FM extends Activity implements SensorEventListener,OnClickListener{
private static final double nbElements = 30;
private SensorManager sensorManager;
private Sensor accelerometer;
Button boton1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fm);
boton1 = (Button) findViewById(R.id.button1);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
boolean accelSupported = sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (!accelSupported) {
sensorManager.unregisterListener(this, accelerometer);
((TextView) findViewById(R.id.textView1)).setText("Accelerometer not
detected");
}
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
long now = 0;
long time = 0;
int temp = 0;
public void onSensorChanged(SensorEvent event) {
long tS;
// only if the event is from the accelerometer
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
tS = event.timestamp;
if (now != 0) {
temp++;
if (temp == nbElements) {
time = tS - now;
((TextView) findViewById(R.id.textView1)).setText("Frecuencia : " +
(nbElements * 1000000000/time)
+ " Hz");
temp = 0;
}
}
// To set up now on the first event and do not change it while we do not have
"nbElements" events
if (temp == 0) {
now = tS;
}
}
boton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(FM.this,PruebaActivity.class));
}
});
}
public void onClickQuit(View v) {
finish();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
`
答
宥有2种的onClick方法,不实现OnClickListener,所以试下你这样的代码:
package com.dani;
import android.app.Activity;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class FM extends Activity implements SensorEventListener {
private static final double nbElements = 30;
private SensorManager sensorManager;
private Sensor accelerometer;
Button boton1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fm);
boton1 = (Button) findViewById(R.id.button1);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
boolean accelSupported = sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (!accelSupported) {
sensorManager.unregisterListener(this, accelerometer);
((TextView) findViewById(R.id.textView1)).setText("Accelerometer not
detected");
}
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
long now = 0;
long time = 0;
int temp = 0;
public void onSensorChanged(SensorEvent event) {
long tS;
// only if the event is from the accelerometer
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
tS = event.timestamp;
if (now != 0) {
temp++;
if (temp == nbElements) {
time = tS - now;
((TextView) findViewById(R.id.textView1)).setText("Frecuencia : " +
(nbElements * 1000000000/time)
+ " Hz");
temp = 0;
}
}
// To set up now on the first event and do not change it while we do not have
"nbElements" events
if (temp == 0) {
now = tS;
}
}
boton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(FM.this, PruebaActivity.class);
startActivity(i);
}
});
}
public void onClickQuit(View v) {
finish();
}
}
AndroidManifest.xml中加入这一行(而不是融为一体.example.stackoverflowtesting是你的软件包名,我认为它com.dani):
<activity
android:name="com.example.stackoverflowtesting.PruebaActivity">
</activity>
的d在PruebaActivity做到这一点(例如只是去把它设置相同的视图,第一个活动来进行测试,将其更改为任何你想要更高版本)
public class PruebaActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fm);
}
}
这应该是工作!
Thanksss !!我会尝试一下,对你说! – 2013-03-27 16:16:34
没有问题,suerte;) – 2013-03-27 16:17:07
hablas西班牙语LO编译佩罗我哒fallo – 2013-03-27 16:27:21