2022/08/21
前回は、Androidスマホに
QPythonをインストールし、スマホのバッテリの情報を吸い上げるアプリを作成しました。
そのサンプルプログラムで出力された結果はこんな感じでした。
technology: Li-ion
battery_present: True
health: 2
status: 2
plugged: 2
level: 56
temperature: 310
voltage: 3934
これらはAndroidのAPIの
BatteryManagerクラスの関数の戻り値でした。今回得られた結果を以下の表にまとめました。

PythonからAndroidのAPI関数を呼び出せるので、Javaのコードからも確認してみました。
コードはgithubにあったものを参考にさせてもらいました。その実行結果は以下の通りです。画面下部のBundleで書かれてある部分がAPIで取り込める全情報で、その内容をまとめたのが上部の表示です。

当然ですが、同じことがJavaからもできることが分かりました。
味をしめて、Androidスマホの
環境センサデータ(周囲の温度、湿度、気圧、照度)を取ってみようと思いました。これができれば、Raspberry Piにセンサ類をつけて表示しなくても、楽に周囲環境の情報が確認できますからね。早速、慣れないJavaでコーディングして実行しました。まずは自分のスマホにそのセンサが実装されているのかの確認です。作成したコードは以下の通り。
package com.example.sensortest;
import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
private Sensor temperature;
private Sensor humidity;
private Sensor pressure;
private Sensor illuminance;
TextView textSensorValue = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager)getSystemService(this.SENSOR_SERVICE);
textSensorValue = findViewById(R.id.text_info);
temperature = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
humidity = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
pressure = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
illuminance = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
String info = "Temperature: " + temperature + "\n";
info += ("Humidity: " + humidity + "\n");
info += ("Pressure: " + pressure + "\n");
info += ("Illuminance: " + illuminance + "\n");
textSensorValue.setText(info);
}
}
実行結果は以下の通り。照度のみROHMのセンサがついていることが分かりましたが、温度、湿度、圧力がnullです。

Androidスマホに実装されている全センサを確認する
コードがネット上にありましたので、念の為確認しました。結果、照度センサ(12)だけ実装済みであることが分かりました。年寄り携帯?(失礼!)の
京セラ製BASIO4には必要最小限のセンサしか実装されていないようですね。

今回触っているなかで自分のAndroidスマホに実装されているセンサが分かって来たので、その中で遊んでみようと思います。