2014-02-05 2 views
2

나는 C/C++ 측의 탭에서 좌표를 가져 와서 TextView (Java 측에서)에 표시 할 수있는 사람이 누구인지 알고 있습니까? 나는 안드로이드 NDK 개발을 처음 사용하기 때문에 많은 도움이 필요하다.Android NDK - 탭에서 좌표를 가져 와서 TextView에 표시하는 방법?

C/C++ 쪽에서 좌표를 가져 오는 데 AMotionEvent_getXAMotionEvent_getY을 사용해야한다고 가정합니다. 그러나 이러한 값을 Java로 전달하여 TextView에 표시하는 방법을 알고 싶습니다. 누구도 날 여기 도와 줄 수 있니?

+0

이 취급이 조금 까다 롭습니다. NDK 디렉토리에서 네이티브 액티비티 예제를 보았고 그 중 하나에서 input 함수는 state-> onInputEvent = engine_handle_input을 사용하는 네이티브 액티비티의 일부로 정의됩니다. 선. 이 부분은 귀하의 경우에는 문제가되지 않지만 문제는 텍스트보기가 Java 활동 내에 있어야하며 Android에서 동시에 두 가지 활동을 수행 할 수 없다는 것입니다. 인 텐트를 사용하여 C++에서 Java 활동을 시작하려는 것인지 여부는 알 수 없습니다. 그 외에도 C++에서 Java 함수를 호출하는 것은 쉽습니다. JNI 예제를 검색하면 아이디어를 얻을 수 있습니다. – eozgonul

답변

1

자바 객체를 JNI/C++에서 호출하려면 jmethod를 env-> GetMethodID 및 env-> CallXXXMethod로 질의 할 필요가 있습니다. 여기에는 많은 예제가 있습니다.

또한 자바 쪽에서 입력을 받아서 C++ 처리기로 전달하면 View 및 다른 개체와 같은 항목에 더 많이 액세스 할 수 있습니다.

2

Android NDK는 매우 제한되어 있습니다. 나는 Java 측에서의 처리를 다루고 그것을 NDK로 전달한다. NDK를 사용하여 그래픽 (OpenGL ES 2.0)을 렌더링하고 게임 논리를 작성합니다.

터치를 TextView로 전달하려면 Android NDK가 필요하지 않습니다.

+0

이것은 문제의 해결책이 아닙니다. 분명히 그는 터치 이벤트가 발생할 때 C++에서 Java에 이르는 콜백 메커니즘이 가능한지 테스트하기 위해 텍스트보기를 사용하고 있습니다. 그리고 NDK는 Java 측에 비해 제한 될 수 있지만 "매우"제한적이지는 않습니다. – eozgonul

+1

그가 초보자이고 도움이 필요하면 자바 측에서는 문제를 해결하는 것이 올바른 해결책인지 확인하십시오. 먼저 더 넓은 플랫폼 지원을 얻습니다. 우리 아버지는 여전히 안드로이드 2.2 전화를 가지고 있습니다. 두 번째로 코드 및 디버그가 더 간단합니다. – Shuriken

+0

@ Shuriken 그는 터치 이벤트를 다루는 데 어느 쪽이 더 나은지 묻지 않습니다. 자바에서 터치 이벤트를 쉽게 처리 할 수 ​​있다는 사실을 잘 알고 있다고 생각할 수도 있습니다.하지만 그는 그것을 원하지 않습니다. 조언으로 줄 수는 있지만 "NDK에서 터치 이벤트를 처리하고이를 Java 텍스트보기로 보내는 것"은 분명히 솔루션이 아닙니다. 더욱이 플랫폼 지원이 확장되면 어떻게 될까요? NDK가 Android 및 Java를 지원하는 모든 플랫폼을 지원할 수 있습니까? – eozgonul

1

TextView를 사용하여 터치 값을 기록하는 경우 Android 로깅을 사용하는 것이 좋습니다. 그것은 NDK와 자바 양쪽에서 사용할 수 있습니다.

자바

Log.i("GAME", "Touch X: " + x + " Y: " + y); 

NDK는

__android_log_print(ANDROID_LOG_INFO,"GAME", "Touch %f %f", x, y); 
관련 문제