簡體   English   中英

Xperia Arc S光傳感器

[英]Xperia Arc S Light Sensor

我正在嘗試使用光傳感器開發簡單的Android應用。 不幸的是,盡管我的SE Xperia Arc S確實有光傳感器,但我無法正常工作。 下面顯示的簡單代碼返回null。 我正在使用*#*#7378423#*#*和Service Test-> Ambient Light Sensor在服務測試中檢查光傳感器,並且它在那里正常工作。

返回null:

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

有任何想法嗎?

感謝幫助。

Camera.Parameters.FLASH_MODE_TORCH替換為Android 2.1

檢查上面的鏈接。 我用它在Arc S上進行了測試。

Xperia Arc S中的傳感器API不支持光傳感器。您需要使用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());
    }
}

只需復制上面鏈接中的代碼即可使其更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM