Androidの近接センサーアプリを作ってみました


前書き

趣味でAndroidアプリを開発しているものです!ハーフミラーディスプレーを作ろうと、近接センサーのアプリを開発して見ました。軽く便利なショートカットを書きつづ、近接センサーアプリの開発についてを議事録として残します。

開発環境

開発環境
* Android Studio 2.2.3
* Mac OSX Sierra

デバッグに使った実機
* Xperia(TM) ZL2 SOL25
* Android 5.0 lollipop

Android Studioの便利なショートカット

ラブラリーをインポート - alt + Enter

interfaceのabstractメソッドを自動追加 - Cmd + N でcode generateのメニューが開き、そのままiを打つと、implement methodsが絞られて↓キー移動しなくてもすぐ選択できます。

近接センサーのコード

public class MainActivity extends AppCompatActivity implements SensorEventListener {

    private SensorManager mSensorManager;
    private Sensor mProximity;

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

        // センサーオブジェクトを取得
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        // 近接センサーのオブジェクトを取得
        mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

    }

    @Override
    protected void onResume() {
        super.onResume();
     // 近接センサーを有効
        mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // 近接センサーを無効
        mSensorManager.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            // values = 5 or 0
            if (event.values[0] > 0 ) {
                //near
                Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show();
            } else {
                //far
                Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
            }
        }
    }

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

    }
}

Githubにまとめました。
https://github.com/edisonthk/ProximitySensorTest

余談

Eclipseを使ってAndroid開発していた2年前のごろは Java Development Kit(以降、JDK)のインストールは必須でしたが、Android StudioはJDKなくても開発できました。ただし、 react nativeを使うと JDK のインストールは必須になります。