2

我有以下代码使用光传感器,但无法显示 event.value [0] 的值...它仅显示消息“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

4 回答 4

2

你注册了监听器。使用传感器分为三个部分

  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) {
    }
    
于 2017-03-09T13:08:02.503 回答
1

Galaxy S实际上有光传感器硬件。
接近感测由光传感器设备完成。更多关于这个here

为确保您正确激活和使用光传感器,请
验证是否getSensorList(TYPE_LIGHT)返回有效的光传感器。

此后按照此链接所示进行。

于 2012-10-17T06:17:11.120 回答
0

我不认为它包含光传感器为什么它什么都不返回,否则你的代码看起来很好,

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

按照此链接检查您正在测试的模型并查看功能,然后查看传感器

于 2012-10-17T05:39:11.927 回答
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);
    }

}
于 2012-10-17T08:24:19.970 回答