자바에서 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
반응형
'게임엔진(GameEngine) > Unreal4' 카테고리의 다른 글
Widget for painting (0) | 2022.11.23 |
---|---|
JNI Data Type Mapping to C/C++ (0) | 2022.10.07 |
UE4 RPC - Replicate (0) | 2022.09.15 |
배열 타입 Json 읽어들이기 [Json Array To Unreal Engine [C++] ] (0) | 2022.08.31 |
순수 가상함수 사용 한는 방법? (0) | 2022.08.26 |