티스토리 뷰
센서의 정보 얻어오기
센서의 이름 getName()
센서의 타입 getType()
센서의 최대 범위 값 getMaximumRange()
센서의 제조사 getVendor()
센서의 버전 getVersion()
센서 매개변수
중력센서 TYPE_GRAVITY
방향센서 TYPE_ORIENTATION
조도센서 TYPE_LIGHT
자기장센서 TYPE_MAGNETIC_FIELD
압력센서 TYPE_PRESURE
자이로스코프센서 TYPE_GYROSCOPE
가속도센서 TYPE_ACCELEROMETER
센서 반응속도
최대한 빠르게 SENSOR_DELAY_FASTEST
게임속도 SENSOR_DELAY_GAME
UI 인터페이스 적합 SENSOR_DELAY_UI
가장 느린 속도 SENSOR_DELAY_NORMAL
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/img_light"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/light_off"/>
<Button
android:id="@+id/btn_bright"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="밝게"/>
<Button
android:id="@+id/btn_dark"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="어둡게"/>
</LinearLayout>
package com.jw.lightapp;
import androidx.appcompat.app.AppCompatActivity;
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.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity implements SensorEventListener {
SensorManager sm;
Sensor sensor;
ImageView imagelight;
Button btn_bright, btn_dark;
float brightValue = 0.5f;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imagelight = findViewById(R.id.img_light);
btn_bright = findViewById(R.id.btn_bright);
btn_dark = findViewById(R.id.btn_dark);
sm = (SensorManager)getSystemService(SENSOR_SERVICE);
sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
//센서 매개변수
//중력센서 TYPE_GRAVITY
//방향센서 TYPE_ORIENTATION
//조도센서 TYPE_LIGHT
//자기장센서 TYPE_MAGNETIC_FIELD
//압력센서 TYPE_PRESURE
//자이로스코프센서 TYPE_GYROSCOPE
//가속도센서 TYPE_ACCELEROMETER
btn_dark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
brightValue -= 0.1f;
if(brightValue <= 0 ) brightValue = 0;
if(brightValue >= 1 ) brightValue = 1.0f;
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = brightValue;
getWindow().setAttributes(layoutParams);
}
});
btn_bright.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
brightValue += 0.1f;
if(brightValue <= 0 ) brightValue = 0;
if(brightValue >= 1 ) brightValue = 1.0f;
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = brightValue;
getWindow().setAttributes(layoutParams);
}
});
}
@Override
protected void onResume(){
super.onResume();
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
//센서 반응속도
//최대한 빠르게 SENSOR_DELAY_FASTEST
//게임속도 SENSOR_DELAY_GAME
//UI 인터페이스 적합 SENSOR_DELAY_UI
//가장 느린 속도 SENSOR_DELAY_NORMAL
}
@Override
protected void onPause(){
super.onPause();
sm.unregisterListener(this);
}
protected void onDestroy(){
super.onDestroy();
}
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_LIGHT){
int lux = (int) event.values[0];
if(lux < 70){
imagelight.setImageResource(R.drawable.light_on);
}else{
imagelight.setImageResource(R.drawable.light_off);
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
'프로그래밍 > 안드로이드 앱프로그래밍' 카테고리의 다른 글
안드로이드 만보기 소스코드 (0) | 2021.10.06 |
---|---|
안드로이드 점프 카운트하기 (0) | 2021.10.05 |
내 휴대폰에서 센서 알아보기 (0) | 2021.09.30 |
국가코드 가져와서 TTS에 알맞게 언어 바꾸기 (0) | 2021.06.28 |
안드로이드 보상형 광고 google admob 버젼 20.2.0 (0) | 2021.06.19 |
댓글