Android のセンサー (合計)

現在では、画面の明るさを自動で調整する機能(光センサー)や、携帯電話を振る機能(加速度センサー)など、携帯電話の多くの機能がセンサーによって完結しています。しかし、Android のセンサーが何であるか知っていますか?

Android の公式表示によると、Android センサーは 3 つのカテゴリに分類できます

Android プラットフォームは 3 種類のセンサーをサポートしています。

  • モーションセンサー

    これらのセンサーは、3 軸に沿った加速度と回転力を測定します。このカテゴリには、加速度センサー、重力センサー、ジャイロスコープ、回転ベクトル センサーが含まれます。

  • 環境センサー

    これらのセンサーは、周囲の気温と圧力、照度、湿度などのさまざまな環境パラメータを測定します。このカテゴリには、気圧計、光度計、温度計が含まれます。

  • 位置センサー

    これらのセンサーは、デバイスの物理的な位置を測定します。このカテゴリには、方位センサーと磁力計が含まれます。

現在スマートフォンでサポートされている一般的なセンサー

センサー Javaでの名前 ローカルインターフェース名 価値
加速度計 TYPE_ACCELEROMETER                 SENSOR_TYPE_ACCELEROMETER   1
磁界センサー タイプ_マグネティック_フィールド センサータイプ_マグネティック_フィールド  2
方向センサー TYPE_ORIENTATION SENSOR_TYPE_ORIENTATION  3
ジャイロセンサー タイプ_ジャイロスコープ SENSOR_TYPE_GYROSCOPE   4
光センサー タイプライト センサータイプ_ライト  5
圧力センサー タイプ_圧力 センサータイプ_圧力     6
温度センサー TYPE_AMBIENT_TEMPERATURE センサータイプ_温度 7
距離センサー TYPE_PROXIMITY SENSOR_TYPE_PROXIMITY    8

次に、3種類のセンサーについて説明します。

タイプ 1: モーションセンサー

センサーの可能なアーキテクチャは、センサーの種類によって異なります。

  • 重力、線形加速度、回転ベクトル、アクティブ モーション、歩数カウンター、および歩数検出センサーは、ハードウェアまたはソフトウェア ベースです。
  • 加速度センサーとジャイロセンサーは常にハードウェアベースです。

2 番目のタイプ: 環境センサー

Android プラットフォームには、さまざまな環境属性を監視できる環境センサーとして 4 つのセンサーが用意されています。これらのセンサーを使用して、Android デバイスの近くの相対周囲湿度、照度、周囲圧力、周囲温度を監視できます。4 つの環境センサーはすべてハードウェア ベースであり、デバイス メーカーがデバイスに組み込んだ後にのみ使用できます。

3 番目のタイプ: 距離センサー

Android プラットフォームは、地磁気センサーと加速度センサーという、デバイスの位置を特定できる 2 つのセンサーを備えた距離センサーを提供します。Android プラットフォームには、デバイスの顔と物体との間の距離を測定できるセンサー(近接センサーと呼ばれます) も提供されています。地磁気センサーと近接センサーはハードウェアベースです。ほとんどの携帯電話やタブレットのメーカーには地磁気センサーが搭載されています。同様に、携帯電話のメーカーは、携帯電話がユーザーの顔に近づけられたとき (通話中など) を判断するための近接センサーを搭載していることがよくあります。デバイスの向きを判断するには、デバイスの加速度計と地磁気センサーからの測定値を使用できます。

紹介から始めましょう

センサーフレーム

クラス/インターフェース 導入
センサーマネージャー このクラスを使用して、センサー サービスのインスタンスを作成できます。このクラスは、センサーへのアクセスと一覧表示、センサー イベント リスナーの登録と登録解除、および方向情報の取得のためのさまざまなメソッドを提供します。このクラスは、センサーの精度の報告、データ取得速度の設定、センサーの校正のためのいくつかのセンサー定数も提供します。
センサー このクラスを使用して、特定のセンサーのインスタンスを作成できます。このクラスは、センサーの機能を決定できるさまざまなメソッドを提供します。
センサーイベント システムは、このクラスを使用して、センサー イベントに関する情報を提供するセンサー イベント オブジェクトを作成します。センサー イベント オブジェクトには、生のセンサー データ、イベントを生成したセンサーの種類、データの精度、イベントのタイムスタンプなどの情報が含まれます。
センサーイベントリスナー このインターフェイスを使用して、センサー値が変化したとき、またはセンサーの精度が変化したときに通知 (センサー イベント) を受信する 2 つのコールバック メソッドを作成できます。

センサーマネージャーオブジェクトを取得する

// 获取传感器管理者对象
SensorManager mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

指定されたセンサーオブジェクトを取得します

//获取全部的传感器
List list = sensorManager.getSensorList(Sensor.TYPE_ALL);
// 获取指定的传感器
Sensor sensor = mSensorManager.getDefaultSensor(int type);
//例:获取加速度传感器
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

登録を解除する

//解除注册--不要忘记了,把它加在合适的地方
sensorManager.unregisterListener(this,sensor);

完全なセンサー コードを取得する

public class SensorActivity extends AppCompatActivity {

    private SensorManager sensorManager;
    private List<Sensor> list;
    private Button mGetSensor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor);
        mGetSensor = findViewById(R.id.get_sensor);
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        list = sensorManager.getSensorList(Sensor.TYPE_ALL);
        mGetSensor.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setSensor();
            }
        });
    }

    public void setSensor() {
        Log.d("传感器:", "一共有" + list.size() + "个传感器");
        for (int i = 0; i < list.size(); i++) {
            String sensortext = "对应的type" + list.get(i).getType()
                    + "  设备名称:" + list.get(i).getName()
                    + "  设备版本:" + list.get(i).getVersion()
                    + "  供应商:" + list.get(i).getVendor();
            switch (list.get(i).getType()) {
                case Sensor.TYPE_ACCELEROMETER:
                    Log.d("传感器:", "加速度传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_GYROSCOPE:
                    Log.d("传感器:", "陀螺仪传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_LIGHT:
                    Log.d("传感器:", "环境光线传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_MAGNETIC_FIELD:
                    Log.d("传感器:", "电磁场传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_ORIENTATION:
                    Log.d("传感器:", "方向传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_PRESSURE:
                    Log.d("传感器:", "压力传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_PROXIMITY:
                    Log.d("传感器:", "距离传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_TEMPERATURE:
                    Log.d("传感器:", "温度传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_GRAVITY:
                    Log.d("传感器:", "重力传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_LINEAR_ACCELERATION:
                    Log.d("传感器:", "线性加速度传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_ROTATION_VECTOR:
                    Log.d("传感器:", "旋转矢量传感器-->" + sensortext);
                    break;
                case Sensor.TYPE_RELATIVE_HUMIDITY:
                    Log.d("传感器:", "周围环境相对湿度传感器-->" + sensortext);
                    break;
            }
        }
    }
}

各種センサーの詳しい使い方については後述

ポータル

Androidのセンサー---加速度センサー

Android のセンサー --- 磁場センサー

Android のセンサー --- 光センサー

Android のセンサー --- 温度センサー

 

おすすめ

転載: blog.csdn.net/lanrenxiaowen/article/details/108051656