Imagem VR Quest 2 Screenshot - Salvar a imagem no VR
Página 1 de 1
Imagem VR Quest 2 Screenshot - Salvar a imagem no VR
Preciso tirar uma foto de camera do jogo (screenshot) e salvar a imagem no VR.
Tirar a screenshot eu consegui de várias maneiras.
O problema maior é salvar a imagem no VR.
A screenshot só aparece quando eu rodo no playmode da Unity.
Fiz um teste no Start() e passando um sprite só para tentar salvar no VR com base nesse tutorial mas sem sucesso:
Transferir imagem para Quest 2
Android manifest:
Tirar a screenshot eu consegui de várias maneiras.
O problema maior é salvar a imagem no VR.
A screenshot só aparece quando eu rodo no playmode da Unity.
Fiz um teste no Start() e passando um sprite só para tentar salvar no VR com base nesse tutorial mas sem sucesso:
Transferir imagem para Quest 2
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class ScreenAndroid : MonoBehaviour
{
//public AndroidExtensions Screen1 = new AndroidExtensions();
public Texture2D Imagem;
public string title;
public string description;
private void Start()
{
AndroidExtensions.SaveImageToGallery(Imagem, title, description);
var appName = Application.identifier;
var fileName = $"{appName}-{DateTime.Now:yyMMdd-hhmmss}";
#if UNITY_ANDROID
AndroidExtensions.SaveImageToGallery(Imagem, fileName, "Some description");
#endif
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[SerializeField]
public class AndroidExtensions
{
private static AndroidJavaObject _activity;
private static AndroidJavaObject Activity
{
get
{
if (_activity != null) return _activity;
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
_activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
return _activity;
}
}
private const string MediaStoreImagesMediaClass = "android.provider.MediaStore$Images$Media";
public static string SaveImageToGallery(Texture2D texture2D, string title, string description)
{
using var mediaClass = new AndroidJavaClass(MediaStoreImagesMediaClass);
using var cr = Activity.Call<AndroidJavaObject>("getContentResolver");
var image = Texture2DToAndroidBitmap(texture2D);
var imageUrl = mediaClass.CallStatic<string>("insertImage", cr, image, title, description);
Debug.Log("imageUrl");
return imageUrl;
}
private static AndroidJavaObject Texture2DToAndroidBitmap(Texture2D texture2D)
{
var encoded = texture2D.EncodeToPNG();
using var bf = new AndroidJavaClass("android.graphics.BitmapFactory");
return bf.CallStatic<AndroidJavaObject>("decodeByteArray", encoded, 0, encoded.Length);
}
}
Android manifest:
- Código:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application android:requestLegacyExternalStorage="true">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector">
<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" />
</activity>
</application >
</manifest>
c4stor- Iniciante
- PONTOS : 2005
REPUTAÇÃO : 1
Idade : 23
Áreas de atuação : Desenvolvedor Unity VR - Cursando Sistemas de Informação
Respeito as regras :
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos