加速度+按钮

问题描述:

早安各位!加速度+按钮

我有以下烦恼:我有传感器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); 
    } 

} 

这应该是工作!

+0

Thanksss !!我会尝试一下,对你说! – 2013-03-27 16:16:34

+0

没有问题,suerte;) – 2013-03-27 16:17:07

+0

hablas西班牙语LO编译佩罗我哒fallo – 2013-03-27 16:27:21