Unity调用安卓相机、相册,并返回Unity路径。兼容安卓6.0以上
程序员文章站
2024-03-25 10:14:40
...
原插件在这篇博文。
作者实现了裁剪照片功能并返回Texture,经过一番查看arr源码,我新建了AndroidStudio项目把裁剪功能去掉,只保留了返回Unity路径。
路径返回Unity并加载Texture
private static Action<string> pathAction;
public void OpenPhoto(Action<string> done)
{
AndroidJavaObject jo = new AndroidJavaClass("com.plugins.cameraplugin.CameraPlugin").CallStatic<AndroidJavaObject>("GetInstance");
//调用插件函数: 传入回调函数的对象名
jo.Call("openPhoto", gameObject.name);
pathAction = done;
}
/// <summary>
/// 打开相机拍照
/// </summary>
/// <param name="savePath">拍照保存路径</param>
public void OpenCamera(string savePath, Action<string> done)
{
if (!System.IO.Directory.Exists(savePath))
{
System.IO.Directory.CreateDirectory(savePath);
}
AndroidJavaObject jo = new AndroidJavaClass("com.plugins.cameraplugin.CameraPlugin").CallStatic<AndroidJavaObject>("GetInstance");
//调用插件函数: 传入回调函数的对象名 传入保存图片路径
jo.Call("openCamera", gameObject.name, savePath);
pathAction = done;
}
//安卓端调用 打开相册回调
void GetImagePath(string str)
{
if (pathAction != null)
{
pathAction(str);
}
}
//安卓端调用 打开相机回调
void GetCameraImagePath(string str)
{
if (pathAction != null)
{
pathAction(str);
}
}
//通过得到的路径加载图片
void Load(string str)
{
path.text = str;
//在Android插件中通知Unity开始去指定路径中找图片资源
StartCoroutine(LoadTexture(str));
}
IEnumerator LoadTexture(string name)
{
//注解1
string path = "file://"+ name;
WWW www = new WWW(path);
yield return www;
if (string.IsNullOrEmpty(www.error))
//为贴图赋值
texture.texture = www.texture;
}
上一篇: 移动端安卓和ios兼容性汇总