如何确定Android设备是否具有加速度计?

7

我想检查一下Android设备是否有加速度计,以便在当前设备上没有加速度计的情况下放置一个提示信息,告知游戏可能无法正常运行。我正在寻找类似以下代码:

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

如果您能填写DEVICE_HAS_ACCELEROMETER部分,那就可以完成工作。
PS:我不在一个活动中。
7个回答

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

3
boolean accelerometer;

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

if(accelerometer) 
{
.
.
}

不起作用。方法“sManager.registerListener(SensorListener listener,int sensors)”已过时。当我们将“this”作为参数传递时,会出现错误:类型SensorManager中的registerListener(SensorListener,int)方法不适用于参数(GameView,Sensor)。 - Sierox

3

按照以下方式执行:

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;

 }

1

This will work:

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

mAccelerometer将具有加速度计值。

从这里开始。


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

if(accelerometer) 
{

}

不起作用。方法“sManager.registerListener(SensorListener listener,int sensors)”已过时。当我们将“this”作为参数传递时,会出现错误:“类型SensorManager中的registerListener(SensorListener,int)方法不适用于参数(GameView,Sensor)”。 - Sierox

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

if(acce) 
{

}

不起作用。方法“sManager.registerListener(SensorListener listener,int sensors)”已过时。当我们将“this”作为参数传递时,会出现错误:“类型SensorManager中的registerListener(SensorListener,int)方法不适用于参数(GameView,Sensor)”。 - Sierox

0

你也可以通过一行代码在PackageManger中检查它。

boolean isAccSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接