Search
Ad
|
新規
下位
一覧
検索
最新
ヘルプ
ページへ戻る
編集
複製
履歴
添付
印刷
AndroidでのANEの作成/Android側の作成
をテンプレートにして作成
xpwiki
:AndroidでのANEの作成/Android側の作成 をテンプレートにして作成
開始行:
[[AndroidでのANEの作成]]に戻る。
ANEを作成するためには、Android側のプログラムをまとめたjar...
*プロジェクトの作成
まずAndroid Studioでテスト用にAndroidで実行するためのプロ...
具体的には、ボタンを押すとアラート画面が表示されるアプリ...
まずAndroid Studio起動後に「Start a new Android Studio pr...
&ref(asstart.jpg,mw:480,mh:360);
次にApplication nameを指定します。ここでは「AneAlertSampl...
&ref(newproject.jpg,mw:480,mh:360);
次のターゲットの設定は「Phone and Tablet」として、Minimum...
&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につなげてみて実行...
*テスト用ボタンの設置
ANEの作成はけっこう面倒です。それを何度もやらなくてすむよ...
まず、左側のナビゲーションから「aap/res/layout/activity_m...
&ref(activityxml.jpg,mw:480,mh:360);
すると右側にレイアウト編集画面が出るはずですので、Widgets...
&ref(newbutton.jpg,mw:480,mh:360);
このボタンをクリックして選択状態にすると右側のpropertyが...
&ref(property.jpg,mw:480,mh:360);
さらに画面上の「Hello World」のテキストは使わないので選択...
すると以下のような画面になります。
&ref(screen.jpg,mw:480,mh:360);
これでボタンの設置は終了です。実行してみると押してもなに...
*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);
*主処理の追加とAndroidアプリとしてのテスト
先ほど追加したライブラリに処理を書いて行きます。まず、ane...
&ref(anemainclass.jpg,mw:480,mh:360);(クリックで拡大)
もし自分のと表示がちょっと違うという場合はプロジェクトタ...
&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(activi...
}else{
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.show();
}
}
}
単にshowメソッドでalertダイアログを表示するだけです。
このクラスを作成したら、appモジュールから呼び出せるように...
compile project(':anealert')
これを加えたらgradleの同期を行うかどうかの表示がエディタ...
&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.showA...
assert button != null;
button.setOnClickListener(new View.OnClickListen...
@Override
public void onClic...
alertCounter++;
aneAlert.showA...
}
}
);
}
}
これで実行すると、表示するたびに数字が変わるAlertダイアロ...
&ref(androidss.jpg,mw:480,mh:360);
このように、ANEの作成では一度テスト用のActivityを作ってAn...
そうではなく、いきなりANEとして作成してAirで動かそうとす...
また、その時にはここで紹介したように、ANEの処理はライブラ...
Eclipseで開発していた頃は、ライブラリプロジェクトという、...
*ANE呼び出し処理の追加
いよいよANEの呼び出し部分を作成します。この部分でエラーが...
まず、FlashRuntimeExtensions.jarをadobe airのSDKの中の「l...
&ref(スクリーンショット 2016-06-26 0.23.36.png,mw:480,mh:...
この「FlashRuntimeExtensions.jar」をAndroid Studio上で右...
&ref(addaslib.jpg,mw:480,mh:360);
どのモジュールに加えるかを訪ねられるので「anealert」に加...
&ref(createlib.jpg,mw:480,mh:360);
うまくいっていればanealertのbuild.gradleのdependenciesに...
compile files('libs/FlashRuntimeExtensions.jar')
これでANE呼び出しに必要なAPIが使えるようになりました。
ここで一度ANEからJavaのソースが呼び出される過程を整理して...
+actionscriptでExtensionContext.createExtensionContextメ...
+Java側ではIDに対応するFREExtensionが初期化される。このと...
+actionscriptでExtensionContextのcallメソッドを関数のIDと...
+Java側ではその関数のIDに対応するFREFunctionクラスのcall...
となります。
つまりANE呼び出しには二つのクラスが必要です。一つは初期化...
ではまず、FREExtensionを継承したAneHelloWorldFREExtension...
package njf.jp.anealert;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import java.util.HashMap;
import java.util.Map;
public class ANEAlertFREExtension implements FREExtensio...
@Override
public FREContext createContext(String s) {
FREContext context = new FREContext() {
@Override
public Map<String, FREFunction> getFunctions...
Map<String, FREFunction> result = new Ha...
result.put("alert", new ANEAlertFREFunct...
return result;
}
@Override
public void dispose() {
}
};
return context;
}
@Override
public void dispose() { }
@Override
public void initialize() { }
}
ここで重要なのはresultというHashMapに"alert"という文字列...
では最後に実際に呼び出されるクラス、FREFunctionを継承した...
package njf.jp.anealert;
import android.app.Activity;
import android.util.Log;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
public class ANEAlertFREFunction implements FREFunction {
private ANEAlert aneAlert;
@Override
public FREObject call(FREContext freContext, FREObje...
String title = "TITLE";
String message = "MESSAGE";
try {
title = freObjects[0].getAsString();
} catch (Exception e) {
Log.e("njf.jp.anealert", "FunctionAdFunction...
}
try {
title = freObjects[1].getAsString();
} catch (Exception e) {
Log.e("njf.jp.anealert", "FunctionAdFunction...
}
if(aneAlert == null){
aneAlert = new ANEAlert(freContext.getActivi...
}
aneAlert.showAlert(title,message);
return null;
}
}
ここでcallメソッドが実際に呼び出されるメソッド、その引数...
*jarファイルの取り出し
(この記事は「[[How to build ANE in Android Studio:http:/...
ここまでくるとANEに必要なjarファイルを作成するのは簡単で...
まず、ツールバーの「Build->Rebuild Project」を選択し、ビ...
&ref(aar.jpg,mw:480,mh:360);
この「anealert-release.aar」が必要なファイルなので、右ク...
aarファイルは実際にはただのzipファイルなので、この「aneal...
unzip anealert-release.aar
するとその中に「classes.jar」というファイルがあるはずです...
jar tf classes.jar
を実行してみると、
njf/jp/anealert/ANEAlert.class
njf/jp/anealert/ANEAlertFREExtension.class
njf/jp/anealert/ANEAlertFREFunction.class
...
などが表示され、先ほど制作したクラスが全て入っているはず...
-[[AndroidでのANEの作成]]に戻る
-[[AndroidでのANEの作成/swcの作成]]に進む
終了行:
[[AndroidでのANEの作成]]に戻る。
ANEを作成するためには、Android側のプログラムをまとめたjar...
*プロジェクトの作成
まずAndroid Studioでテスト用にAndroidで実行するためのプロ...
具体的には、ボタンを押すとアラート画面が表示されるアプリ...
まずAndroid Studio起動後に「Start a new Android Studio pr...
&ref(asstart.jpg,mw:480,mh:360);
次にApplication nameを指定します。ここでは「AneAlertSampl...
&ref(newproject.jpg,mw:480,mh:360);
次のターゲットの設定は「Phone and Tablet」として、Minimum...
&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につなげてみて実行...
*テスト用ボタンの設置
ANEの作成はけっこう面倒です。それを何度もやらなくてすむよ...
まず、左側のナビゲーションから「aap/res/layout/activity_m...
&ref(activityxml.jpg,mw:480,mh:360);
すると右側にレイアウト編集画面が出るはずですので、Widgets...
&ref(newbutton.jpg,mw:480,mh:360);
このボタンをクリックして選択状態にすると右側のpropertyが...
&ref(property.jpg,mw:480,mh:360);
さらに画面上の「Hello World」のテキストは使わないので選択...
すると以下のような画面になります。
&ref(screen.jpg,mw:480,mh:360);
これでボタンの設置は終了です。実行してみると押してもなに...
*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);
*主処理の追加とAndroidアプリとしてのテスト
先ほど追加したライブラリに処理を書いて行きます。まず、ane...
&ref(anemainclass.jpg,mw:480,mh:360);(クリックで拡大)
もし自分のと表示がちょっと違うという場合はプロジェクトタ...
&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(activi...
}else{
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.show();
}
}
}
単にshowメソッドでalertダイアログを表示するだけです。
このクラスを作成したら、appモジュールから呼び出せるように...
compile project(':anealert')
これを加えたらgradleの同期を行うかどうかの表示がエディタ...
&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.showA...
assert button != null;
button.setOnClickListener(new View.OnClickListen...
@Override
public void onClic...
alertCounter++;
aneAlert.showA...
}
}
);
}
}
これで実行すると、表示するたびに数字が変わるAlertダイアロ...
&ref(androidss.jpg,mw:480,mh:360);
このように、ANEの作成では一度テスト用のActivityを作ってAn...
そうではなく、いきなりANEとして作成してAirで動かそうとす...
また、その時にはここで紹介したように、ANEの処理はライブラ...
Eclipseで開発していた頃は、ライブラリプロジェクトという、...
*ANE呼び出し処理の追加
いよいよANEの呼び出し部分を作成します。この部分でエラーが...
まず、FlashRuntimeExtensions.jarをadobe airのSDKの中の「l...
&ref(スクリーンショット 2016-06-26 0.23.36.png,mw:480,mh:...
この「FlashRuntimeExtensions.jar」をAndroid Studio上で右...
&ref(addaslib.jpg,mw:480,mh:360);
どのモジュールに加えるかを訪ねられるので「anealert」に加...
&ref(createlib.jpg,mw:480,mh:360);
うまくいっていればanealertのbuild.gradleのdependenciesに...
compile files('libs/FlashRuntimeExtensions.jar')
これでANE呼び出しに必要なAPIが使えるようになりました。
ここで一度ANEからJavaのソースが呼び出される過程を整理して...
+actionscriptでExtensionContext.createExtensionContextメ...
+Java側ではIDに対応するFREExtensionが初期化される。このと...
+actionscriptでExtensionContextのcallメソッドを関数のIDと...
+Java側ではその関数のIDに対応するFREFunctionクラスのcall...
となります。
つまりANE呼び出しには二つのクラスが必要です。一つは初期化...
ではまず、FREExtensionを継承したAneHelloWorldFREExtension...
package njf.jp.anealert;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import java.util.HashMap;
import java.util.Map;
public class ANEAlertFREExtension implements FREExtensio...
@Override
public FREContext createContext(String s) {
FREContext context = new FREContext() {
@Override
public Map<String, FREFunction> getFunctions...
Map<String, FREFunction> result = new Ha...
result.put("alert", new ANEAlertFREFunct...
return result;
}
@Override
public void dispose() {
}
};
return context;
}
@Override
public void dispose() { }
@Override
public void initialize() { }
}
ここで重要なのはresultというHashMapに"alert"という文字列...
では最後に実際に呼び出されるクラス、FREFunctionを継承した...
package njf.jp.anealert;
import android.app.Activity;
import android.util.Log;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
public class ANEAlertFREFunction implements FREFunction {
private ANEAlert aneAlert;
@Override
public FREObject call(FREContext freContext, FREObje...
String title = "TITLE";
String message = "MESSAGE";
try {
title = freObjects[0].getAsString();
} catch (Exception e) {
Log.e("njf.jp.anealert", "FunctionAdFunction...
}
try {
title = freObjects[1].getAsString();
} catch (Exception e) {
Log.e("njf.jp.anealert", "FunctionAdFunction...
}
if(aneAlert == null){
aneAlert = new ANEAlert(freContext.getActivi...
}
aneAlert.showAlert(title,message);
return null;
}
}
ここでcallメソッドが実際に呼び出されるメソッド、その引数...
*jarファイルの取り出し
(この記事は「[[How to build ANE in Android Studio:http:/...
ここまでくるとANEに必要なjarファイルを作成するのは簡単で...
まず、ツールバーの「Build->Rebuild Project」を選択し、ビ...
&ref(aar.jpg,mw:480,mh:360);
この「anealert-release.aar」が必要なファイルなので、右ク...
aarファイルは実際にはただのzipファイルなので、この「aneal...
unzip anealert-release.aar
するとその中に「classes.jar」というファイルがあるはずです...
jar tf classes.jar
を実行してみると、
njf/jp/anealert/ANEAlert.class
njf/jp/anealert/ANEAlertFREExtension.class
njf/jp/anealert/ANEAlertFREFunction.class
...
などが表示され、先ほど制作したクラスが全て入っているはず...
-[[AndroidでのANEの作成]]に戻る
-[[AndroidでのANEの作成/swcの作成]]に進む
ページ名:
ぺージ情報
ぺージ名 :
AndroidでのANEの作成/Android側の作成
ページ別名 :
未設定
ページ作成 :
njf
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
Counter: 0, today: 0, yesterday: 0
MenuBar
20
最新の0件
広告
ログイン
ユーザー名:
パスワード:
パスワード紛失