IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity刷新安卓相册(亲测成功) -> 正文阅读

[游戏开发]Unity刷新安卓相册(亲测成功)

Unity要在安卓端刷新相册需要建安卓包,打开AndroidStudio(本人使用这个版本的android-studio-2020.3.1.25-windows),并新建项目(AndroidStudio的安装自行百度和使用)

先建一个活动

?

然后建一个Module,如果发现是灰色的看软件右下方是不是在加载东西,是的话等待加载完成才能创建Module。?

?

注意要选Android Library不然是无法生成包的。

?建一个类,名字随便起,一定要在包名内创建,不然unity是找不到类的。

?引入代码内的import,然后直接复制Show方法到自己的类里面,参数activity的作用是到时候在unity获取它的活动类,path是图片的路径,activity.sendBroadcast方法是通知系统刷新相册,只有主活动有该方法。

不建议在安卓代码里使用Class.forName(),网上很多都是用以下代码段获取unity的活动类,我使用后发现根本无法正常获取到,猜测可能是扩展包没有权限读取到主活动的原因。

  //无法获取到主活动的方法
 Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
                Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);

?正常代码

package com.xiaodong.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;


import java.io.File;

public class MyApp {

    public  void  Show(Activity activity,String path)
    {
        activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                Uri.fromFile(new File(path))));
    }

}

编写完后保存。?

最后生成包

,并且等待完成?

?完成后会出现一个build文件夹,安装下图操作并且复制。

?

然后复制到Unity项目中(要在资源管理器复制,在Unity是复制不了的)。接下来相信找这种文章的朋友,Unity基本都是很熟练了,我就不讲解如何创建Unity项目了,直接上代码。

?使用前多看代码里的注释。

using UnityEngine;
using UnityEngine.UI;
using System;
using System.IO;
using System.Runtime.InteropServices;
public class TextureLoock : MonoBehaviour 
{
      //定义一张图片,如果要使用Unity项目的图片需要给图片权限读写

      public Texture texture;
       
      //定义一个保存Texture的方法
      publi  void SaveTexture(Texture texture)
      {
         Texture2D t2d = new Texture2D(t.width, t.height, TextureFormat.ARGB32, true);
        //将Texture 的像素保存到texture2D中
        t2d.SetPixels(t.GetPixels());
        //t2d.ReadPixels(new Rect(200,200,200,200),0,0,false);
        t2d.Apply();
        //编码
        byte[] imageTytes = rotate(t2d).EncodeToJPG();
        
          //获得安卓的根目录
          string path = Application.persistentDataPath.Substring(0, 
          Application.persistentDataPath.IndexOf("Android"));
       
       //创建相册文件夹,如果不存在就会创建
        Directory.CreateDirectory( path + @"DCIM/Camera");
        //将图片写入相册
          File.WriteAllBytes(path + "DCIM/Camera/图片1314520.jpg", texture.EncodeToJPG());
          //在这里我们获取到Unity里的活动类
          var playerCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
           //currentActivity是一个静态的字段,获得当前活动
            var activity = playerCls.GetStatic<AndroidJavaObject>("currentActivity");
            //如何获取我们自己的创建的插件包,com.xiaodong.myapplication是包名MyApp是类名
          var my=  new AndroidJavaObject("com.xiaodong.myapplication.MyApp");
            //最后调用我们在安卓包里定义的刷新图片类
            //参数一是传入我们定义的方法,参数二是传入Unity的活动类,参数三是路径,使用参数都是在根据安卓定义的方法来传入。
            my.Call("Show", activity, path + "DCIM/Camera/MapMarker/" + name);
      }

}

Unity内图片的读写权限打开

?最后自己找张图片,创建一个游戏对象挂载脚本上去传入图片就好了这里不多演示,最后是打包安卓安装包,一定要把写入权限改成图中的一样,不然是无法写入图片的。

?最后装机运行,你就会发现每次保存都会在相册看到图片的美貌。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:22:48  更:2021-12-10 11:23:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:32:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码