C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

Android SDKのセンサー(Sensor)クラスで, 以下のようなセンサーの種類が定義されている.
定数名センサー名単位
TYPE_ACCELEROMETOR加速度センサーm/s^2
TYPE_GYROSCOPEジャイロセンサーrad/s
TYPE_LIGHT照度センサーlux
TYPE_MAGNETIC_FIELD磁界センサーuT
TYPE_ORIENTATION傾きセンサーdeg
TYPE_PRESSURE圧力センサーhPa
TYPE_PROXIMITY近接センサーcm
TYPE_TEMPERATURE温度センサー
上記は, Android 1.6で定義されているものであり, バージョンによっては新たなセンサーが追加されている場合がある.
注) API Level 8で, TYPE_ORIENTATIONは非推奨となった!

下記は, Android 2.3で追加されたものである.
定数名センサー名単位
TYPE_GRAVITY重力センサーm/s^2
TYPE_LINEAR_ACCELERATION直線化速度センサーm/s^2
TYPE_ROTATION_VECTOR回転ベクトルセンサー

下記は, Android 4.0で追加されたものである.
定数名センサー名単位
TYPE_AMBIENT_TEMPERATURE温度センサー
TYPE_RELATIVE_HUMIDITY湿度センサー%
注) TYPE_AMBIENT_TEMPERATUREの追加により, TYPE_TEMPERATUREは非推奨となった!

また, ハードウェアによるセンサーの実装は任意である.

そこで, Android端末が搭載してるセンサーの一覧を取得するには, センサー(Sensor)クラスとセンサーマネージャー(SensorManager)クラスを使用する.

センサー一覧の取得

  • Sensor01.java
    • getSystemServiceメソッドで, SENSOR_SERVICEを指定してSensorManagerのインスタンスを取得する.
    • SensorManager#getSensorListメソッドで, センサーのインスタンスの一覧を取得する.
    • Sendor#getNameメソッドで, 各センサーの名前を取得する.
package com.moonlight_aska.android.sensor01;

import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class Sensor01 extends Activity {
  private SensorManager manager;
  private TextView nameLists;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    nameLists = (TextView)findViewById(R.id.namelist_id);
    manager = (SensorManager)getSystemService(SENSOR_SERVICE);
  }

  @Override
  protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ALL);
    String str = "実装されているセンサー一覧:\n";
    for(Sensor s : sensors) {
      str += s.getName() + "\n";
    }
    nameLists.setText(str);
  }
}
  • 動作例
端末:SHARP SH-03C / Android 2.2


2011.10.30


2013.7.6
端末:Nexus 7 / Android 4.2


2013.7.7
端末:Nexus 10 / Android 4.2



コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます