0

我正在尝试使用光传感器开发简单的 Android 应用程序。不幸的是,虽然我的 SE Xperia Arc S 确实有光传感器,但我无法让它工作。下面给出的简单代码返回 null。我正在使用 *#*#7378423#*#* 和 Service Test -> Ambient Light Sensor 在服务测试中检查光传感器,它在那里工作。

返回空值:

sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
return mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

此代码返回传感器列表,缺少光传感器:

mySensorManager.getSensorList(Sensor.TYPE_ALL);

我检查了市场上的光传感器应用程序,也不起作用。

电话信息:

LT18i,安卓版本:2.3.4,编译:4.0.2.A.0.42

有任何想法吗?

感谢帮助。

4

1 回答 1

0

Android 2.1 的 Camera.Parameters.FLASH_MODE_TORCH 替代品

检查上面的链接。我用它在 Arc S 上进行测试。它有效。

传感器 API 不支持 Xperia Arc S 中的光传感器。您需要使用相机 API 访问光传感器。您可以使用以下代码。

/***
 * Attempts to set camera flash torch/flashlight mode on/off
 * @param isOn true = on, false = off
 * @return boolean whether or not we were able to set it
 */
public boolean setFlashlight(boolean isOn)
{
    if (mCamera == null)
    {
        return false;
    }
    Camera.Parameters params = mCamera.getParameters();
    String value;
    if (isOn) // we are being ask to turn it on
    {
        value = Camera.Parameters.FLASH_MODE_TORCH;
    }
    else  // we are being asked to turn it off
    {
        value =  Camera.Parameters.FLASH_MODE_AUTO;
    }

    try{    
        params.setFlashMode(value);
        mCamera.setParameters(params);

        String nowMode = mCamera.getParameters().getFlashMode();

        if (isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH))
        {
            return true;
        }
        if (! isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO))
        {
            return true;
        }
        return false;
    }
    catch (Exception ex)
    {
        MyLog.e(mLOG_TAG, this.getClass().getSimpleName() +  " error setting flash mode to: "+ value + " " + ex.toString());
    }
}

只需从上面的链接中复制代码以使其更清晰。

于 2012-02-13T20:01:08.637 回答