Android-光照、加速度传感器

手机上的光照传感器会周围光的强度改变而产生不同的数据,SensorManager用来管理手机上的各种传感器,首先得获得一个传感器管理,然后告诉管理自己想要使用的传感器,为传感器添加监听事件,来获取传感器的数据,通过管理自己想要使用的传感器注册,使用完后要注销。其他传感器方式类同。

加速度传感器,手机在立体世界中,有一个x轴,y轴,z轴,面向地下的那个轴的加速度会接近重力加速度9.8m/s2,如果摇一摇手机,手机的加速度就会大于9.8,假设一个参考加速度为15,如果大于这个值就默认手机在摇动。

import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;
TextView textView;
TextView textTwo;
Button lightbtn;
Button accularbtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = findViewById(R.id.textview);
    textTwo = findViewById(R.id.textTwo);
    lightbtn = findViewById(R.id.lightbtn);
    accularbtn = findViewById(R.id.accularbtn);

        LightSensor();
        accelerSensor();

    accularbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onDestroy();//注销法一
        }
    });

    lightbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sensorManager.unregisterListener(listeners);//注销法二
        }
    });

}

void LightSensor()
{
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);//获得一个传感器管理
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);//获得所需传感器
    sensorManager.registerListener(listeners,sensor,SensorManager.SENSOR_DELAY_NORMAL);//注册传感器
}

private  SensorEventListener listeners = new SensorEventListener() {//光照传感器监听事件
    @Override
    public void onSensorChanged(SensorEvent event) {
        float value = event.values[0];
        textView.setText("Current light level is " + value + "lx");
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
};
void accelerSensor()//加速度传感器监听事件
{
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onDestroy()//重写onDestroy方法
{
    super.onDestroy();
    if(sensorManager!=null)
    {
        sensorManager.unregisterListener(listener);//注销
    }
}

private SensorEventListener listener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        float x = Math.abs(event.values[0]);
        float y = Math.abs(event.values[1]);
        float z = Math.abs(event.values[2]);
        if(x>=15 || y>=15 || z>=15) {
            Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
            textTwo.setText("摇一摇");
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值