fc2ブログ

VScodeでKotlinのコードを動かす

 最近、Android Studioを使ってKotlinでコーディングすることがありますが、エミュレータで実行結果(例えば計算結果)を確認するのにエミュレータの起動時間などがあり、時間がもったいないと感じることがありました。
 そもそもコンソールアプリでVScodeで簡単に確認できればと思いながら、ネット上を探していると、すぐに見つかったので早速試してみました。

 Kotlin command-line compilerというもので、以下、Mac Mini(M1チップ)で環境構築しました。
 ① brewでkotlinをインストールする。
brew update
brew install kotlin
 ② インストールされていることを確認をする。
kotlinc -version
を実行すると、以下の結果が出て、問題なくインストールされていることが分かりました。
info: kotlinc-jvm 1.7.10 (JRE 18.0.2.1+0)
 ③ VScodeの拡張機能(Extensions)で「Kotlin Language」をインストールする。kotlin_setup_220828.png
 環境構築が完了したので、次に、VScodeでコーディングして動作確認を行います。
 ① helloフォルダを作成し、ワーキングディレクトリをhelloフォルダにしておきます。その中に以下の通り「hello.kt」を作成します。kotlin_run_220828.png ② 作成後、ターミナルで以下のコマンドを実行して、jarファイルを作成します。
kotlinc hello.kt -d hello.jar
 ③ 最後に以下のコマンドでプログラムを実行します。
java -jar hello.jar
上図のターミナル部分にあるように、問題なく実行できました。

VScodeで実行すると、簡単な数値計算結果等を迅速に確認できそうです・・。ただ、数値計算ぐらいなら、わざわざ慣れない「kotlin」でやる必要もないなと事後に気付くのでした。AndroidのGUIアプリを主に作るためのプログラミング言語ですからね・・(自己納得)。
スポンサーサイト



Androidアプリを作る(5)

 前回は、AndroidスマホにQPythonをインストールし、スマホのバッテリの情報を吸い上げるアプリを作成しました。
 そのサンプルプログラムで出力された結果はこんな感じでした。
  technology: Li-ion
battery_present: True
health: 2
status: 2
plugged: 2
level: 56
temperature: 310
voltage: 3934
これらはAndroidのAPIのBatteryManagerクラスの関数の戻り値でした。今回得られた結果を以下の表にまとめました。BatteryCheckList_220821.pngPythonからAndroidのAPI関数を呼び出せるので、Javaのコードからも確認してみました。コードはgithubにあったものを参考にさせてもらいました。その実行結果は以下の通りです。画面下部のBundleで書かれてある部分がAPIで取り込める全情報で、その内容をまとめたのが上部の表示です。BatteryChecker1_220821.png当然ですが、同じことが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です。SensorChecker_220821.pngAndroidスマホに実装されている全センサを確認するコードがネット上にありましたので、念の為確認しました。結果、照度センサ(12)だけ実装済みであることが分かりました。年寄り携帯?(失礼!)の京セラ製BASIO4には必要最小限のセンサしか実装されていないようですね。SensorCheckList_220821.png今回触っているなかで自分のAndroidスマホに実装されているセンサが分かって来たので、その中で遊んでみようと思います。

Androidアプリを作る(4)

 前回からしばらく時間が空きました。前回はAndroid Studioとプログラミング言語はKotlinを使って簡単なカウントアプリを作りました。
 つい先日のブログで『PythonによるAndroidアプリ開発入門』という本の話をしましたが、この本のタイトルにもあるように、PythonでもAndroidアプリが作れるのですね。早速試してみました。 AndroidアプリをPythonで開発するには、QPythonというアプリを使うと良いということでセットアップから開始しました。

 まず、Androidスマホのブラウザからqpythonを検索し、QPython 3Lを選択し、QPython3_setup1_220820.pngQPython 3L - Python for Androidをインストールしました。QPython3_setup2_220820.png起動させると初期メニューが表示されました。QPython3_1_220820.pngConsoleを選択すると、見慣れたPythonコンソールが表示されました。Pythonのバージョンは3.6.6で古いです・・。QPython3_2_220820.png初期メニューのEditorを選択すると、行番号付きのエディタが起動しました。ただ、スマホのソフトウェアキーボードでコードを書くのはありえないですね。以前のブログでお話ししたリモートツールscrcpyでパソコンから文字入力した方が断然速いですね。QPython3_3_220820.png 結局、コードはMac MiniのVScodeで書いて、scrcpyを用いてコピーしました。scrcpyを使うと問題なく、QPythonのエディタにコピーできました。これは楽です。QPython3_4_220820.png実行すると、以下の結果が得られました。QPython3_5_220820.png分かりにくいので整理すると、こんな感じです。
  technology: Li-ion
battery_present: True
health: 2
status: 2
plugged: 2
level: 56
temperature: 310
voltage: 3934
levelの56はその時のスマホのバッテリの残り残量(%)でした。この詳細については次回改めてお話しします。

その後、ネットで色々調べている中で、インストールした最新版のQPython 3Lは、以前のQPythonのバージョンよりも機能(できること)が限定させているようですね。資金難かで開発が止まっているのでしょうか??将来性が怪しいかも知れません。Pythonではなく、王道のJavaやKotlinで書いた方が良いのでしょうか?次回は、このバッテリチェックをJavaでも書いて試してみましたので合わせてお話しします。

Androidスマホをscrcpyで操作する

 久々に個人のAndroidスマホ、別名年寄りスマホ?(失礼!)の京セラ製BASIO4で遊んでみようと思い立ちました。

 先日、古い本が無駄に多くある(嫌味?)県立図書館で『PythonによるAndroidアプリ開発入門』という本を見つけて借りました。この類の書籍は自分が読みたい所がスポットで、全部は必要ないので、購入するよりも図書館で借りるのが良いですね。 その中でPCからAndroidスマホを操作できるとの記述がありましたので、早速試そうと思ったのですが、書籍に記載の「mobiden mirroring」のサービスが今年の2月に終了したとのネット記事を発見。ただし、その記事の中に「scrcpy」が代替できると書かれていたので、これを試しました。

M1チップのMac miniにscrcpyをインストールする手順はネット記事にありましたので、参考に進めました。brewでscrcpyとandroid-platform-toolsをMacにインストールしました。
brew install scrcpy
brew install android-platform-tools
scrcpyで操作するためには、Androidスマホを「デバッグモード」にする必要がありますので、以前のブログの「1.スマホ側の設定」に従い、設定しました。

起動はターミナルからscrcpyを叩けば良いのですが、エラーが発生。認証されていないエラーのようです。scrcpy_run1_220811.pngAndroidスマホを確認すると、USBデバッグの許可を聞いていたので、まさにこれでした。許可をすると問題なく起動しました。scrcpy_run2_220811.pngMac miniでAndroidスマホ画像をマウス操作するとAndroidスマホがその通りに動作していることを確認しました。scrcpy_run3_220811.pngAndroidスマホのアプリ開発を行う上で非常に便利ですね。何かと遊べそうです。

Androidアプリを作る(3)

 前回の続きです。今回はAndroidのスマホ実機(京セラ製BASIO4)で前回作成したアプリを動かすお話です。まず初めにスマホ側の設定を行いました。

1. スマホ側の設定
 ① 「設定」の「デバイス情報」を選択します。Android_SmartPhone_DevMode1_220219.png ② 「デバイス情報」の「ビルド番号」を7回タップして「開発者モード」にします。Android_SmartPhone_DevMode2_220219.png ③ 「設定」の「システム」を選択し、Android_SmartPhone_DevMode3_220219.png ④ 「開発者向けオプション」を選択し、Android_SmartPhone_DevMode4_220219.png ⑤ 「開発者向けオプション」を「ON」にします。Android_SmartPhone_DevMode5_220219.png ⑥ 「USBデバッグ」を「ON」にして、スマホ側の設定は完了です。Android_SmartPhone_DevMode6_220219.png続いて、アプリを実行させるステップです。

2. アプリの実行
 ① Android Studioが起動しているPCとスマホをUSBケーブルでつなぎます。「USBデバッグを許可しますか?」と聞かれるので、「OK」を選択します。Android_SmartPhone_DevMode7_220219.png ② 続いて、「許可」を選択します。Android_SmartPhone_DevMode8_220219.png ③ Android Studioの実行キーの横のデバイスがスマホ(KYOCERA KYV47)になっていることを確認して、Run(▶︎)させました。AndroidApp_run_220219.png ④ Runさせると、スマホ側でソフトが無事に起動しました。動作も問題ありません。AndroidApp_res1_220219.png ⑤ 実行終了すると、スマホ側にアイコンが作成されていました。以後、Android Studioを立ち下げても、アプリを動かすことができました。スマホ側にインストール完了したようです。AndroidApp_res2_220219.png
 結構簡単にスマホ側にアプリをインストールすることができました。今後、個人向けに楽しめるアプリを作ってみようと思います。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: