Unity将图像保存到图库android / ios

时间:2016-01-12 12:12:58

标签: android ios unity3d gallery screenshot

我正在尝试将屏幕截图保存到设备的图库中。 它工作正常,但不会出现在画廊中。

这就是我的工作

selfie= new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
selfie.ReadPixels(new Rect(0, 0,Screen.width, Screen.height), 0, 0,false);

selfie.Apply ();
byte[] bytes = selfie.EncodeToPNG();
string filename = "Screenshot.png";

fileLocation = Path.Combine( Application.persistentDataPath, filename );
File.WriteAllBytes(fileLocation, bytes );

string myFolderLocation = "/mnt/sdcard/DCIM/Camera/";
myScreenshotLocation = myFolderLocation + filename;

System.IO.File.Move(fileLocation, myScreenshotLocation);

将图像保存在正确的位置。如果我在SD卡上查找,它就在那里。 但是在画廊里却没有露面。所以我在File.move之后尝试了这个,以刷新画廊。

//REFRESHING THE ANDROID PHONE PHOTO GALLERY IS BEGUN
    AndroidJavaClass classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject objActivity = classPlayer.GetStatic<AndroidJavaObject>("currentActivity");        
    AndroidJavaClass classUri = new AndroidJavaClass("android.net.Uri");        
    AndroidJavaObject objIntent = new AndroidJavaObject("android.content.Intent", new object[2]{"android.intent.action.MEDIA_MOUNTED", classUri.CallStatic<AndroidJavaObject>("parse", "file://" + myScreenshotLocation)});        
    objActivity.Call ("sendBroadcast", objIntent);
//REFRESHING THE ANDROID PHONE PHOTO GALLERY IS COMPLETE

但这无济于事。 我正在使用最新的Unity版本5.3,它应该适用于所有Android和ios设备。任何想法如何使这个工作,并出现在画廊的任何地方?

谢谢!

3 个答案:

答案 0 :(得分:2)

    AndroidJavaClass classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject objActivity = classPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaClass classMedia = new AndroidJavaClass("android.media.MediaScannerConnection");
    classMedia.CallStatic("scanFile", new object[4] { objActivity,
        new string[] { _path },
        new string[] { "image/png" },
        null  });

尝试上面的代码,因为您已经保存了图像。只需将mypath替换为myScreenshotLocation即可。请注意,这只适用于上面的Android KitKat 4.4。

答案 1 :(得分:0)

查看最受欢迎的答案here

你可能需要调整你的&#34;刷新安卓电话照片画廊&#34;代码(你在Android 4.4+上测试,对吧?)。

答案 2 :(得分:-1)

您的问题看起来需要在Android清单中提供WRITE_PERMISSIOS_EXTERNAL。

有一个插件用于处理Unity中的Native Gallery,称为“Native Gallery Assist”,它将帮助您实现这样的功能。我们将它用于社交应用/游戏中的用户,以便用户能够将他们自己的图像更新并彼此共享。 (https://www.assetstore.unity3d.com/en/#!/content/60922

在我们添加写权限之前,我们有同样的问题。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--- Thomas: Needed by Native Gallery Assist to be able to save images to the album  -->