停止或暂停按钮 - 加速度计

时间:2014-08-19 20:39:50

标签: android xml

我是新手,我需要一些帮助。想找到与我的问题相似的东西,但我无法修复它。 我发现了一个带有3轴(X,Y,Z)的加速器的代码,我试图添加一个按钮来停止这个过程并“记录”这三个值(只是为了阻止它们)。谁能帮我?

这是代码:

package course.examples.Sensors.ShowValues;


public class SensorRawAccelerometerActivity extends Activity implements
        SensorEventListener {


    private static final int UPDATE_THRESHOLD = 500;
    private SensorManager mSensorManager;
    private Sensor mAccelerometer;

    private TextView mXValueView, mYValueView, mZValueView;
    private long mLastUpdate;

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

        mXValueView = (TextView) findViewById(R.id.x_value_view);
        mYValueView = (TextView) findViewById(R.id.y_value_view);
        mZValueView = (TextView) findViewById(R.id.z_value_view);

        // Get reference to SensorManager
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

        // Get reference to Accelerometer
        if (null == (mAccelerometer = mSensorManager
                .getDefaultSensor(Sensor.TYPE_ACCELEROMETER)))
            finish();

    }

    // Register listener
    @Override
    protected void onResume() {
        super.onResume();

        mSensorManager.registerListener(this, mAccelerometer,
                SensorManager.SENSOR_DELAY_UI);

        mLastUpdate = System.currentTimeMillis();

    }

    // Unregister listener
    @Override
    protected void onPause() {
        mSensorManager.unregisterListener(this);
        super.onPause();
    }

    // Process new reading
    @Override
    public void onSensorChanged(SensorEvent event) {

        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

            long actualTime = System.currentTimeMillis();

            if (actualTime - mLastUpdate > UPDATE_THRESHOLD) {

                mLastUpdate = actualTime;

                float x = event.values[0], y = event.values[1], z = event.values[2];

                mXValueView.setText(String.valueOf(x));
                mYValueView.setText(String.valueOf(y));
                mZValueView.setText(String.valueOf(z));

            }
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // N/A
    }

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >





    <TextView
        android:id="@+id/x_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:padding="5dp"
        android:text="@string/raw_x_string"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/y_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/x_value"
        android:padding="5dp"
        android:text="@string/raw_y_string"
        android:textSize="24sp" />



    <TextView
        android:id="@+id/z_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/y_value"
        android:padding="5dp"
        android:text="@string/raw_z_string"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/x_value_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/x_value"
        android:padding="5dp"
        android:textSize="24sp" />


    <TextView
        android:id="@+id/y_value_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/x_value_view"
        android:layout_toRightOf="@+id/y_value"
        android:padding="5dp"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/z_value_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/y_value_view"
        android:layout_toRightOf="@+id/z_value"
        android:padding="5dp"
        android:textSize="24sp" />

</RelativeLayout>

非常感谢你! 最好的问候!

1 个答案:

答案 0 :(得分:0)

首先使用属性

为XML文件添加一个按钮
android:onClick="myMethodName"

在您的活动中创建一个新的私有布尔变量,以跟踪您是否正在更新(在这种情况下,我称之为更新)。修改您的活动以包括:

public void myMethodName(View v)
{
    //if updating, stop updating. if not updating, start updating
    updating = !updating;
}

只要按下按钮,就会调用此方法。此方法的名称必须与您在XML中的onClick字段中放置的内容相匹配。最后,将onSensorChanged方法修改为如下所示:

onSensorChanged(Event e)
{
    if(updating)
    {
    //do everything else you already do here
    }
}

现在它会更新,直到按下按钮,此时它将停止更新,但会继续显示最后一个值,直到再次按下该按钮。