2013-07-17 2 views
4

Я хочу проверить, есть ли у Android-устройства акселерометр или нет, чтобы я мог поставить тост-сообщение о том, что игра не будет работать должным образом на текущем устройстве, если нет акселерометра. Я ищу что-то вроде этого:Как определить, имеет ли устройство Android Accelerometer?

if(DEVICE_HAS_ACCELEROMETER == false){ 
Toast.makeText(context,"No Accelerometer Found.",Toast.LENGTH_LONG).show(); 
} 

Если вы можете заполнить DEVICE_HAS_ACCELEROMETER части, что будет делать эту работу.

PS: У меня нет активности.

ответ

7
SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); 
Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
if (accelerometerSensor != null) 
{ 
    // Device has Accelerometer 
} 
2
boolean accelerometer; 

accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

if(accelerometer) 
{ 
. 
. 
} 
+0

Не работает. Метод «sManager.registerListener (SensorListener listener, int sensors)» устарел. И когда мы даем «это» как параметр, я получаю ошибку: метод registerListener (SensorListener, int) в типе SensorManager не применим для аргументов (GameView, Sensor) – Sierox

0

Это будет работать:

SensorManager Sensors = (SensorManager)getSystemService(SENSOR_SERVICE); 
Sensor mAccelerometer = Sensors.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

mAccelerometer будет иметь accelerometre Валу.

From here.

+0

Проверьте изменение. – amalBit

0
accelerometer = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

if(accelerometer) 
{ 

} 
+0

Не работает. Метод «sManager.registerListener (SensorListener listener, int sensors)» устарел. И когда мы даем «это» в качестве параметра, я получаю ошибку: метод registerListener (SensorListener, int) в типе SensorManager не применим для аргументов (GameView, Sensor) – Sierox

0
SensorManager sManager; 
acce = sManager.registerListener(this,sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

if(acce) 
{ 

} 
+0

Не работает. Метод «sManager.registerListener (SensorListener listener, int sensors)» устарел. И когда мы даем «это» как параметр, я получаю ошибку: метод registerListener (SensorListener, int) в типе SensorManager не применим для аргументов (GameView, Sensor) – Sierox

2

ли что-то вроде следующего,

SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
List<Sensor> s=sensorManager.getSensorList(Sensor.TYPE_ALL); 
for (int i=0;i<s.size();i++) 
    { 
     Sensor tmp = s.get(i); 
     if (tmp.getType() == Sensor.TYPE_ACCELEROMETER) 
     DEVICE_HAS_ACCELEROMETER=true; 
     else 
     DEVICE_HAS_ACCELEROMETER=false; 

} 
0

Вы также можете проверить его с помощью PackageManger в одной строке.

boolean isAccSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER); 
Смежные вопросы