2016-01-12 2 views
4

Я пытаюсь сохранить свой снимок экрана в галерее изображений моего устройства. Он отлично работает, но он не появится в галерее.Unity сохранить изображение в галерею android/ios

Это то, что я делаю

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. Любые идеи, как заставить это работать и появляться где угодно в галерее?

Спасибо!

ответ

0

Посмотрите на самый верный ответ here.

Возможно, вам необходимо адаптировать ваш код «REFRESHING ANDROID PHONE PHOTO GALLERY» (вы тестируете на Android 4.4+, верно?).

-1

У вас проблемы с отображением WRITE_PERMISSIOS_EXTERNAL в манифесте Android.

Существует плагин для обработки Native Gallery в Unity под названием «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 --> 
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 }); 

Попробуйте код, указанный выше, так как вы уже сохранили изображение. Просто замените _path на myScreenshotLocation. Обратите внимание, что это будет работать только с Android Kit Kit 4.4 выше.

Смежные вопросы