有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java加速计+按钮

大家早上好

我有以下问题:我有传感器加速计,并添加了一个按钮,可以帮助我进入另一个意图,但不知道为什么这个按钮不工作!!!有什么建议吗??谢谢你的帮助

计划是这样的:

package com.dani;

import 安卓.app.Activity;
import 安卓.content.Intent;
import 安卓.hardware.Sensor;
import 安卓.hardware.SensorEvent;
import 安卓.hardware.SensorEventListener;
import 安卓.hardware.SensorManager;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.view.View.OnClickListener;
import 安卓.widget.Button;
import 安卓.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) 个答案

  1. # 1 楼答案

    如果你有两个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添加这一行(而不是com.example.stackoverflowtesting是您的packagename,我认为它是com.dani):

        <activity
            android:name="com.example.stackoverflowtesting.PruebaActivity"> 
        </activity>
    

    在PrueBactivity中执行此操作(例如,只需转到它,设置与第一个要测试的活动相同的视图,稍后将其更改为您想要的任何视图)

    public class PruebaActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fm);
        }
    
    }
    

    这应该有用