Unity3D:调用安卓摄像头拍照

这篇具有很好参考价值的文章主要介绍了Unity3D:调用安卓摄像头拍照。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

操作步骤:创建脚步并挂载到Main Camera上

仍未解决的问题:导入到安卓平台测试时,拍照按钮不能随着屏幕旋转而变换位置;

拍照时会把拍照按钮也截进去。文章来源地址https://www.toymoban.com/news/detail-742244.html

using UnityEngine;
using System.Collections;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime .Serialization.Formatters.Binary;
using System.Threading;
public class TakePhotoes : MonoBehaviour
{
    public string deviceName;
    //接收返回的图片数据
    WebCamTexture tex;

    void OnGUI()
    {
        if(GUI.Button(new Rect(Screen.width/2-Screen.width/10, Screen.height-100, Screen.width/5, 100),"捕获照片"))
        {
            //捕获照片
            tex.Pause();
            StartCoroutine(getTexture());
            //重新开始
            tex.Play();
        }
        if(tex != null)
        {
            // 捕获截图大小
            GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height-100), tex); 
        }
    }

    void Start()
    {
        //调用摄像头
        StartCoroutine(StartCamera());
    }

    public IEnumerator StartCamera()
    {
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
        Screen.orientation = ScreenOrientation.LandscapeLeft;
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            WebCamDevice[] devices = WebCamTexture.devices;
            deviceName= devices[0].name;
            tex=new WebCamTexture(deviceName, Screen.width, Screen.height-100, 60);
            tex.Play();
        }
    }

    public IEnumerator getTexture()
    {
        yield return new WaitForEndOfFrame();
        Texture2D t=new Texture2D(Screen.width, Screen.height-100);
        t.ReadPixels(new Rect(0, 100, Screen.width, Screen.height-100), 0, 0, false);
        t.Apply();
        byte[] byt=t.EncodeToPNG();
        string path = Application.persistentDataPath;

        #if UNITY_ANDROID
            path = "/sdcard/DCIM/Camera";
        #endif
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string savePath = path + "/" + Time.time + ".jpg";

        File.WriteAllBytes(savePath, byt);
        OnSaveImagesPlartform(savePath);
    }

    private void OnSaveImagesPlartform(string filePath)
    {
        #if UNITY_ANDROID && !UNITY_EDITOR
            string[] paths = new string[1];
            paths[0] = filePath; 
            using (AndroidJavaClass PlayerActivity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                AndroidJavaObject playerActivity = PlayerActivity.GetStatic<AndroidJavaObject>("currentActivity");
                using (AndroidJavaObject Conn = new AndroidJavaObject("android.media.MediaScannerConnection", playerActivity, null))
                {
                    Conn.CallStatic("scanFile", playerActivity, paths, null, null);
                }
            }
        #endif
    }
}

到了这里,关于Unity3D:调用安卓摄像头拍照的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D:Scene 视图摄像机

    推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 摄像机设置菜单包含用于配置 Scene 视图摄像机的选项。这些调整不会影响带有摄像机组件的游戏对象上的设置。 要访问摄像机设置菜单,请单击 Scene 视图工具栏中的摄像机图标。 Scene 视图工具栏的上下

    2024年02月10日
    浏览(34)
  • unity3d中多个摄像机切换代码

    2024年02月11日
    浏览(36)
  • unity3d 实现第三人称移动与摄像机调整

    首先展示效果 unity3d 关于人物移动,这里推荐使用Character Conrroller组件,优点就是可以不用处理刚体,不受重力的影响,自带物理碰撞检测。  人物移动代码包括转向 接下来就是摄影机的调整,这里使用unity自带的插件cinemachine,非常的推荐,无需使用冗杂的代码即可设计较好

    2024年02月11日
    浏览(36)
  • Unity 3D 一些对Scene窗口的调整以及摄像头的调整技巧

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 1、如何随心所欲地调整我们所看到的Scene窗口的角度呢? 2、如何让Scene窗口和Main Camera看到的一样? 今天初学Unity,刚开始就被Scene窗口和Main Camera整活

    2023年04月20日
    浏览(25)
  • 【unity】关于unity3D摄像机视角移动的几种方式详解

    目录 一、前言 二、Transform基础 1、几种坐标系 2、position和localPosition属性 3、rotation属性 三、摄像机的平移 1、键盘控制平移 2、鼠标控制平移 3、整合  四、摄像机的旋转 1、绕自身旋转 2、绕目标物体旋转 3、整合  五、优化功能 1、调整速率 2、切换目标物体 3、设置常用摄

    2024年02月04日
    浏览(32)
  • [Unity/AR]使用vuforia开发项目时无法调用电脑前置摄像头怎么办?

    我当时试了一万种方法,经过无数漫长黑夜的折磨 我发现,就是装unity的时候加了中文路径。。。 有可能还会提示DATABASES _LOAD_ERROR  也是中文路径的问题  谨以此文警醒自己 所有和uniyy相关的东西都不要放在中文路径!!!

    2024年02月07日
    浏览(30)
  • Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩

    Unity3D中运行场景时,实现摄像机的前、后、左、右、上、下,以及鼠标滚轮的放缩,鼠标右键的旋转操作。亲测有效,可供参考。 按键功能介绍:W——前;S——后;A——左;D——右;Q——下降;E——上升;鼠标右键——旋转;鼠标滚轮——放缩。 Tourcamera脚本需要挂在摄

    2024年02月11日
    浏览(43)
  • 【Unity3D】Android 打包 ④ ( Android 工程打包 | Unity 中导出安卓工程 | Android Studio 打开 Unity 导出的 Android 工程 )

    Android 工程打包 就是将 Unity 项目导出为 Android Studio 项目 , 在 Unity 编辑器中选择 \\\" 菜单栏 | File | Build Settings… \\\" 选项 , 在弹出的 \\\" Build Settings \\\" 对话框中 , 勾选上 \\\" Export Project \\\" 选框 , 然后点击右下角的 \\\" Export \\\" 导出按钮 ; 选择一个导出目录 ; 等待 Android 工程导出 ; 最终导出的

    2023年04月19日
    浏览(32)
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】

    Android相机调用有原生的Camera和Camera2,我觉得调用代码都太复杂了,CameraX调用代码简洁很多。 说明文档:https://developer.android.com/jetpack/androidx/releases/camera?hl=zh-cn 现有查到的调用资料都不够新,对于外接摄像头(USB摄像头)这类非前置也非后置摄像头的设备调用,都说是没有实

    2024年02月09日
    浏览(35)
  • 【Unity3D】正交视图与透视视图 ( 正交视图概念 | 透视视图概念 | 观察点 | 正交视图作用 | 摄像机广角设定 | 透视畸变效果 )

    透视视图 ( Perspective View ) : 近大远小 , 符合正常人眼观察 3D 世界的规律 ; 近大 : 物体 距离 观察点 ( 视点 ) 比较近时 , 显示效果比较大 ; 远小 : 物体 距离 观察点 ( 视点 ) 比较远时 , 显示效果比较小 ; 下图就是利用了 透视视图 原理 , 照像机离鸟很近 , 离人很远 ; 在 Unity 编辑

    2024年01月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包