2012-03-21 2 views
0

Я работаю с акселерометром для андроида, я не понимаю, почему три оси для них, которые я назначил mSensorX, mSensorY и mSensorZ, обозначены как неиспользованные, когда я использовал их в onSensorChange, может кто-то помочь Я понимаю это.Код акселерометра

package com.example.imageaccel; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.widget.TextView; 


public class ImageAccelActivity extends Activity implements SensorEventListener { 
    /** Called when the activity is first created. */ 
    TextView x, y, z; 
    private float mSensorX; 
    private float mSensorY; 
    private float mSensorZ; 
    private Bitmap car; 


    private SensorManager sm = null; 
// Bitmap car1; 
// float x1, y1, z1, sensorX, sensorY, sensorZ; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    x = (TextView)findViewById(R.id.x_axis); 
    y = (TextView)findViewById(R.id.y_axis); 
    z = (TextView)findViewById(R.id.z_axis); 

    SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
    if (sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size() !=0){ 
     Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); 
     sm.registerListener(this, s, SensorManager.SENSOR_DELAY_NORMAL); 

    } 

} 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 

     sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     sm.unregisterListener(this); 
     super.onPause(); 
    } 
    @Override 

    public void onAccuracyChanged(Sensor arg0, int arg1) { 
     // TODO Auto-generated method stub 


    } 


    @Override 
    public void onSensorChanged(SensorEvent ev) { 
     // TODO Auto-generated method stub 

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

      mSensorX = ev.values[0]; 
      mSensorY = ev.values[1]; 
      mSensorZ = ev.values[2]; 


     } 

} 
     protected void onDraw(Canvas canvas) { 

       /* 
       * draw the background 
       */ 

       canvas.drawBitmap(car, 0, 0, null); 

    } 


     } 

ответ

1

Вы настройки их значение, но это только половина истории. Жалоба, скорее всего, никогда не будет , используя после этого. Это похоже на код C:

int main (void) { 
    int a = 1; 
    return 0; 
} 

Хотя это компилируется и работает нормально, вы получите предупреждение (используя gcc -Wall), что:

warning: unused variable 'a' 

Быстрый способ проверить эту теорию, поставить:

System.out.println (mSensorX + "," + mSensorY + "," + mSensorZ); 

(или какой-либо другой вид использования), следуя настройке, и посмотрите, исчезло ли предупреждение.

0

Я думаю, что есть предупреждение из-за заявления if .. В некоторых случаях они не будут использоваться и, следовательно, предупреждение .. Это мое мнение :)

Смежные вопросы