m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

androidで照度センサーを試す

まあ、なんとなくわかってたけど

温度センサーとかは使えん(´・ω・`)
値の取得とかしたかったけど取れないので諦める

照度センサー

光の強さで値が大きくなるみたい
ちなみに自分のアパートの証明では60いかなかった

実装

Activity
package jp.mshige1979.app.samapleappsensor2;

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;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import org.w3c.dom.Text;


public class MainActivity extends Activity implements SensorEventListener{

    private SensorManager manager;

    // 照度センサー
    private Sensor lightSensor;

    // 表示用
    private TextView textview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //センサーマネージャを取得
        manager = (SensorManager) getSystemService(SENSOR_SERVICE);

        //センサマネージャから照度センサーを指定
        lightSensor = manager.getDefaultSensor(Sensor.TYPE_LIGHT);

        textview = (TextView)findViewById(R.id.textview);
        textview.setText("照度センサー = ");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // accuracy に変更があった時の処理
    }

    @Override
    public void onSensorChanged(SensorEvent event) {

        Sensor sensor = event.sensor;
        float[] values = event.values;
        long timestamp = event.timestamp;

        // 温度センサー
        if(sensor.getType() == Sensor.TYPE_LIGHT){
            // 温度
            Log.d("SENSOR_DATA", "TYPE_LIGHT = " + String.valueOf(values[0]));
            textview.setText("照度センサー = " + String.valueOf(values[0]));
        }
    }

    @Override
    protected void onResume() {
        super.onResume();

        // リスナー設定
        manager.registerListener (this,
                lightSensor,
                SensorManager.SENSOR_DELAY_FASTEST);
    }

    @Override
    protected void onPause() {
        super.onPause();

        // リスナー解除
        manager.unregisterListener(this,lightSensor);
    }
}

結果

f:id:m_shige1979:20150628190005p:plain

所感

明かりのあるなしのある程度の判定はできると思う。
使い道はいまいち思う付かないのでとりあえずこれはこのまま保留