我使用统一的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;
我这样做是因为统一的 WebCamTexture 在我的 Android 上不起作用。这更有趣;)