====== 088 UnityスクリプトからAndroidActivityを切り替える ======
===== 概要 =====
Unity のカレントアクティビティを取得し、Unity側からAndroidのActivityを切り替えてみます。
==== Activityの作成 ====
Eclipse を起動し適当なAndroid アプリケーションを作成します。
プロジェクトの名前は、Activity の名前はCallActivity としました。
{{:wiki:unity:tips:unity_callactivity_001.png?300|}}
さらにファイルを追加し、アクティビティ起動用のクラスを用意しておきます。
{{:wiki:unity:tips:unity_callactivity_003.png?300|}}
==== Jarライブラリの作成 ====
CallActivity を右クリック -> エクスポートからsrc 以下のファイルを選択し、Jarライブラリを作成します。
「このプロジェクトをライブラリとしてマークする」にチェックを忘れずに入れます。
{{:wiki:unity:tips:unity_callActivity_002.png?300|}}
Eclipse 側の準備は終了です。
==== Unityプロジェクトの作成 ====
* Unity を起動し、プロジェクトを新規作成します。名前はCallActivityJavaとしました。
* Assets/Plugins/Android ディレクトリにAndroidManifest.xml を配置します。
* AndroidManifest.xml は、Eclipse で作成したCallActivityディレクトリの中にあります。
* CallActivity.jarを Assets/Plugins/Android/bin ディレクトリにCallActivity.jar を配置します。
==== AndroidManifest.xml ファイルの編集 ====
Unity でActivityの操作を行うため、専用にAndroidManifest.xml ファイルを編集します。
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >//
MainActivityのintent-filterタグは全て削除してください。
==== Activity 切替えコードの実装 ====
呼び出し用スクリプトを作成します。
using UnityEngine;
using System.Collections;
using System;
public class Plugins
{
// Launch Activity.
public static void LaunchActivity()
{
#if UNITY_ANDROID
// get Unity Player Activity.
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityPlayer.GetStatic("currentActivity");
AndroidJavaClass plugin = new AndroidJavaClass("com.hoge.callactivity.Plugin");
plugin.CallStatic("launchActivity", "com.hoge.callactivity.MainActivity", unityActivity );
#endif // #if UNITY_ANDROID
}
}
これをUnityの任意のスクリプトからPlugins.LaunchActivity() として呼び出してあげればActivity が切り替わります。