我正在尝试使用光传感器开发简单的Android应用。不幸的是,尽管我的SE Xperia Arc S确实有光传感器但我无法使其工作。下面给出的简单代码返回null。我正在服务测试中检查光传感器使用*#*#7378423#*#*和服务测试 - >环境光传感器,它正在那里工作。
返回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
有什么想法吗?
感谢您的帮助。
答案 0 :(得分:0)
Camera.Parameters.FLASH_MODE_TORCH replacement for 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());
}
}
只需复制上述链接中的代码即可使其更加清晰。