2013-03-27 45 views
0

早安各位!加速度+按鈕

我有以下煩惱:我有傳感器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 

} 

} 

` 

回答

1

宥有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