读取 LG P990 的 LightSensor
我正在尝试为我的 LG P990 开发一个光传感器应用程序来检测激光(不要问为什么)。
代码如下所示:
package soma.de.Light;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class LightSensorActivity extends Activity {
SensorManager mySensorManager;
Sensor myLightSensor;
TextView textLightSensorData;
TextView textLightSensor;
Button Start;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textLightSensor = (TextView)findViewById(R.id.tvLight);
textLightSensorData = (TextView)findViewById(R.id.tvAcc);
mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
myLightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Start = (Button)findViewById(R.id.btStart);
Start.setOnClickListener(btListener);
if (myLightSensor == null){
textLightSensor.setText("No Light Sensor!"); //THIS IS WHAT I GET!
}else{
textLightSensor.setText(myLightSensor.getName() + "\n " + myLightSensor.getResolution() );
mySensorManager.registerListener(lightSensorEventListener,
myLightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
}
private OnClickListener btListener = new OnClickListener()
{
public void onClick(View v){
myLightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (myLightSensor == null){
textLightSensor.setText("No Light Sensor!");
}else{
textLightSensor.setText(myLightSensor.getName() + "\n " + myLightSensor.getResolution() );
mySensorManager.registerListener(lightSensorEventListener,
myLightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
}
};
SensorEventListener lightSensorEventListener
= new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
if(arg0.sensor.getType()==Sensor.TYPE_LIGHT){
textLightSensorData.setText("Light Sensor Date:"
+ String.valueOf(arg0.values[0]));
}else if(arg0.sensor.getType()==Sensor.TYPE_PROXIMITY){
textLightSensorData.setText("Test "
+ String.valueOf(arg0.values[0]) +" " + String.valueOf(arg0.values[1]));
}
}};
}
但我的活动仅得到“无光传感器”回报。 LG P990 确实有一个。在“隐藏菜单”中,我可以看到 ALC/接近测试中光传感器的值。
我是否需要更改代码中的任何内容才能使其运行?
I am trying to Develop a Light Sensor App for my LG P990 to detect a Laser (don't ask why).
The Code looks like this:
package soma.de.Light;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class LightSensorActivity extends Activity {
SensorManager mySensorManager;
Sensor myLightSensor;
TextView textLightSensorData;
TextView textLightSensor;
Button Start;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textLightSensor = (TextView)findViewById(R.id.tvLight);
textLightSensorData = (TextView)findViewById(R.id.tvAcc);
mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
myLightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Start = (Button)findViewById(R.id.btStart);
Start.setOnClickListener(btListener);
if (myLightSensor == null){
textLightSensor.setText("No Light Sensor!"); //THIS IS WHAT I GET!
}else{
textLightSensor.setText(myLightSensor.getName() + "\n " + myLightSensor.getResolution() );
mySensorManager.registerListener(lightSensorEventListener,
myLightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
}
private OnClickListener btListener = new OnClickListener()
{
public void onClick(View v){
myLightSensor = mySensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (myLightSensor == null){
textLightSensor.setText("No Light Sensor!");
}else{
textLightSensor.setText(myLightSensor.getName() + "\n " + myLightSensor.getResolution() );
mySensorManager.registerListener(lightSensorEventListener,
myLightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
}
};
SensorEventListener lightSensorEventListener
= new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
if(arg0.sensor.getType()==Sensor.TYPE_LIGHT){
textLightSensorData.setText("Light Sensor Date:"
+ String.valueOf(arg0.values[0]));
}else if(arg0.sensor.getType()==Sensor.TYPE_PROXIMITY){
textLightSensorData.setText("Test "
+ String.valueOf(arg0.values[0]) +" " + String.valueOf(arg0.values[1]));
}
}};
}
But I only get a "No Light Sensor" return on my Activity.
The LG P990 does have one. In the "hidden menu" I can see the values of the light Sensor in the ALC / Proximity Test.
Do I have to change anything in my code to get it to run?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定
getDefaultSensor()
,但它的文档说:这就是我正在做的事情:
然后在您的
onSensorChanged()
方法中,事件.values[0]
为您提供光传感器的值,即 0..100 范围内的整数,即使我只看到了 10 和 100 的值:-)祝你好运,
not sure about
getDefaultSensor()
, but the documentation for it says:This is how I'm doing it:
And then in your
onSensorChanged()
method,event.values[0]
gives you the value of the light sensor, that is an integer in the 0..100 range, even if I have only seen values of 10 and 100 :-)Good luck,