Совершенно новый для разработки Android, поэтому надежда some1 может просветить меня. Имел справедливую долю в googling, но все еще застрял. Я использую Unity 4 и Eclipse, пытаясь отобразить галерею изображений и получить Uri изображения. (Примечание: я использую плагин социальной сети Prime31 android)Unity Android Gallery
Сначала я не расширил UnityPlayerActivity, но я понял, что не могу получить onActivityResult, если я его не продлю. После расширения я получаю «Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare()». Пробовал runonuithread и не работал, но может быть из-за моего опыта в использовании. Так надейтесь, что вы, ребята, можете помочь.
Ниже то, что я сделал в Eclipse:
public class AndroidGalleryPlugin extends UnityPlayerActivity{
public static AndroidGalleryPlugin plugin_instance;
public Uri ImageURI;
static final int REQUEST_CODE = 1;
static Context _context;
public static AndroidGalleryPlugin instance()
{
if(plugin_instance == null)
plugin_instance = new AndroidGalleryPlugin();
return plugin_instance;
}
private AndroidGalleryPlugin() {}
public static void StartOpenGallery (Context mContext)
{
Log.d("AndroidGalleryPlugin", "Start Open Gallery");
_context = mContext;
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Activity activity = (Activity) _context;
activity.startActivityForResult(Intent.createChooser(intent, "Select Picture"), REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.d("AndroidGalleryPlugin", "onActivityResult");
}
// And to convert the image URI to the direct file system path of the image file
public String getRealPathFromURI(Uri contentUri) {
Log.d("AndroidGalleryPlugin", "Get URI");
}
}
Код В Unity:
jc = new AndroidJavaClass ("com.asd.androidgallery.AndroidGallery");
jo = jc.CallStatic <AndroidJavaObject> ("instance");
if(jo == null)
{
Debug.LogError ("Java Obj Null");
return false;
}
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityObj = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
if(unityObj == null)
{
Debug.LogError ("Unity Obj Null");
return false;
}
jo.CallStatic("StartOpenGallery", unityObj);
Это мой androidmanifest:
<activity android:name="com.prime31.UnityPlayerNativeActivity" android:label="@string/app_name" android:screenOrientation="sensorPortrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>
<activity android:name="com.asd.androidgallery.AndroidGalleryPlugin" android:configChanges="orientation"></activity>
Существует также плагин, который делает то же самое, такие как «Native Gallery Assist» - (https://www.assetstore.unity3d.com/en/#!/content/60922) Он работает как Android, а также iOS. – Chris