我需要幫助,因爲我不知道該怎麼做。我是JNI的新手。Java和JNI全局變量
我正在開發一個Android應用程序,它必須使用特定的協議(OpenIGTLink)。
要使用此協議,我使用C庫。問題是我需要定義一個全局變量來存儲連接。您可以在下面的例子中看到:
igtl::ClientSocket::Pointer socket;
Java_es_iac_iactec_infraredsend_Comunicacion_OpenIGTLink_connect(
JNIEnv *env,
jobject mjobject,
jstring host,
jint port) {
socket = igtl::ClientSocket::New();
const char *chost = env->GetStringUTFChars(host, 0);
int r = socket->ConnectToServer(chost, port);
if (r != 0) {
return (jstring) "Cannot connect to the server.";
}
return (jstring) "ok";
}
和其他方法iwant做:
Java_es_iac_iactec_infraredsend_Comunicacion_OpenIGTLink_send() {
igtl::ImageMessage::Pointer imgMsg = igtl::ImageMessage::New();
imgMsg->SetDimensions(size);
imgMsg->SetSpacing(spacing);
imgMsg->SetScalarType(scalarType);
imgMsg->SetDeviceName("ImagerClient");
imgMsg->SetSubVolume(svsize, svoffset);
imgMsg->AllocateScalars();
imgMsg->Pack();
socket->Send(imgMsg->GetPackPointer(), imgMsg->GetPackSize());
}
我不知道如果我要宣佈一個java全局變量來存儲德套接字對象和從JNI訪問它,或者可以在cpp文件中定義像全局變量這樣的套接字。
謝謝大家,對不起我的英語。
有不被任何這樣的事情作爲一個Java目標變量,它是很難知道你在說什麼。 – EJP
謝謝你的回覆。我試圖解釋我的項目。我想用movil相機發送OpenIGTLink圖像。我用C++中的代碼將一些圖像從sdcard發送到服務器。現在我想從卡馬拉發送圖像,所以我有一個SurfaceView來預覽相機圖像。我正在考慮的過程是,形成Java,調用JNI函數來建立與服務器的連接,然後從Java調用另一個JNI函數來發送圖像。非常感謝! –