Я нахожусь в цикле отрисовки вида Android:
Bitmap bitmap = Bitmap.createBitmap(this.getWidth(),
this.getHeight(), Bitmap.Config.ARGB_4444);
Canvas newCanvas = new Canvas(bitmap);
super.draw(newCanvas);
Log.d("AndroidUnity","Canvas Drawn!");
mImageView.setImageBitmap(bitmap);
И приведенный выше код показывает мне правильный рисунок на прилагаемом Просмотрщике изображений.
Когда я преобразую растровое изображение в байтовый массив:
ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
bitmap.copyPixelsToBuffer(byteBuffer);
byte[] bytes = byteBuffer.array();
импорт байтов в Unity не работает (показывает черное изображение на моем изображении):
imageTexture2D = new Texture2D(width, height, TextureFormat.ARGB4444, false);
imageTexture2D.LoadRawTextureData(bytes);
imageTexture2D.Apply();
RawImage.texture = imageTexture2D;
Есть какие-нибудь идеи о том, как заставить Java-байты [] отображаться как текстура / изображение в Unity? Я проверил, что байты отправляют правильно, то есть когда я отправляю байтовый массив {1,2,3,4} из Android, я получаю {1,2,3,4} на стороне единства.
это не означает, что Unity выдает ошибку при попытке передать байты как байт [], поэтому вместо этого я должен следовать этому совету на стороне C #:
void ReceieveAndroidBytes(AndroidJavaObject jo){
AndroidJavaObject bufferObject = jo.Get<AndroidJavaObject>("Buffer");
byte[] bytes = AndroidJNIHelper.ConvertFromJNIArray<byte[]>(bufferObject.GetRawObject()); }
и тривиальный байтовый [] контейнерный класс "Buffer" на стороне Java