2010-11-08 89 views
3

我准备在此遭到羞辱,但我不确定是什么错误。我只是在玩Android开发,并且只是制作一个简单的应用程序,将加速度计打印到TextView。Android SensorEventListener语法

在创建SensorEventListener,我得到一个语法错误

(说;需要完成的语句)有关

确切的代码:

private SensorEventListener listener = new SensorEventListener() { 
    public void onSensorChanged(SensorEvent e) { 
     if (e.sensor.getType()==Sensor.TYPE_ACCELEROMETER) { 
      xAxis = e.values[0]; 
      yAxis = e.values[1]; 
      zAxis = e.values[2]; 


      if (xThreshold > xAxis || yThreshold > yAxis || zThreshold > zAxis) { 
       alertUser(values); 
      } 
      else { 
       nonAlert(values); 
      } 
     } 
    } 
} 

这里如果需要

是完整的代码
import android.content.Context; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 

public class TiltMeter { 
    private SensorManager mgr = null; 
    private double xAxis = 0; 
    private double yAxis = 0; 
    private double zAxis = 0; 
    private double xThreshold = 0; 
    private double yThreshold = 0; 
    private double zThreshold = 0; 

    public TiltMeter(Context context, double xThreshold, double yThreshold, double zThreshold, TiltMeter.Callback cb) { 
     this.xThreshold = xThreshold; 
     this.yThreshold = yThreshold; 
     this.zThreshold = zThreshold; 


     mgr = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); 
     mgr.registerListener(listener, mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); 
    } 

    private SensorEventListener listener = new SensorEventListener() { 
     public void onSensorChanged(SensorEvent e) { 
      if (e.sensor.getType()==Sensor.TYPE_ACCELEROMETER) { 
       xAxis = e.values[0]; 
       yAxis = e.values[1]; 
       zAxis = e.values[2]; 


       if (xThreshold > xAxis || yThreshold > yAxis || zThreshold > zAxis) { 
        alertUser(values); 
       } 
       else { 
        nonAlert(values); 
       } 
      } 
     } 
    } 

    public void close() { 
     mgr.unregisterListener(listener); 
    } 

    public interface Callback { 
     double[] alertUser(double[] data); 
     double[] nonAlert(double[] data); 
    } 



} 

这里是活动:

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class TiltMeterActivity extends Activity 
    implements TiltMeter.Callback { 
    /** Called when the activity is first created. */ 

    TiltMeter tiltMeter = null; 

    TextView tvXAxis; 
    TextView tvYAxis; 
    TextView tvZAxis; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     tvXAxis = (TextView)findViewById(R.id.txtXAxisValue); 
     tvYAxis = (TextView)findViewById(R.id.txtYAxisValue); 
     tvZAxis = (TextView)findViewById(R.id.txtZAxisValue); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     tiltMeter.close(); 
    } 


    public double[] alertUser(double[] data) { 
     tvXAxis.setText(Double.toString(data[0])); 
     tvYAxis.setText(Double.toString(data[1])); 
     tvZAxis.setText(Double.toString(data[3])); 
     return null; 
    } 

    public double[] nonAlert(double[] data) { 
     tvXAxis.setText(Double.toString(data[0])); 
     tvYAxis.setText(Double.toString(data[1])); 
     tvZAxis.setText(Double.toString(data[3])); 
     return null; 
    } 

} 

感谢您的任何帮助。这是我的参考:reference project

回答

2

就像它说的,你错过了一个;

private SensorEventListener listener = new SensorEventListener() { 
    public void onSensorChanged(SensorEvent e) { 
    if (e.sensor.getType()==Sensor.TYPE_ACCELEROMETER) { 
     xAxis = e.values[0]; 
     yAxis = e.values[1]; 
     zAxis = e.values[2]; 


     if (xThreshold > xAxis || yThreshold > yAxis || zThreshold > zAxis) { 
      alertUser(values); 
     } 
     else { 
      nonAlert(values); 
     } 
    } 
    } 
}; 
+0

啊......我是个白痴。猜测日食有时需要一段时间才能刷新。谢谢mbaird – 2010-11-08 22:36:21