【发布时间】:2012-09-27 11:36:55
【问题描述】:
我使用统一的 java android 活动。在 android 中,我使用相机获取预览,现在我想使用 UnitySendMessage 将此数据发送到统一,但此处只允许使用字符串。所以我将byte[] 转换为Base64 字符串,并在C# 中将其解码回byte[]。
我不知道我做错了什么,但我只得到一个红色问号的图像。 (认为这意味着纹理没有加载?)
这是我的java代码:
_camera = Camera.open();
_camera.setPreviewTexture(new SurfaceTexture(1));
_camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera cam)
{
String strData = Base64.encodeToString(data, Base64.DEFAULT);
UnityPlayer.UnitySendMessage("VideoFeed", "PostFeedData", strData);
}
});
Camera.Parameters parameters = _camera.getParameters();
parameters.setPreviewFormat(ImageFormat.JPEG);
parameters.setPreviewSize(480, 320);
_camera.setParameters(parameters);
_camera.startPreview();
这是我接收方法的函数:
byte[] byteData = Convert.FromBase64String(data);
Texture2D tex = new Texture2D(480,320);
tex.LoadImage(byteData);
renderer.material.mainTexture = tex;
我这样做是因为来自 unity 的 WebCamTexture 在我的 Android 上不起作用。 这更有趣;)
【问题讨论】:
-
统一标签适用于 Microsoft Unity。请不要滥用它。
标签: c# java android camera unity3d