見出し画像

pythonでandroidアプリを作成してgoogle play storeで公開しました

Pythonで一度アプリを作ってみたかったのでpythonでアプリを作成してapk,aabでビルドしてみました
作成後のアプリはgoogle play storeで公開してみました(記事最後にURLを記載)

環境:MacOS Monterey
Docker(Ubuntu20.04)(Buildozer)

使用したpythonモジュール
python3,kivy,pygame(numpy,scipy)

androidで使用できるPythonモジュール↓
https://github.com/kivy/python-for-android/tree/develop/pythonforandroid/recipes

アプリの内容的には画面タップで指定した音声が再生されるというもので
GUI部分はkivyで動かしています
平均律と純正律のC major scaleの音を再生

↓再生したい音声はpythonで生成してもらいます

FREQ = 262         # 生成するサイン波の周波数
SAMPLE_RATE = 44100     # サンプリングレート
# 16bitのwavファイルを作成
wavfile.write("C3.wav", SAMPLE_RATE,
             (np.sin(np.arange(SAMPLE_RATE) * FREQ * np.pi * 2 / SAMPLE_RATE) * 32767.0).astype(np.int16))

アプリ画面

画像1

上が平均律で小数点第二位を四捨五入して小数点第一位まで表示しています。
↓基準音を262Hz(C3 国際式表記)にして計算しています


>>> print(pow(2, 1/12)**0*262)
262.0
>>> print(pow(2, 1/12)**2*262)
294.0850566570557
>>> print(pow(2, 1/12)**4*262)
330.0993150724568
>>> print(pow(2, 1/12)**5*262)
349.72804179254905
>>> print(pow(2, 1/12)**7*262)
392.55645414169066
>>> print(pow(2, 1/12)**9*262)
440.62972159294657
>>> print(pow(2, 1/12)**11*262)
494.59013984520766
>>> print(pow(2, 1/12)**12*262)
524.0000000000002

下が純正律でこちらも小数点第二位を四捨五入して小数点第一位まで表示しています。
↓同じく基準音を262Hz(C3 国際式表記)にして計算

>>> print(262*1)
262
>>> print(262*9/8)
294.75
>>> print(262*5/4)
327.5
>>> print(262*4/3)
349.3333333333333
>>> print(262*3/2)
393.0
>>> print(262*5/3)
436.6666666666667
>>> print(262*15/8)
491.25
>>> print(262*2/1)
524.0


単音で音を再生した時にそこまで大きく周波数が変わるだけではないのであまり違いがわからないかもしれないですが比較的差のあるA3のラ(440.6Hz,436.7Hz)のところを交互に再生すると少し音程の違いがわかりやすいかも

ビルドはbuildozerを使用しましたがMacOSではそのまま使用できないのでDockerでLinuxを動かして使用しています
Pythonも仮想環境にしてますが後々色々弄ることになるのでホストの環境が汚れなくて良いです

pythonで画面タップ時に音を再生するようにするところも試行錯誤しましたがapk,aabファイルでandroid用にビルドするところでもエラーが出力されたので結構修正しました

アプリを実機で試すのであればapkファイルでビルドすれば良いのですが、googleアプリストアに登録する場合は現在は署名してaabファイルでビルドする必要があるらしく、ここのビルドで結構エラーが出たので解決する必要があります

無事aabファイルでビルドできても署名ができていないとアップロード時点で下記エラーが出ます
私の場合はビルドする際のbuildozer.specファイルの設定、署名してaabファイルをビルドする時のやり方に問題があったので修正しました

スクリーンショット 2022-02-08 17.52.28

内部/クローズドテスト用に署名したaabファイルのアップロードが問題なく完了すると審査中のステータスになります

スクリーンショット 2022-02-08 17.57.08

アプリ側の知識はほとんどないですがDockerの使用など勉強になりました
署名した鍵はDockerで生成したのでローカルにも移しておきました

今回試験用に作成したので純正律/平均律にしましたが差が少しわかりにくかったですね

n平均律の音程を再生できるもの作成してgoogle play storeで公開してみました↓
上から順に1平均律〜12平均律の1オクターブ内の音程が再生できるアプリです

更新 2022/2/19 アプリアイコンの更新とwaveファイルの振幅を減らしました
↓12平均律と純正律の音程を確認するアプリ




この記事が気に入ったらサポートをしてみませんか?