我有简单代码的问题:在mainActivity我需要检查传感器,例如光传感器是否在手机上可用,如果可用,我需要reed并在屏幕上显示这个senson的结果,但代码负责读取来自传感器的数据必须在单独的类中。我编写了简单的代码,但它不起作用。当我运行此代码时,我的手机只显示我:"亮度等级:0.0"。我是编程的初学者,所以请帮助我..
主要课程:
公共类MainActivity扩展了Activity {
LightSensor mLightSensor = null;
protected SensorManager mSensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView wyswietl = (TextView)findViewById(R.id.res);
mLightSensor = new LightSensor();
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT) != null){
LightSensor lS = new LightSensor();
wyswietl.setText("Light level: " + Float.toString(lS.lux));
}
else{
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onResume(){
super.onResume();
mLightSensor.register();
}
@Override
protected void onPause(){
super.onPause();
mLightSensor.unregister();
}
} 的
和LightSensor类:
的
的公共类LightSensor实现SensorEventListener {
SensorManager mSensorManager;
Sensor lightManager;
public float lux;
public Context context;
public void onCreateLight(Context context){
this.context = context;
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
lightManager = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
lux = event.values[0];
}
public void register(){
mSensorManager.registerListener(this, lightManager, SensorManager.SENSOR_DELAY_NORMAL);
}
public void unregister(){
mSensorManager.unregisterListener(this);
}
} 的
答案 0 :(得分:0)
我还没有对它进行测试,但您可以在LightSensor类中创建一个新方法,将lux变量返回给主类 类似的东西:
public float getLux(){
return lux;
}
然后在你的" MainActivity"你可以致电的课程
float newLux = mLightSensor.getLux();
如果它不起作用,我可能会有一个稍微复杂的解决方案。
答案 1 :(得分:0)
你永远不会调用mLightSensor.onCreateLight();
如何将onCreateLight更改为LightSensor类'构造函数。这样可以解决问题而不需要你记得调用onCreateLight。
public LightSensor(Context context){
this.context = context;
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
lightManager = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}