【Android開発の基礎】携帯電話のセンサー情報の取得

I.はじめに

  • 説明: センサーの利用については、同じコラムにセンサー(方位センサー、加速度センサー)の利用に関する記事を投稿しましたが、このブログでは主に各携帯電話がサポートするセンサー情報の取得と、具体的なセンサーの利用方法に焦点を当てています。 . 自分で確認したり勉強したりする必要がある場合は、私とプライベートにチャットすることもできます。
  • ブログ: センサー (方向センサー、加速度センサー): http://t.csdn.cn/mLstV
  • 難易度: 初級
  • ナレッジポイント: センサー
  • 効果
    ここに画像の説明を挿入します

2. 理解する

1。概要

(まずは公式サイトのドキュメントをご覧ください)
ここに画像の説明を挿入します
(一般的な意味)

       ほとんどの Android デバイスには、動き、方向、さまざまな環境条件を測定できるセンサーが組み込まれています。これらのセンサーは、デバイスの動きや位置を 3 次元で監視したい場合や、デバイスの近くの周囲環境の変化を監視したい場合に、高い精度と精度を提供できます。たとえば、ゲームでは、デバイスの重力センサーからの読み取り値を追跡して、傾ける、振る、回転する、スイングなどの複雑なユーザーのジェスチャーや動きを推測することがあります。同様に、天気アプリはデバイスの温度センサーと湿度センサーを使用して露点を計算して報告したり、旅行アプリは地磁気センサーと加速度計を使用してコンパスの方位を報告したりする場合があります。

Android プラットフォームは、次の 3 つの主要なカテゴリのセンサーをサポートしています。

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

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

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

2. キー

すべてのセンサーを通過したい場合は、これが鍵です

ここに画像の説明を挿入します

List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL);

3. デザイン

センサー情報をトラバースしたいだけの場合は、BaseAdapter アダプターで十分です。

1.UIデザイン

(1) メインインターフェース
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/bin_sensor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="获取当前设备支持的传感器"/>

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>
(2)アダプターアイテム
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:textSize="18dp"/>
    
</LinearLayout>

2. エンコーディング

(1) データ(センサー情報)の取得
	private Button sensor;
    private SensorManager sm;
    private ListView list;
    private String[] adapterData;
    
    private void init() {
    
    
        list = findViewById(R.id.list);

        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = findViewById(R.id.bin_sensor);
        sensor.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL);
                adapterData = new String[sensors.size()];
                for (int i = 0;i < sensors.size();i++) {
    
    
                    adapterData[i] = sensors.get(i).getName();
                }
                // 初始化适配器
                initAdapter();
            }
        });
    }
(2) データの描画(アダプターの初期化)
    static class AppView{
    
    
        TextView name;
    }

    private void initAdapter() {
    
    
        BaseAdapter baseAdapter = new BaseAdapter() {
    
    
            @Override
            public int getCount() {
    
    
                return adapterData.length;
            }

            @Override
            public Object getItem(int position) {
    
    
                return adapterData[position];
            }

            @Override
            public long getItemId(int position) {
    
    
                return position;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
    
    
                AppView appView = null;
                if (convertView == null) {
    
    
                    convertView = View.inflate(MainActivity.this,R.layout.layout_item,null);
                    appView = new AppView();
                    appView.name = convertView.findViewById(R.id.name);
                    convertView.setTag(appView);
                } else {
    
    
                    appView = (AppView) convertView.getTag();
                }
                appView.name.setText(adapterData[position]);
                return convertView;
            }
        };
        list.setAdapter(baseAdapter);
    }

おすすめ

転載: blog.csdn.net/weixin_48916759/article/details/131291653