ページへ戻る

− Links

 印刷 

AndroidでのANEの作成​/Android側の作成 のバックアップソース(No.3) :: NJF Wiki

xpwiki:AndroidでのANEの作成/Android側の作成 のバックアップソース(No.3)

« Prev[5]  Next »[6]
ANEを作成するためには、Android側のプログラムをまとめたjarファイルが必要となります。その制作方法やテストの仕方をこちらでご紹介します。

**プロジェクトの作成 [#v878cca4]
まずAndroid Studioでプロジェクトを作成します。
Android Studio起動後に「Start a new Android Studio project」を選択します。

&ref(asstart.jpg,mw:480,mh:360);

次にApplication nameを指定します。ここでは「AneAlertSample」としています。

&ref(newproject.jpg,mw:480,mh:360);

次のターゲットの設定は「Phone and Tablet」として、Minimum SDKは特に理由が無ければAPI10にしておくと良いでしょう。

&ref(target.jpg,mw:480,mh:360);

次のActivityの追加はどれでも良いのですが、Empty Activityとしておくのが無難です。

&ref(addactivity.jpg,mw:480,mh:360);

次のActivityの名前はなんでも良いので、そのままにしておきます。

&ref(customizeactivity.jpg,mw:480,mh:360);

「Finish」ボタンを押すとプロジェクトが作成されます。

ひとまず、この状態で問題が無いかAndroidにつなげてみて実行して、なにもない画面が表示されるか試してみることをお勧めします。

**テスト用ボタンの設置 [#gf75d92b]
ANEの作成はけっこう面倒なので、Android上で出来るテストは出来るだけ行ってから、ANEの作成にうつった方が効率的です。そのためのテスト用ボタンを設置します。

まず、左側のナビゲーションから「aap/res/layout/activity_main.xml」を選択します。

&ref(activityxml.jpg,mw:480,mh:360);

すると右側にレイアウト編集画面が出るはずですので、Widgetsの下のボタンをドラッグ&ドロップして好きな場所にボタンを設置します。

&ref(newbutton.jpg,mw:480,mh:360);

このボタンをクリックして選択状態にすると右側のpropertyが表示されるので、そのうちの「id」を「showAlertButton」に、「text」を「Show Alert」とします。

&ref(property.jpg,mw:480,mh:360);

さらに画面上の「Hello World」のテキストは使わないので選択した上でデリートボタンを押して消します。

すると以下のような画面になります。

&ref(screen.jpg,mw:480,mh:360);

これでボタンの設置は終了です。実行してみると押してもなにも起こらないボタンが表示されるはずです。

**ANE用のライブラリの作成 [#pbc67169]

作成したボタンを押すとアラート画面が表示されるようにします。
このままjavaフォルダ以下に処理を書いても良いのですが、そうするとActivityなどのテスト用に作ったものまでjarファイルに含まれてしまいます。
万が一、テスト用のコードが動いてしまうようなことが無いようにここでは別にライブラリを作成します。
テスト用のコードがANEに入ったままでも通常は害が無く、ライブラリを作成せずにANEをつくることも可能ですので、面倒な人はそのままjavaフォルダ以下にANEの処理をするクラスを作成しても良いでしょう。ただし、ライブラリの作成は簡単なのでさほど手間が省けるわけではありませんし、整理のためにも別ライブラリにしておいた方が便利です。

Android StudioでFile->New->New Moduleを選択します。

&ref(newmodule.jpg,mw:480,mh:360);

次に「Android Library」を選択します。

&ref(newmoduleandroidlibrary.jpg,mw:480,mh:360);

次のライブラリ名は「ANEAlert」としておきます。

&ref(androidLibraryName.jpg,mw:480,mh:360);

「Finish」ボタンを押すとライブラリが作成されます。

&ref(newlibrarynavigator.jpg,mw:480,mh:360);


**Alert処理の追加 [#n6d6c2ec]
先ほど追加したライブラリに処理を書いて行きます。まず、anealert/java以下に「njf.jp.anealert.ANEAlert」クラスを加えます。

&ref(anemainclass.jpg,mw:480,mh:360);(クリックで拡大)

もし自分のと表示がちょっと違うという場合はプロジェクトタブの上のバーの右側、「<>」という部分をクリックして「Android」を選択してください。

&ref(navichange.jpg,mw:480,mh:360);

ANE本体となる「njf.jp.anealert.ANEAlert」クラスの中は以下の通りです。

 package njf.jp.anealert;

 import android.app.Activity;
 import android.app.AlertDialog;

 public class ANEAlert {
     private Activity activity;
     private AlertDialog alertDialog;
     public ANEAlert(Activity activity){
         this.activity = activity;
     }
     public void showAlert(String title,String message){
         if(alertDialog == null){
             alertDialog = new AlertDialog.Builder(activity).setTitle(title).setMessage(message).setPositiveButton("OK", null).show();
         }else{
             alertDialog.setTitle(title);
             alertDialog.setMessage(message);
             alertDialog.show();
         }

     }

 }

単にshowメソッドでalertダイアログを表示するだけです。
このクラスを作成したら、appモジュールから呼び出せるようにするため、app内のbuild.gradleの中のdependenciesの所に次の1行を加えます。

 compile project(':anealert')

これを加えたらgradleの同期を行うかどうかの表示がエディタの上に出るので、「Sync Now」をクリックして同期します。

&ref(syncNow.jpg,mw:480,mh:360);

すると、appの下のjavaクラスからもanealertのクラスが参照可能になり、エディターで補完もきくようになります。

次にこれをテスト用に実行するためのMainActivityクラスは以下の通りです。

 package njf.jp.anealertsample;

 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;

 import njf.jp.anealert.ANEAlert;

 public class MainActivity extends AppCompatActivity {
     private ANEAlert aneAlert;
     private int alertCounter = 0;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         aneAlert = new ANEAlert(this);
         Button button = (Button) findViewById(R.id.showAlertButton);
         assert button != null;
         button.setOnClickListener(new View.OnClickListener() {
                                       @Override
                                       public void onClick(View v) {
                                           alertCounter++;
                                           aneAlert.showAlert("Android",alertCounter + " times!");
                                       }

                                   }
         );

     }
 }

**ANE呼び出し処理の追加 [#a17e7947]
**jarファイルの取り出し [#veeed4bc]

« Prev[5]  Next »[6]