-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Description
Describe the bug
JNI DETECTED ERROR IN APPLICATION: fid == null in call to GetObjectField from long com.google.android.gms.internal.mlkit_vision_mediapipe.zzhx.zzj(long, com.google.android.gms.internal.mlkit_vision_mediapipe.zzib): #00 pc 0x752dc (abort [/apex/com.android.runtime/lib64/bionic/libc.so]) (BuildId: 8d9c623f58f2dae8107c6cbf3e9bfe12) #01 pc 0x8fdde0 (art::Runtime::Abort(char const*) [/apex/com.android.art/lib64/libart.so]) (BuildId: 6cac8d43981d3cdaec56bfd359a7c85c) #02 pc 0x1654c (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*) [/apex/com.android.art/lib64/libbase.so]) (BuildId: 4d7605789d21176764345a0353194396) #03 pc 0x15a4c (android::base::LogMessage::~LogMessage() [/apex/com.android.art/lib64/libbase.so]) (BuildId: 4d7605789d21176764345a0353194396) #04 pc 0x323bcc (art::JavaVMExt::JniAbort(char const*, char const*) [/apex/com.android.art/lib64/libart.so]) (BuildId: 6cac8d43981d3cdaec56bfd359a7c85c) #05 pc 0x64fa0c (art::JNI<false>::GetObjectField(_JNIEnv*, _jobject*, _jfieldID*) [/apex/com.android.art/lib64/libart.so]) (BuildId: 6cac8d43981d3cdaec56bfd359a7c85c) #06 pc 0x2efdc
kotlin_version = "2.0.21"
buildToolsVersion = "35.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
ndkVersion = "28.0.12674087"
To Reproduce
- App launch
public class PoseDetectorProcessor extends VisionProcessorBase<Pose> {
private static final String TAG = "PoseDetectorProcessor";
private final PoseDetector detector;
private final boolean visualizeZ;
private final boolean rescaleZForVisualization;
private final boolean showInFrameLikelihood;
PoseDetectorProcessor(
Context context,
PoseDetectorOptionsBase options,
boolean visualizeZ,
boolean rescaleZForVisualization,
boolean showInFrameLikelihood
) {
super(context);
this.visualizeZ = visualizeZ;
this.rescaleZForVisualization = rescaleZForVisualization;
this.showInFrameLikelihood = showInFrameLikelihood;
this.detector = PoseDetection.getClient(options);
}
public static PoseDetectorProcessor getInstance(Context context) {
PoseDetectorOptions options = new PoseDetectorOptions.Builder()
.setDetectorMode(PoseDetectorOptions.SINGLE_IMAGE_MODE)
.build();
// AccuratePoseDetectorOptions options = new AccuratePoseDetectorOptions.Builder()
// .setDetectorMode(AccuratePoseDetectorOptions.SINGLE_IMAGE_MODE)
// .build();
return new PoseDetectorProcessor(context, options, false, true, false);
}
@Override
public void stop() {
super.stop();
detector.close();
}
@Override
protected Task<Pose> detectInImage(InputImage image) {
return detector.process(image);
}
@Override
protected Task<Pose> detectInImage(MlImage image) {
return detector.process(image);
}
@Override
protected void onSuccess(@NonNull Pose poseWithClassification, @NonNull GraphicOverlay graphicOverlay) {
if (!graphicOverlay.isPoseDetectorEnabled()) return;
graphicOverlay.add(
new PoseGraphic(
graphicOverlay,
poseWithClassification,
showInFrameLikelihood,
visualizeZ,
rescaleZForVisualization));
}
@Override
protected void onFailure(@NonNull Exception e) {
Log.e(TAG, "Pose detection failed!", e);
}
@Override
protected boolean isMlImageEnabled(Context context) {
// Use MlImage in Pose Detection by default, change it to OFF to switch to InputImage.
return true;
}
}
public abstract class VisionProcessorBase<T> implements VisionImageProcessor {
private static final String TAG = "VisionProcessorBase";
protected final Executor executor;
protected VisionProcessorBase(Context context) {
executor = ContextCompat.getMainExecutor(context);
}
SDK Info:
- implementation 'com.google.mlkit:pose-detection:18.0.0-beta5'
- implementation 'com.google.mlkit:pose-detection-accurate:18.0.0-beta5'
Smartphone:
- OS version: android 16 Model: Pixel 6
- OS version: android 16 Model: Pixel 8
- OS version: android 12 Model: Motorola One 5G UW Ace
- android 16 Model: Galaxy S24 Ultra
- android 13 Model: Galaxy Note20 Ultra 5G
- 15 Model: Galaxy A54 5G