私は、cpp (cocos2dx) で記述された Android アプリケーションに取り組んでいます。現在、Java で実装する必要がある facebook モジュールを実行しています。
Facebookの呼び出しは非同期であるため、Java部分からcppへのコールバックがない限り、アクションがいつ完了するかわかりません。
例えば:
JNI 部分は次のようになります。
void CCAndroidApplication::login2Facebook()
{
JniMethodInfo minfo;
if(JniHelper::getStaticMethodInfo(minfo,
"org/cocos2dx/example/myandroidtest",
"login2Facebook",
"(**POINTER TO CALLBACK METHOD DidLogin()**)V"))
{
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
minfo.env->DeleteLocalRef(minfo.classID);
}
}
Java 部分は次のようになります。
public static void login2Facebook(**POINTER TO native CALLBACK METHOD DidLogin()**)
Session.openActiveSession(me, true, new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
mSession = session;
if (session.isOpened())
{
Request.executeMeRequestAsync(session, new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (user != null)
{
**Call nativeDidLogin()**;
}
}
});
}
}
});
}
のようなメソッドを含む cpp オブジェクトを送信できればそれも問題ありません。
class delgateMethods
{
public:
void didLogin();
}
Javaから呼び出します。
私の質問は次のとおりです。JNI を介して関数へのポインターを送信し、それを Java 部分で呼び出すことは可能ですか?
ありがとう