Датчик света Xperia Arc S - PullRequest
       33

Датчик света Xperia Arc S

0 голосов
/ 08 февраля 2012

Я пытаюсь разработать простое приложение для Android с использованием датчика освещенности. К сожалению, хотя у моего SE Xperia Arc S есть датчик освещенности, я не могу заставить его работать. Простой код, представленный ниже, возвращает ноль. Я проверял датчик света в Сервисном тесте, используя * # * # 7378423 # * # * и Сервисный тест -> Датчик внешнего освещения, и он там работает.

Возвращает ноль:

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

Этот код возвращает список датчиков, отсутствующий датчик света:

mySensorManager.getSensorList(Sensor.TYPE_ALL);

Я проверил приложения датчиков освещенности на рынке, тоже не работает.

Информация о телефоне:

LT18i, версия Android: 2.3.4, компиляция: 4.0.2.A.0.42

Есть идеи?

Спасибо за помощь.

1 Ответ

0 голосов
/ 14 февраля 2012

Camera.Parameters.FLASH_MODE_TORCH замена для Android 2.1

Проверьте ссылку выше.Я использовал это, чтобы проверить на Arc S. Это работает.

Датчик API не поддерживает датчик освещенности в Xperia Arc S. Вам необходимо получить доступ к датчику освещенности с помощью Camera 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());
    }
}

Просто скопировал код из вышеуказанной ссылки, чтобы сделать его более понятным.

...