(个人)AR电子书系统创新实训第二周(2)

打包安卓遇到的问题&测试二维码生成功能

打包安卓

在上一篇报告中我成功地做出了一个简单的二维码识别项目,于是我便尝试将其打包为安卓格式。安卓文件确实顺利地打包出来了,程序也可以运行,但出现了一个意想不到的问题——画面逆时针旋转了90度!
这里写图片描述
我尝试修改了一下打包设置,如果将应用设定为横屏似乎就不会有这个问题,但是我们的应用在设计上应当是竖屏使用的,所以不能固定其方向。所以我决定换一个思路。

首先,我再屏幕组件上加了一个图片组件,并将其长宽设为一致,同时,我将这个图片的渲染角度设为-90度,这样便手动将图像转正了。
这里写图片描述
接着,我再代码中新声明了一个图像变量,将场景中的图片组件赋值给此变量后,我在代码中将原来在OnGUI()中绘制的相机图像给了这个图像变量,这样相机画面便可以显示在图像组件上了。

    void Update () {
        if (c == null)
        {
            c = camTexture.GetPixels32();
        }
        //原位于OnGUI中的绘制函数被移动到此处
        img.canvasRenderer.SetTexture(camTexture);
        testText.text = url;
    }

运行结果
这里写图片描述

测试二维码生成功能

在第一周的报告里,我已经提到过ZXing.Net中的二维码编码功能,这周,我准备对其进行测试,具体步骤如下:
1.新建一个地图,加入canvas组件和图片组件
2.新建一个C#脚本,脚本内容如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using ZXing;
using ZXing.QrCode;

public class QRCodeGenerator : MonoBehaviour {

    public Image img;
    Texture2D encoded;
    // Use this for initialization
    void Start () {
        encoded = new Texture2D(256, 256);
        Color32[] color32 = Encode("www.baidu.com", encoded.width, encoded.height);
        encoded.SetPixels32(color32);
        encoded.Apply();

    }

    // Update is called once per frame
    void Update () {
        img.canvasRenderer.SetTexture(encoded);
    }

    private static Color32[] Encode(string textForEncoding, int width, int height)
    {
        var writer = new BarcodeWriter
        {
            Format = BarcodeFormat.QR_CODE,
            Options = new QrCodeEncodingOptions
            {
                Height = height,
                Width = width
            }
        };
        return writer.Write(textForEncoding);
    }
}

该脚本的Encode函数便是之前提到的生成二维码函数,以字符串和图像长,宽为参数,返回一个颜色矩阵。然后,在Start()函数下调用该函数,这次我给的网址(字符串)是百度主页,把返回的颜色矩阵输入到一个Texture2D对象中,再将此对象赋值给地图中的图片组件中。

运行结果:
这里写图片描述

使用之前的识别软件做一下测试:
这里写图片描述
最下方显示出了解析的文字“www.baidu.com”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值