반응형

자바에서 AAA.java 에서 

아래 함수를 선언만 해놓는다


public class AAA{
@Keep
public static native void onImageReady(byte[] buffer, int width, int height);

 

그리고 cpp 에서 onImageReady 아래 처럼 만들어 놓으면
java 에서 cpp 호출 할때 이벤트 처럼 호출이 가능해진다

언리얼에서 자바를 호출 할수 있게 가능하게 만들어줌

 

w자바에서 onImageReady 호출

_activity.runOnUiThread(new Runnable() {
				@Override
				public void run() {
					Bitmap bm = BitmapFactory.decodeFile(path);
					Bitmap bitmap = rotate(bm, path);

					onImageReady(getBitmapBytes(bitmap), bitmap.getWidth(), bitmap.getHeight());

 




UE4 C++ 코드

#if PLATFORM_ANDROID

JNI_METHOD void Java_com_회사명_androidgoodies_AAA_onImageReady(JNIEnv* env, jclass clazz, jbyteArray buffer, int width, int height)
{
UE_LOG(LogTemp, Warning, TEXT("C++!"));

JNIEnv* Env = FAndroidApplication::GetJavaEnv();
bufferRef = static_cast<jbyteArray>(Env->NewGlobalRef(buffer));

Env->DeleteLocalRef(buffer);
AsyncTask(ENamedThreads::GameThread, [=]() {
TArray<uint8> byteArray = AGArrayConvertor::ConvertToByteArray(bufferRef);
UTexture2D* result = AGMediaUtils::TextureFromByteArray(byteArray, width, height);

UAGPickersBPL::OnImageReady(result);

byteArray.Empty();
});
}

 

 

본 코드는 AndroidGoodies 플러그인이 필요하다

 

 

https://www.unrealengine.com/marketplace/ko/product/android-native-goodies

반응형

+ Recent posts