Unity のカレントアクティビティを取得し、Unity側からAndroidのActivityを切り替えてみます。
CallActivity を右クリック → エクスポートからsrc 以下のファイルを選択し、Jarライブラリを作成します。 「このプロジェクトをライブラリとしてマークする」にチェックを忘れずに入れます。
Eclipse 側の準備は終了です。
Unity でActivityの操作を行うため、専用にAndroidManifest.xml ファイルを編集します。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hoge.callactivity" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/app_icon" // <!-- app_iconに変更します。 --> android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >// <!-- Fullscreen に変更。 --> <!-- ここから --> <activity android:name="com.unity3d.player.UnityPlayerProxyActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation"> </activity> <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation"> <meta-data android:name="android.app.lib_name" android:value="unity" /> </activity> <activity android:name="com.unity3d.player.VideoPlayer" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation"> </activity> <!-- ここまで追記 --> <activity android:name="com.hoge.callactivity.MainActivity" android:label="@string/app_name" > </activity> </application> </manifest>
MainActivityのintent-filterタグは全て削除してください。
呼び出し用スクリプトを作成します。
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<AndroidJavaObject>("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 が切り替わります。