Python

【スマホでプログラミング】Pythonでアプリ開発!【ダイアログ表示・センサ取得#2】

2019年3月18日

ダイアログやセンサーの機能を追加するときには、"androidhelper"というライブラリを使います。どのような関数があるかは、https://kylelk.github.io/html-examples/androidhelper.htmlを参照しています。他にも気になる機能がある方は見てみると良いでしょう。

ダイアログボックス

ボタン付きダイアログボックス

ダイアログが表示され、いずれかのボタンを押した際にトーストを表示する。

#-*-coding:utf8;-*-
#qpy:2
#qpy:console

import androidhelper as android

droid = android.Android()

droid.dialogCreateAlert('3つのボタン')
droid.dialogSetPositiveButtonText('はい')
droid.dialogSetNegativeButtonText('いいえ')
droid.dialogSetNeutralButtonText('キャンセル')
droid.dialogShow()
result = droid.dialogGetResponse().result
droid.dialogDismiss()

if result['which'] == 'positive':
    droid.makeToast('Yes')
elif result['which'] == 'negative':
    droid.makeToast('No')
elif result['which'] == 'neutral':
    droid.makeToast('Cancel')
else:
    droid.makeToast('cancel')

使用した関数

droid = androidhelper.Android()
ダイアログやセンサを使うときの宣言
droid.dialogCreateAlert()
ダイアログボックスを作成する
droid.dialogSetNeutralButtonText()
ダイアログボックスにニュートラルボタンが追加され、押されると'neutral'を返す
droid.dialogSetPositiveButtonText()
ダイアログボックスにポジティブボタンが追加され、押されると'positive'を返す
droid.dialogSetNegativeButtonText()
ダイアログボックスにネガティブボタンが追加され、押されると'negative'を返す
droid.dialogShow()
ダイアログボックスを表示する
result = droid.dialogGetResponse().result
ダイアログボックスで押されたボタンの戻り値をresult変数に保存
droid.makeToast()
引数の文字列のトーストを表示する
droid.dialogDismiss()
ダイアログボックスを消す

テキスト入力ダイアログボックス

テキストを入力できるダイアログボックスを作成し、入力した文字をトーストで表示する。

#-*-coding:utf8;-*-
#qpy:2
#qpy:console

import androidhelper as android

droid = android.Android()

droid.dialogCreateInput('テキスト入力','文字を入力してください')
droid.dialogSetPositiveButtonText('OK')
droid.dialogShow()
result = droid.dialogGetResponse().result
droid.dialogDismiss()

word = result['value']
droid.makeToast(word)

使用した関数

droid.dialogCreateInput()
テキストを入力するダイアログボックスを作成する

リスト選択ダイアログボックス

リストを選択させるダイアログボックスを作成し、押されたボタンの番号のトーストを表示する。

#-*-coding:utf8;-*-
#qpy:2
#qpy:console

import androidhelper as android

droid = android.Android()

droid.dialogCreateAlert('How to go')
droid.dialogSetItems(['Bike','Car','Plane'])
droid.dialogShow()
result = droid.dialogGetResponse().result
droid.dialogDismiss()
num = result['item']
droid.makeToast(str(num) + '番目を選択')

使用した関数

droid.dialogSetItems([])
選択できるリストをダイアログボックスに追加する。

ラジオボタン付きダイアログボックス

ラジオボタンで選択させるダイアログボックスを作成し、選択されたボタンの番号のトーストを表示する。

#-*-coding:utf8;-*-
#qpy:2
#qpy:console

import androidhelper as android

droid = android.Android()

droid.dialogCreateAlert('How to go')
droid.dialogSetSingleChoiceItems(['Bike','Car','Plane'])
droid.dialogSetPositiveButtonText('OK')
droid.dialogShow()
result = droid.dialogGetResponse().result
answer = droid.dialogGetSelectedItems().result
droid.dialogDismiss()
droid.makeToast(str(answer) + '番目を選択')

使用した関数

droid.dialogSetSingleChoiceItems([])
ラジオボタンをダイアログボックスに追加する
answer = droid,dialogGetSelectedItems().result
選択されたボタンの番号を変数answerに保存

センサによる値の取得

センサには、端末によって備わっているものが変わってきますが、加速度、角度、明るさ、位置センサ等があります。また、一つ一つにセンサの値を取得する関数がありますが、全てのセンサ情報を取得する関数もあります。

取得する値

特定の値のみを取得したい場合は、result['xforce']のようにすると、xforceの値のみを取得できます。

xMagx軸の磁界の強さ
yMagy軸の磁界の強さ
zMagz軸の磁界の強さ
azimuth方位
rollロール角
pitchピッチ角
xforce x軸の加速度
yforcey軸の加速度
zforcez軸の加速度
time取得時間
accuracy精度
light明るさ
droid.startSensingTimed()
センサの取得を開始する

その他の関数

droid.stopSensing()
センサの取得を終了する
result = droid.sensorsReadAccelerometer().result
加速度情報を取得し、変数resultに格納する
result = droid.sensorsReadOrientation().result
角度情報を取得し、変数resultに格納する
result = droid.getLastKnownLocation().result
位置情報を取得し、変数resultに格納する
result = droid.sensorsGetAccuracy().result
精度情報を取得し、変数resultに格納する
result = droid.sensorsReadMagnetometer().result   
磁界情報を取得し、変数resultに格納する
result = droid.readSensors().result
センサ情報を取得し、変数resultに格納する

その他情報を取得できる関数

バッテリー状態の取得

droid.batteryStartMonitoring()
バッテリー状態の取得を開始する
result = droid.readBatteryData().result
バッテリー状態の計測結果を変数resultに格納する
droid.batteryStopMonitoring
バッテリー状態の取得を終了する

バッテリー状態

status充電状態(1:不明、2:充電中、3:放電中、4:充電中ではない状態、5:フル充電)
health健康状態(1:不明、2:良い、3:オーバーヒート、4:故障、5:過電圧状態)
pluggedプラグ接続状態(1:不明、2:接続していない、3:AC電源接続、4:USBポート接続)
battery_presentバッテリー有無(True:接続している、False:接続していない)
levelバッテリーの残量(パーセント表示)
voltage電圧(ミリボルト表示)
tempreture温度表示
technology電池の種類(Li-ion,Li-poly etc...)

日時、時刻の取得

time.strftime()
日時、時刻の情報を取得する

日時、時刻の対応

%a曜日名(短縮)%d日付の10進表記%m月の10進表記
%A曜日名%H時の10進表記(24h)%M分の10進表記
%b月名(省略)%I時の10進表記(12h)%pAM/PM表記
%B月名%j1/1からの経過日数%S秒の10進表記
%w曜日の数字表記%y西暦下2桁の10進表記%U週の10進表記(日曜始まり)
%W週の10進表記(月曜始まり)%Y西暦4桁10進表記%c日時の形式表示
%x日付の形式表示%z標準時からの時差  
%X時間の形式表示%Zタイムゾーン名  

テキストの読み上げ

droid.ttsSpeak()
文字列を読み上げる。

カメラ操作

droid.cameraCapturePicture()
自動で撮影し、その画像を指定したファイル名で保存する
droid.cameraInteractiveCapturePicture()
カメラを起動し、撮影した画像を指定したファイル名で保存する

よく読まれている記事

1

DeepFaceLab 2.0とは DeepFaceLab 2.0は機械学習を利用して動画の顔を入れ替えるツールです。 以前にDeepFaceLab 1.0を記事としてアップしていましたが、2.0は以 ...

2

自作PCで、多くのパーツをCorsair製品で揃えたので、iCUEでライティング制御していきました。 私のPCでは、表示されている4つのパーツが制御されています。ここで、HX750i電源ユニットは、L ...

3

コンピュータは有限桁の数値しか扱う事はできないので、桁数の多い場合や無限小数の場合は四捨五入され切り捨てられます。なので実際の数値とは多少の誤差が生じますが、これを丸め誤差といいます。 なので、コンピ ...

-Python