Android アプリ開発「MATRIX」

Androidアプリの開発に役立つサンプル集

端末で利用できるセンサーの一覧と詳細を取得してスクロール表示する方法

今回は、端末で利用できるセンサーの一覧を取得して表示してみたいと思います。

スマートフォンに内蔵されているセンサー数は10種類前後と多く、詳細を含めて表示すると画面からはみ出してしまいますので、TextViewをスクロールさせる必要があります。

サンプルコード(MainActivity) 

端末に内蔵されているセンサーの一覧はセンサーマネージャー(SensorManager)が持っていますので、そこからList形式で取り出しレイアウトファイルに配置してあるテキストビュー(TextView)で表示します。 

import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;
private TextView list;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//表示に使用するレイアウトをセット
setContentView(R.layout.activity_main);

//センサー一覧表示用のテキストボックスを取得
list = (TextView)findViewById(R.id.sensorlist);

//センサー情報にアクセスするためにセンサーマネージャーを取得
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

//センサーマネージャーから端末のすべてのセンサー情報をList形式で取得しsensorListに格納
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);

//表示用のString変数strを用意
String str = "";

//センサーリストからセンサーと詳細をすべて取り出してstr変数に格納
for(Sensor s : sensorList) {
str += "センサー名:" + s.getName() + "\n";
str += "メーカー:" + s.getVendor() + "\n";
str += "バージョン:" + s.getVersion() + "\n";
str += "消費電力:" + s.getPower() + "mA\n";
str += "最大レンジ:" + s.getMaximumRange() + "\n";
str += "最小遅延:" + s.getMinDelay() + "μs\n";
str += "最大遅延:" + s.getMaxDelay() + "μs\n";
str += "----------------------------------------" + "\n"; //区切り線
}

//最後にテキストボックスに文字列strをセットして表示
list.setText(str);
}

レイアウトコードサンプル(activity_main.xml) 

ポイントはセンサーの一覧を表示するテキストビュー(TextView)をスクロールビューの中に入れることです。こうすることで、テキストビューからはみ出た部分もスクロールして確認することができます。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="sample.sensorlist.MainActivity">

<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/sensorlist"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>

</RelativeLayout

実行した結果

端末で利用できるセンサーの一覧が表示されました。画面からはみ出た部分もスクロールすることで確認できます。

f:id:vw-dsg:20171212102616p:plain

END