2010-11-08 5 views
3

Je suis prêt à être humilié à ce sujet, mais je ne suis pas sûr de ce qui ne va pas. Je suis juste en train de jouer avec le développement Android et je fais juste une application simple qui va imprimer un accéléromètre à un TextView.Android SensorEventListener syntaxe

Lors de la création du SensorEventListener, je reçois une erreur de syntaxe

(dit, est nécessaire pour terminer la déclaration)

code exact en question:

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); 
      } 
     } 
    } 
} 

est un code complet ici si nécessaire

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); 
    } 



} 

et voici l'activité:

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; 
    } 

} 

merci pour toute aide. ceci est ma référence: reference project

Répondre

2

Comme il est dit, il vous manque a;

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

Ahh ... eh bien je suis un idiot. Devinez éclipse prend un moment à rafraîchir parfois. Merci mbaird –