Android Light Sensor

下面这段话都能看懂吧~

Here I am explaining you how to use Light Sensor of Android.
1. Implement SensorEventListener
2. Create variable for SensorManager and Sensor
3. Get Object of SensorManager using system service
4. Get Object of Light Sensor from SensorManager
5. Implement onAccuracyChanged and onSensorChanged method


package com.test;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;

public class Test extends Activity implements SensorEventListener{

 private SensorManager mSensorManager;
 private Sensor mLight;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

   mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
         mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

 }
 @Override
 protected void onResume() {
   mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
  super.onResume();
 }
 @Override
 protected void onPause() {
  mSensorManager.unregisterListener(this);
  super.onPause();
 }
 public void onAccuracyChanged(Sensor sensor, int accuracy) {
   if(sensor.getType() == Sensor.TYPE_LIGHT){
    Log.i("Sensor Changed", "Accuracy :" + accuracy);
   }
  
 }

 public void onSensorChanged(SensorEvent event) {
  if( event.sensor.getType() == Sensor.TYPE_LIGHT){
   Log.i("Sensor Changed", "onSensor Change :" + event.values[0]);
  }
  
 }
}

所有传感器:

package androidegg.stu.sensor;

import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidEggSensorGetValueActivity extends Activity implements SensorEventListener{    //...①
    /** Called when the activity is first created. */
    private SensorManager sensorManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //SensorManager的接口取得
        sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE);
        setContentView(R.layout.main);
    }
    
    @Override
    protected void onResume(){                                                //...②
        super.onResume();
        List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
        
        //sensor1
        for (Sensor s : sensors){
            sensorManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL);
        }              
    }
    
    //
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void onSensorChanged(SensorEvent e) {                                   //...③
        // TODO Auto-generated method stub
        switch(e.sensor.getType()){
            //加速度的值表示
            case Sensor.TYPE_ACCELEROMETER:{
                TextView x = (TextView)findViewById(R.id.x);
                x.setText("x:" + String.valueOf(e.values[SensorManager.DATA_X]));
                TextView y = (TextView)findViewById(R.id.y);
                y.setText("y:" + String.valueOf(e.values[SensorManager.DATA_Y]));
                TextView z =(TextView)findViewById(R.id.z);
                z.setText("z:" + String.valueOf(e.values[SensorManager.DATA_Z]));
                break;
            }
            //倾斜度的值表示
            case Sensor.TYPE_ORIENTATION:{
                TextView x = (TextView)findViewById(R.id.Azimuth);
                x.setText("Azimuth" + String.valueOf(e.values[SensorManager.DATA_X]));
                
                TextView y = (TextView)findViewById(R.id.Pitch);
                y.setText("Pitch:" + String.valueOf(e.values[SensorManager.DATA_Y]));
                
                TextView z = (TextView)findViewById(R.id.Roll);
                z.setText("Roll:" + String.valueOf(e.values[SensorManager.DATA_Z]));
                break;
            }
            //磁力计 的值表示
            case Sensor.TYPE_MAGNETIC_FIELD:{
                TextView x = (TextView)findViewById(R.id.magnetic_x);
                x.setText("x:" + String.valueOf(e.values[SensorManager.DATA_X]));
                TextView y = (TextView)findViewById(R.id.magnetic_y);
                y.setText("y:" + String.valueOf(e.values[SensorManager.DATA_Y]));
                
                TextView z= (TextView)findViewById(R.id.magnetic_z);
                z.setText("z:" + String.valueOf(e.values[SensorManager.DATA_Z]));
                break;
            }
            //温度計の値を表示する
            case Sensor.TYPE_TEMPERATURE:{
                TextView x = (TextView)findViewById(R.id.degree);
                x.setText("Degree:" + String.valueOf(e.values[SensorManager.DATA_X]));
            }
        }
    
    }  
    //
    @Override
    protected void onStop(){
        super.onStop();                                                      //...④
        sensorManager.unregisterListener(this);
    }
}
重要事项如下所示
① 为了取得传感器的值,需要加载SensorEventListener
② 在onResume方法进行*********的登录
③ 在onSensorChanged方法中取得传感器的值,并在画面表示。
     在这个方法中在onResume方法中登录的所有种类的传感器的值都可以取道。判别传感器的种类,将传感器的值用
     TextView在画面表示出来。
④ 在onStop方法中接触所有登录的*********。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值