Loading android/app/jni/com_android_bluetooth_le_audio.cpp +21 −6 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ jbyteArray prepareRawLtvArray( (const jbyte*)&kv_pair.first); offset += 1; // Value env->SetByteArrayRegion(raw_metadata, offset, 1, env->SetByteArrayRegion(raw_metadata, offset, kv_pair.second.size(), (const jbyte*)kv_pair.second.data()); offset += kv_pair.second.size(); } Loading Loading @@ -839,7 +839,19 @@ jobject prepareBluetoothLeBroadcastMetadataObject( return nullptr; } ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(sizeof(RawAddress))); // Skip the leading null char bytes int nativeCodeSize = 16; int nativeCodeLeadingZeros = 0; if (broadcast_metadata.broadcast_code) { auto& nativeCode = broadcast_metadata.broadcast_code.value(); nativeCodeLeadingZeros = std::find_if(nativeCode.cbegin(), nativeCode.cend(), [](int x) { return x != 0x00; }) - nativeCode.cbegin(); nativeCodeSize = nativeCode.size() - nativeCodeLeadingZeros; } ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(nativeCodeSize)); if (!code.get()) { LOG(ERROR) << "Failed to create new jbyteArray for the broadcast code"; return nullptr; Loading @@ -847,8 +859,10 @@ jobject prepareBluetoothLeBroadcastMetadataObject( if (broadcast_metadata.broadcast_code) { env->SetByteArrayRegion( code.get(), 0, sizeof(RawAddress), (jbyte*)broadcast_metadata.broadcast_code.value().data()); code.get(), 0, nativeCodeSize, (const jbyte*)broadcast_metadata.broadcast_code->data() + nativeCodeLeadingZeros); CHECK(!env->ExceptionCheck()); } return env->NewObject( Loading Loading @@ -1150,8 +1164,9 @@ static void CreateBroadcastNative(JNIEnv* env, jobject object, } // Padding with zeros on LSB positions if code is shorter than 16 octets env->GetByteArrayRegion(broadcast_code, code_array.size() - size, size, (jbyte*)code_array.data()); env->GetByteArrayRegion( broadcast_code, 0, size, (jbyte*)code_array.data() + code_array.size() - size); } jbyte* meta = env->GetByteArrayElements(metadata, nullptr); Loading Loading
android/app/jni/com_android_bluetooth_le_audio.cpp +21 −6 Original line number Diff line number Diff line Loading @@ -605,7 +605,7 @@ jbyteArray prepareRawLtvArray( (const jbyte*)&kv_pair.first); offset += 1; // Value env->SetByteArrayRegion(raw_metadata, offset, 1, env->SetByteArrayRegion(raw_metadata, offset, kv_pair.second.size(), (const jbyte*)kv_pair.second.data()); offset += kv_pair.second.size(); } Loading Loading @@ -839,7 +839,19 @@ jobject prepareBluetoothLeBroadcastMetadataObject( return nullptr; } ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(sizeof(RawAddress))); // Skip the leading null char bytes int nativeCodeSize = 16; int nativeCodeLeadingZeros = 0; if (broadcast_metadata.broadcast_code) { auto& nativeCode = broadcast_metadata.broadcast_code.value(); nativeCodeLeadingZeros = std::find_if(nativeCode.cbegin(), nativeCode.cend(), [](int x) { return x != 0x00; }) - nativeCode.cbegin(); nativeCodeSize = nativeCode.size() - nativeCodeLeadingZeros; } ScopedLocalRef<jbyteArray> code(env, env->NewByteArray(nativeCodeSize)); if (!code.get()) { LOG(ERROR) << "Failed to create new jbyteArray for the broadcast code"; return nullptr; Loading @@ -847,8 +859,10 @@ jobject prepareBluetoothLeBroadcastMetadataObject( if (broadcast_metadata.broadcast_code) { env->SetByteArrayRegion( code.get(), 0, sizeof(RawAddress), (jbyte*)broadcast_metadata.broadcast_code.value().data()); code.get(), 0, nativeCodeSize, (const jbyte*)broadcast_metadata.broadcast_code->data() + nativeCodeLeadingZeros); CHECK(!env->ExceptionCheck()); } return env->NewObject( Loading Loading @@ -1150,8 +1164,9 @@ static void CreateBroadcastNative(JNIEnv* env, jobject object, } // Padding with zeros on LSB positions if code is shorter than 16 octets env->GetByteArrayRegion(broadcast_code, code_array.size() - size, size, (jbyte*)code_array.data()); env->GetByteArrayRegion( broadcast_code, 0, size, (jbyte*)code_array.data() + code_array.size() - size); } jbyte* meta = env->GetByteArrayElements(metadata, nullptr); Loading