如何获得光传感器值

时间:2012-10-17 05:14:38

标签: android sensor android-sensors

我有以下代码使用光传感器,但无法显示event.value [0]的值...它只显示Toast并显示消息“On SensorChanged” 还有文字没有设置为电视,我出错了..

这是代码

    public void onSensorChanged(SensorEvent event) 
    {
    if( event.sensor.getType() == Sensor.TYPE_LIGHT)
    {
        tv.setText("value: " + event.values[0] + " lux" );   
        Toast.makeText(getApplicationContext(),"On SensorChanged"+ event.values[0],Toast.LENGTH_SHORT).show();
        Log.d("Sensor Changed", "onSensor Change :" + brightness);
    }

}

4 个答案:

答案 0 :(得分:1)

Galaxy S 确实实际上有光传感器硬件 接近感测由光传感器装置完成。有关此 here 的更多信息。

为确保正确激活和使用光线传感器,
确认 getSensorList(TYPE_LIGHT) 返回有效的光线传感器。

然后按照 link

所示进行操作

答案 1 :(得分:0)

我不认为它包含光传感器,为什么它什么也没有返回,否则你的代码看起来不错,

http://www.gsmarena.com/samsung-phones-9.php

请点击此链接查看您正在测试的型号并查看功能和传感器

答案 2 :(得分:0)

现在我获得了传感器价值。但问题是如何将其分配给System.SCREEN_BRIGHTNESS。 我使用以下代码但不能分配它。仅在亮度设置中启用自动时才有效。

以下是代码

public void onSensorChanged(SensorEvent event) 
{
    if( event.sensor.getType() == Sensor.TYPE_LIGHT)
    {
        float currentLux = event.values[0];
        brightness=(int)event.values[0];
        brightbar.setProgress(brightness);
        tv2=(TextView)findViewById(R.id.textView2);
        tv2.setText("value:"+ currentLux+ " lux" );   
        System.putFloat(cResolver, System.SCREEN_BRIGHTNESS_MODE,currentLux);
        android.view.WindowManager.LayoutParams layoutpars = window.getAttributes();
        layoutpars.screenBrightness = currentLux;  
        window.setAttributes(layoutpars); 
        Log.d("Sensor Changed", "onSensor Change :" + currentLux);
    }

}

答案 3 :(得分:0)

您是否注册了听众?使用传感器有三个部分

  1. 创建SensorManager和传感器

    public class MainActivity extends AppCompatActivity implements SensorEventListener {
    
    private SensorManager mSensorManager = null;
    private Sensor mLightSensor = null;
    ...
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    }
    
  2. 注册您正在收听的传感器

    @Override
    protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mLightSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
    
  3. 实现第1部分中的SensorEventListener方法。

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
    
    if( sensorEvent.sensor.getType() == Sensor.TYPE_LIGHT)
    {
        Log.d("SensorTest", ""+ sensorEvent.values[0]);
    }
    }
    
    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {
    }
    
相关问题