Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2012, 19:24
Avatar de uziel5
uziel5
 
Fecha de Ingreso: mayo-2011
Mensajes: 23
Antigüedad: 13 años, 7 meses
Puntos: 1
Problemas con context y registro de acelerometro

Hola, pues verán estoy queriendo implementar el acelerometro en una aplicación que estoy desarrollando, el problema es que al momento de registrarlo me arruina todo el proyecto y no veo cual sea el problema. Ahora les explico:

Tengo la siguiente clase PRINCIPAL:

Código:
Public class Main extends Juego{

//Algun metodo

}
Como verán mi clase está heredando de la super clase juego que a su vez hereda de Activity y es donde mando el contexto a mi clase que maneja las entradas del usuario:

Código:

public abstract class Juego extends Activity implements AndroidJuego{

Input input;

@Override
public void onCreate(Bundle savedInstanceState){
     super.onCreate(savedInstanceState);
     //mas codigo
     input = new InputJuego(this);
     //mas codigo
}

//mas codigo

}
La siguiente clase hace de intermediaria:

Código:
public class InputJuego extends Input{
     
     Accelerometro acelerometro;
     //mas codigo

     public InputJuego(Context context){
          acelerometro = new Acelerometro(context);
          //mas codigo
     }

     //mas codigo

}
Y ahora si la clase buena, que se encarga de registrarme el acelerometro:

Código:
public class Acelerometro implements SensorEventListener{
     public Acelerometro(Context context){
          SensorManager manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
          if(manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() > 0){
               Sensor acelerometro = manager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
               if(!manager.registerListener(this, acelerometro, SensorManager.SENSOR_DELAY_GAME))
                    Log.d("AccelerometerHandler", "No se ha podido registrar el acelerometro");
	 }else{
		Log.d("AcelerometerHandler", "El dispositivo no cuenta con acelerometro");
	 }
     }
}

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

	@Override
	public void onSensorChanged(SensorEvent event) {
               //mas código
	}
La linea del problema es la que se encuentra en negritas, por alguna razón no estoy obteniendo correctamente el SensorManager, lo curioso es que si lo corro desde el emulador de android se me traba la aplicación y si lo hago desde mi Galaxy Ace solo me tira error de registro de acelerometro en el logcat.

Por cierto, las clases que he puesto contienen mucho mas código, solo he puesto lo que he creído necesario, si alguien necesita mas información solo pídanmelo y yo se los pongo.

Espero que alguien me pueda ayudar.

Saludos