Unityで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 で動作しないため、これを行っています。そして、これはもっと楽しいです;)