Wie erstelle ich Rückrufe zwischen Android-Code und nativem Code?

Ich habe eine Anforderung zum Erstellen von Rückrufen zwischen nativem Code (C-Sprachcode) und Android-Code. Ich habe JNI-Funktionen zum Aufrufen geschriebenC code vom android so

JNI-Code hier

#include <android/log.h>

void initSocket(); 

#ifdef __cplusplus
extern "C" {
#endif

  JNIEXPORT void JNICALL Java_org_pjsip_pjsua_pjsua_1appJNI_initSocket(JNIEnv *jenv, jclass jcls) {

    __android_log_write(ANDROID_LOG_INFO, " JNI CODE ", " APP INIT SOCKET");        
    initSocket();        
  }
}

C-Code sieht so aus

void initSocket()
{
    /// some more stuff
    printf("  initSocket function ");           
}

static int worker_thread(void *unused)
{       
    /// some more stuff
    return 0;
}

pj_bool_t on_rx_data1(pj_stun_sock *stun_sock, void *pkt, unsigned pkt_len, const pj_sockaddr_t *src_addr, unsigned addr_len)
{      
    /// some more stuff    
    return PJ_TRUE;
}

pj_bool_t on_data_sent1 (pj_stun_sock *stun_sock, pj_ioqueue_op_key_t *send_key, pj_ssize_t sent)
{        
    /// some more stuff
    return PJ_TRUE;  
}
pj_bool_t on_status1(pj_stun_sock *stun_sock, pj_stun_sock_op op, pj_status_t status)
{        
    /// some more stuff
    returnsockaddress();            
    return PJ_TRUE;
}

char* returnsockaddress()
{     
    /// some more stuff   
    return ipinttostring(sock_address);
}

char* ipinttostring(unsigned int addr )
{       
    /// some more stuff
    return fullIP;
}

Dies ist der Code, den ich in C-Sprache benutze und aufrufeinitSocket() Funktion von JNI. Jetzt möchte ich einen erstellencallback davonC code wannon_status1 Funktion, die in diesem Code aufgerufen wird. Dieses on_status1 wird in wenigen Sekunden wiederholt, wann immer es aufgerufen wird. Ich möchte eine Funktion im Android-Code aufrufen.

BEARBEITEN

Ich habe es so versucht, aber es ist mir nicht gelungen

JNIEXPORT void JNICALL Java_org_pjsip_pjsua_pjsua_1appJNI_initSocket(JNIEnv *jenv, jobject obj) {

      __android_log_write(ANDROID_LOG_INFO, " JNI CODE ", " APP INIT SOCKET");            
      initSocket();             
      jclass cls = jenv->GetObjectClass(obj);
      jmethodID methodid = env->GetMethodID(cls, "callback", "()V");            
      if(!methodid) {
          return;
      }            
      jenv->CallVoidMethod(obj , methodid);            
  }

Ich wurde im Android-Code als solche Funktion deklariert.

public static void callback(String value) {
    Log.e(TAG, "value:" + value);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage