This hasn't been working for me on Android (but works, as it should, on the desktop):
lal3d = Object3D.mergeAll(Loader.loadOBJ(resources.openRawResource(R.raw.head), resources.openRawResource(R.raw.headmtl), 1.0f));
Object3D openMouth = Object3D.mergeAll(Loader.loadOBJ(resources.openRawResource(R.raw.mouthopen), null, 1.0f));
Object3D blinks = Object3D.mergeAll(Loader.loadOBJ(resources.openRawResource(R.raw.blink), null, 1.0f));
Object3D smiles = Object3D.mergeAll(Loader.loadOBJ(resources.openRawResource(R.raw.smile), null, 1.0f));
lal3d.build();
openMouth.build();
blinks.build();
smiles.build();
Animation animation = new Animation(9);
animation.createSubSequence("Talks");
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.addKeyFrame(openMouth.getMesh());
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.createSubSequence("Blinks");
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.addKeyFrame(blinks.getMesh());
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.createSubSequence("Smiles");
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.addKeyFrame(smiles.getMesh());
animation.addKeyFrame(lal3d.getMesh().cloneMesh(false));
animation.setInterpolationMethod(Animation.LINEAR);
lal3d.setAnimationSequence(animation);
The result is that I can call, say, animate(.3f, 2), check that the call was made, but the model won't move. It's worth noting that it's the same OBJ model that works on the PC (meaning the keyframes are not all the same!).