◆PROCESSING 逆引きリファレンス
カテゴリー:スマホ(AndroidMode)
Android Studioで開発するには(AndroidMode編)
【概要】
PROCESSINGにAndroidMode を導入する事で、PROCESSINGで開発したプログラムをAndroid端末上で動かす事ができるようになります。
AndroidModeの導入については「PROCESSINGをAndroid端末で動かすには(4.0版)」記事を参照してください。
AndroidModeで開発をする場合でも、JavaModeと同じく標準エディタを利用する事が可能です。
が・・・標準エディタでの開発作業には、1つ大きな欠点があります。それはデバック用の仮想端末についてです。
標準エディタ経由でテストを行うと、実行される仮想端末のOSにOreo(Android 8.0)が選択されますが、このOSや画面サイズなどのパラメータが変更できないのです。
(画像URL:illust-AC 様:ユミコさん、かみたま さん)
動くかどうか試してみるだけなら、それでも良いかもしれません。
しかし多種多様な機種が出回っているAndroid OSで、できるだけ多くの端末で動作するプログラムを作りたい場合、仮想端末環境を変更しながらテストができないのは問題です。
様々なOSや画面サイズでテストを行いたいなら、公式IDEであるAndroid Studio経由でAndroidModeを使う必要があります。
以下では、Android Studio経由でAndroidModeを利用する方法を紹介します。
【詳細】
AndroidModeの入手について
Android Studioのインストール手順については、割愛します。
インストール手順は、いろいろなサイト様で解説されていますので、がんばってインストールして下さい。
参考までに、以下のサイト様などが解りやすいかと思います。
以下の説明は、既にAndroid StudioとPROCESSINGのAndroidModeがPCにインストールされている事を前提としています。
なおAndroidModeの利用にあたって、最初からPROCESSINGの標準エディタを全く使う気がないという方は、AndroidModeのためだけにPROCESSINGをインストールする必要はありません。
その場合は、以下の公式GitHubサイトから、AndroidModeだけを入手しておいて下さい。
また私は英語が大の苦手(汗)ですので、AndroidStudioを日本語化してあります。以下の画像は日本語化したものを利用しています。英語名は()の中に記載しておきますので、英語のままの方はそちらの名前を参照して下さい。
AndroidModeのcoreファイルをリネームする
PROCESSING経由でAndroidModeをインストールした方は、(スケッチブックの場所)¥modes¥AndroidMode にprocessing-core.zip というファイルがあります。
例:C:¥processing-3.3.6¥src¥modes¥AndroidMode
上記でAndroidModeだけをダウンロードした方は、AndroidMode.zip ファイルの解凍直下にファイルがあります。
このファイルの拡張子を zip から jar に変更してください。(例:processing-core.jar)
新規プロジェクトを作成しjarを追加する
Android Studioで、AndroidMode用に新規プロジェクトを作成します。作成途中で以下のようなActivityを選択する画面になったら、「空のアクティビティ(Empty Activity)」を選んで下さい。
プロジェクトが出来上がったら、app¥ libs に、先程リネームしたprocessing-core.jar を、エクスプローラからドラッグ&ドロップで複写します。
なお単純にドラッグ&ドロップすると「ファイル移動」になってしまうので、注意して下さい。複写するなら、Ctrlキーを押しながらドラッグ&ドロップします。
複写できたら、左端のプロジェクトツリーは以下のようになっている筈です。
複写した processing-core.jar を選択状態にして、マウスを右クリックします。
表示されるプルダウンメニューから「ライブラリーとして追加(Add As Library)」を選択して、processing-core.jar をプロジェクトに取り込みます。
activity_main.xml を書き換える
app¥src¥main¥res¥layout にあるactivity_main.xmlをダブルクリックして開きます。
テキストタブを選択して xml を表示させた状態にし、表示されている xml を全て消去して、以下の xml に置き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 |
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="tutorials.androidstudio.fragmentsv4.MainActivity" > <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> |
MainActivity を書き換える
app¥src¥main¥java¥パッケージ名 にある MainActivity をダブルクリックして開きます。
先頭行の package 文だけを残して、import 文以下の全てのプログラムを、以下のプログラムに置き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import android.os.Bundle; import android.content.Intent; import android.view.ViewGroup; import android.widget.FrameLayout; import android.support.v7.app.AppCompatActivity; import processing.android.PFragment; import processing.android.CompatUtils; import processing.core.PApplet; public class MainActivity extends AppCompatActivity { //スケッチのインスタンス変数 private PApplet sketch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout frame = new FrameLayout(this); frame.setId(CompatUtils.getUniqueViewId()); setContentView(frame, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); //ここでスケッチを生成する sketch = new Sketch(); PFragment fragment = new PFragment(sketch); fragment.setView(frame, this); } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { if (sketch != null) { sketch.onRequestPermissionsResult( requestCode, permissions, grantResults); } } @Override public void onNewIntent(Intent intent) { if (sketch != null) { sketch.onNewIntent(intent); } } } |
ここで注目していただきたいのは、スケッチクラスを生成している箇所です。
上記例では、PAppletクラスの sketch という変数を定義し、その変数に「Sketch」という名前のPAppletクラスを継承したクラスを new しています。
sketch という変数名や、Sketchというクラス名は、あなたのプロジェクトに応じて好きな名前に変更して頂いて構いません。
ただし、本例でSketchとなっているクラス名は、次の過程で生成するクラス名と同一にしてください。
Sketchクラスを生成する
app¥src¥main¥java¥パッケージ名 を選択状態にして、マウスを右クリックします。プルダウンメニューが表示されますので、「新規(New)⇒Javaクラス(Java Class)」を選択します。
クラス生成用のダイアログボックスが表示されます。クラス名(Name)に「Sketch」、スーパークラス(Superclass)に「PApplet」を指定してください。
ここでスーパークラスにPAppletが表示されない人は、processing-core.jar のプロジェクトへの取り込みに失敗している可能性があるので、前述の作業を見直してくださいね。
無事にクラスが追加できたら、左端のプロジェクトツリーは以下のようになっている筈です。
これで全ての準備は整いました。Sketchクラスに、いつものようにPROCESSINGのプログラムをすればOKです(笑)。
なおスクリーンサイズの変更は、settingsメソッドの中で行います。setupメソッドではないので、注意して下さい。
また標準エディタで開発していた時に、画像やフォントを置いていた data フォルダは、Android Studio で開発する時は、app¥src¥main¥Assets になります。
Assets フォルダは初期状態では存在しませんので、必要に応じてみなさんで追加して下さい。
【その他】
なし
【関連記事】
サンプルプログラム
sketchの雛形例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import processing.core.PApplet; /** * Android Mode ひな形サンプル * @author MSLABO * @version 1.0 */ public class Sketch extends PApplet { @Override public void settings() { //Androidではフルスクリーンが推奨 //スクリーンサイズの指定は、settings内で行う事 fullScreen(); } @Override public void setup() { //変数の初期化や、各リソースの読み込みを行う } @Override public void draw() { //描画処理は、ここにまとめる } } |
Android Studio 用スケッチファイルの雛形です。
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。