いくつかの C 関数で構成される JNI ライブラリを使用しています。function1 では、次のようにサイズ 128 のバイト配列を渡します。
static byte[] byteAry = new byte[128];
long ret1 = MyLibrary.function1(byteAry);
関数 2 では、次のように、さらに処理するために function1 によって返されたバイト配列を渡します。
final int ret2 = MyLibrary.function2(byteAry);
function2 の C コードでは、次のように byteAry の長さを取得します。
jsize jsArruLen = (*env)->GetArrayLength(env,jDeviceListArr);
function1 に続いて function2 を呼び出すと、bytearray が 128 バイトとして作成されるため、jsArruLen は 128 になります。
ただし、文字列を手動で byteary にコピーし、次のようにして function2 に渡すと:
final String mystring = "this is a string";
byteAry = mystring.getBytes();
jsArruLen の長さは、mystring の長さである 16 バイトのみです。サイズを変更せずに文字列を byteAry に手動でコピーするにはどうすればよいですか?
ありがとう。