简体   繁体   English

Xperia Arc S光传感器

[英]Xperia Arc S Light Sensor

I'm trying to develop simple Android app using light sensor. 我正在尝试使用光传感器开发简单的Android应用。 Unfortunately although my SE Xperia Arc S does have light sensor I can't get it working. 不幸的是,尽管我的SE Xperia Arc S确实有光传感器,但我无法正常工作。 Simple code presented below returns null. 下面显示的简单代码返回null。 I was checking light sensor in Service Test using *#*#7378423#*#* and Service Test -> Ambient Light Sensor and it is working there. 我正在使用*#*#7378423#*#*和Service Test-> Ambient Light Sensor在服务测试中检查光传感器,并且它在那里正常工作。

Returning null: 返回null:

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

This code returns list of sensors, missing light sensor: 此代码返回传感器列表,缺少光传感器:

mySensorManager.getSensorList(Sensor.TYPE_ALL);

I have checked light sensor apps in the market, doesn't work either. 我已经检查了市场上的光传感器应用程序,也不起作用。

Phone info: 电话信息:

LT18i, Android version: 2.3.4, Compilation: 4.0.2.A.0.42 LT18i,Android版本:2.3.4,编译:4.0.2.A.0.42

Any ideas? 有任何想法吗?

Thanks for help. 感谢帮助。

Camera.Parameters.FLASH_MODE_TORCH replacement for Android 2.1 Camera.Parameters.FLASH_MODE_TORCH替换为Android 2.1

Check the link above. 检查上面的链接。 I used this to test on an Arc S. It works. 我用它在Arc S上进行了测试。

The sensor API does not support light sensor in Xperia Arc S. You need to access Light sensor using Camera API. Xperia Arc S中的传感器API不支持光传感器。您需要使用Camera API访问光传感器。 You can use the following code. 您可以使用以下代码。

/***
 * 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());
    }
}

Just copied the code from the above link to make it more clear. 只需复制上面链接中的代码即可使其更加清晰。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM