我有以下代码使用光传感器,但无法显示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);
}
}
答案 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)
您是否注册了听众?使用传感器有三个部分
创建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);
}
注册您正在收听的传感器
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLightSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
实现第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) {
}