Table Of Contents
Kivy on Android(翻訳済み)¶
Android上でOpenGL ES 2.0(アンドロイド2.2以上)を持つ(多かれ少なかれ)任意のデバイスでKivyアプリケーションを実行できます。Googleの要件が満たされている報告した`デバイスの99.9% で<https://developer.android.com/about/dashboards/index.html>`_ 現代のデバイス上の標準です。
Kivy APKを使用するとPlay storeや他のストアで配布できる標準のAndroid appを開発出来ます。一時停止または再起動したときに正しく動作し、Androidのサービスを利用し、以下に説明するように、通常のJava APIのほとんどにアクセスできます。
学習の際は以下の手順に従ってください。package your app for Android、 debug your code on the device を参照してださい。
Package for Android(Android用にパッケージ)¶
Kivyプロジェクトは、Play storeのような市場に流通できる独自のスタンドアロンのAPKを構築するなど、Android上のアプリをパッケージ化するために必要なすべてのツールを提供しています。 これは、:ref:`packaging_android`のドキュメントにカバーされています。
Debugging your application on the Android platform(Android上でアプリをデバッグする)¶
Androidのlogcatストリームからコードの正常な出力(stdout、stderr)、ならびに正常Kivyログを表示できます。`Android SDK <http://developer.android.com/sdk/index.html>`_のADBを介してアクセスします 。 コンピュータデバイスを接続して実行後、デバイスの開発者向けオプションでADBを有効にする必要があります:
adb logcat
stdout/stderr とKivyロガーを含むすべてのログが表示されます。
Buildozerでアプリをパッケージ化した場合、「ADB」ツールは、$PATH
にはなく、上記のコマンドが機能しない場合があります。その場合はコマンドにインサートして実行できます:
buildozer android logcat
Buildozerによってインストールされたバージョンを実行するか、$HOME/.buildozer/android/platform
でSDKのツールを見つけます。
`Kivy Launcher`_を使用したアプリケーションも実行してデバッグできます。この場合はアプリケーションで実行する場合は、アプリケーションフォルダ内の「/.kivy/logs」内のログファイルを検索します。
Using Android APIs(Android APIを使用)¶
“Kivyは、Pythonのフレームワークですが、Kivyプロジェクトは、センサから振動することや、SMSまたは電子メールを介してメッセージを送信するなどといった、通常のJava APIを使用するためのツールを保持しています。
新規ユーザーのために、:ref:`Plyer`の使用をお勧めします。より高度なアクセスのため、または現在ラッパーされていないAPIについては、Pyjniusを直接使用できます。Kivyは基本的なAndroidの機能のために:ref:`android module <android_module>`を提供します。
ユーザーは、例としては、上で使用可能な`Kivy のwiki <https://github.com/kivy/kivy/wiki#mobiles>`でAndroidのコードを貢献します。
Plyer¶
`Plyer <https://github.com/kivy/plyer>`__は、一般的に、様々なプラットフォーム上で見られる機能、特にモバイルのものを使用するPython、プラットフォームに依存しないAPIです。アイデアは、ユーザに通知を提示するなど、Plyer関数を呼び出してアプリが簡単に呼び出す際に、Plyerは関係なく、プラットフォームやオペレーティングシステムで正しい方法で実行する世話をするということです。内部的には、PlyerはPyjnius(Android)、Pyobjus(iOS)とデスクトッププラットフォーム上でいくつかのプラットフォーム固有のAPIを使用しています。
たとえば、次のコードでは、Androidデバイスを振動させるか、そのような適切なハードウェアを持っていないデスクトップなど他のプラットフォーム上ではNotImplementedErrorを発生させ適切に処理ができます:
from plyer import vibrator
vibrator.vibrate(10) # vibrate for 10 seconds
サポートされているAPIのPlyerのリストは非常に急速に成長しています。Plyer `README <https://github.com/kivy/plyer>`_で完全なリストを参照できます。
Pyjnius¶
Pyjniusは自動的に正しい型に引数を変換してPythonから直接JavaクラスにアクセスしPythonにJavaの結果を簡単に変換できるPythonモジュールです。
サポートされているAPIのPlyerのリストは非常に急速に成長しています。Plyer `README <https://github.com/kivy/plyer>`_で完全なリストを参照できます。
ここでは通常のAndroidの振動APIにアクセスするPyjniusの能力とplyerのコードを用いて同じ結果になる、簡単な例です:
# 'autoclass' takes a java class and gives it a Python wrapper
from jnius import autoclass
# Context is a normal java class in the Android API
Context = autoclass('android.content.Context')
# PythonActivity is provided by the Kivy bootstrap app in python-for-android
PythonActivity = autoclass('org.renpy.android.PythonActivity')
# The PythonActivity stores a reference to the currently running activity
# We need this to access the vibrator service
activity = PythonActivity.mActivity
# This is almost identical to the java code for the vibrator
vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE)
vibrator.vibrate(10000) # The value is in milliseconds - this is 10s
このコードは、直接Pyjniusがバイブレータを呼び出すためのJava API関数と同等の、PythonコードからJavaへ自動的に変換しています。PlyerはPyjniusに利用可能なすべてのAPIをラッパーしませんが、はるかに冗長でJavaライクなPlyerよりも有益です。
Pyjniusはまた、いくつかのAPIをラッパーするために重要な、Javaインタフェースを実装するための強力な能力を持っていますが、ここでは記載してません。Pyjniusの`ドキュメント <http://pyjnius.readthedocs.org/en/latest/>`を参照してください。
Android module(Androidのモジュール)¶
Python-for-androidは、AndroidのAPIの制限された設定にアクセスするためのPythonモジュール(実際にはcythonがラッパーするjava)が含まれています。 これは主に上記のように、より柔軟なPyjniusとPlyerに取って代わられていますが、それでも時折は有用です。 利用可能な機能は`python-for-android のドキュメント <http://python-for-android.readthedocs.org/en/latest/>”に記載されています。
Androidサービスの課金とIAPとアクセスする/作成するためのコードが含まれ、上記の他のツールではまだ利用されていません。
Status of the Project and Tested Devices(プロジェクトとテストされたデバイスのステータス)¶
ここでは、以前からの限界と動作していたデバイスでのKivyのAndroidビルドツールの状態を説明しました。
“Androidのツールは現在は非常に安定しており、実質的に任意のデバイスで動作するはずです。私たちの最小要件は、OpenGL ES 2.0とAndroid 2.2です。 これらは現在は非常に一般的です- Androidのスマートウォッチ上でも実行されています!
現在の技術的な制限は、Androidビルドツールは、ARM版のAPKをコンパイルのみでx86プロセッサ(現在は稀)を搭載したAndroidデバイス上で実行されないことです。これは、すぐに追加されるべきです。
Kivyは、ほとんどのデバイス上で動作するようになり、その結果サポートされている携帯電話/タブレットのリストは廃止されました - 上記の条件を満たしていれば、すべてのAndroidデバイスで動作する可能性があります。