手機中的光線傳感器()實現監聽
手機中的傳感器:
具體佈局:
實現後的界面:
具體代碼實現:
//
// 手機光線傳感器監聽的實現Android版
// Created by Scarborough_Coral on 2017/3/3.
// Copyright © 2017年 Scarborough_Coral. All rights reserved.
//
package com.coral.lightsenor;
//需要導入的包
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;
public class MainActivity extends AppCompatActivity {
private TextView showLightPower;//用於顯示光照強度的文本視圖
private Button start;//按鈕,點擊開始監聽傳感器
private Button stop;//按鈕,點擊停止監聽傳感器
private SensorManager sensorManager;//傳感器管理器,用於獲取傳感器服務,和選擇傳感器類型
private Sensor sensor;//傳感器對象,儲存光線傳感器的數據
private SensorEventListener sensorEventListener;//傳感器事件監聽器,用於傳感器事件的監聽
/**
* 函數功能:入口函數
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//獲取並設置app佈局文件
setContentView(R.layout.activity_main);
//初始化控件
InitWidgets();
//初始化傳感器相關,包含傳感器管理器和傳感器的設定
InitSensors();
//設置按鈕點擊監聽器和傳感器事件監聽器
setListener();
}
/**
* 函數功能:初始化傳感器相關,包括傳感器管理器和傳感器類型
*/
private void InitSensors() {
sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);//初始化傳感器管理器
sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);//給傳感器初始化類型
}
/**
* 函數功能:通過匿名內部類的方式實現按鈕和傳感器監聽器接口,實現按鈕和傳感器的監聽
*/
private void setListener() {
sensorEventListener=new SensorEventListener() {
/**
* 函數功能:重寫傳感器參數改變時實現的方法
* @param event
*/
@Override
public void onSensorChanged(SensorEvent event) {
String showInfo="";//用於存儲傳感器的光強信息
showInfo="光照強度:"+event.values[0]+"勒克斯";
showLightPower.setText(showInfo);//設置TextView的顯示光線傳感器光強信息
}
/**
* 當傳感器參數精度改變時,可以通過本方法實現
* @param sensor
* @param accuracy
*/
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
//設置開始監聽按鈕被點擊時實現註冊傳感器事件監聽器
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sensorManager.registerListener(sensorEventListener,sensor,0);//註冊傳感器
}
});
//設置關閉監聽按鈕被點擊時實現取消註冊傳感器事件監聽器
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sensorManager.unregisterListener(sensorEventListener);
}
});
}
/**
* 函數功能:初始化控件
*/
private void InitWidgets() {
//獲取textview和button的實例
showLightPower= (TextView) findViewById(R.id.showLightPower);
start= (Button) findViewById(R.id.startListen);
stop= (Button) findViewById(R.id.stopListen);
}
}
這次博客文章就到這裏了,請多多支持……