private IEnumerator TakeScreenshot(Texture2D texture2D, string shareAndroidPNG)
{
isProcessing = true;
yield return new WaitForEndOfFrame();
texture2D.Apply();
string destination = Path.Combine(Application.persistentDataPath, shareAndroidPNG);
File.WriteAllBytes(destination, texture2D.EncodeToPNG());
yield return new WaitForSeconds(0.3f);
if (!Application.isEditor)
{
WWW www = new WWW("file://" + destination);
while (!www.isDone)
{
yield return null;
}
Texture2D picture = www.texture;
byte[] bytes = new AndroidJavaObject("android.util.Base64").CallStatic<byte[]>("decode", System.Convert.ToBase64String(picture.EncodeToPNG()), 0);
AndroidJavaObject bitmap = new AndroidJavaObject("android.graphics.BitmapFactory").CallStatic<AndroidJavaObject>("decodeByteArray", bytes, 0, bytes.Length);
AndroidJavaObject compress = new AndroidJavaClass("android.graphics.Bitmap$CompressFormat").GetStatic<AndroidJavaObject>("JPEG");
bitmap.Call<bool>("compress", compress, 100, new AndroidJavaObject("java.io.ByteArrayOutputStream"));
string path = new AndroidJavaClass("android.provider.MediaStore$Images$Media").CallStatic<string>("insertImage", new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity").Call<AndroidJavaObject>("getContentResolver"), bitmap, picture.name, "");
AndroidJavaObject uri = new AndroidJavaClass("android.net.Uri").CallStatic<AndroidJavaObject>("parse", path);
AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + destination);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), "Can you beat my score?");
intentObject.Call<AndroidJavaObject>("setType", "image/jpeg");
intentObject.Call<AndroidJavaObject>("putExtra", "android.intent.extra.STREAM", uri);
intentObject.Call<AndroidJavaObject>("putExtra", "android.intent.extra.TEXT", "魔性的肉条可以减肥的哟!https://www.taptap.com/app/147852");
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject chooser = intentClass.CallStatic<AndroidJavaObject>("createChooser", intentObject, "Share your new score");
currentActivity.Call("startActivity", chooser);
yield return new WaitForSeconds(1f);
}
yield return new WaitUntil(() => isFocus);
isProcessing = false;
}