private void setTangoListeners() {
// Select coordinate frame pairs
ArrayList<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>();
framePairs.add(new TangoCoordinateFramePair(
TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE,
TangoPoseData.COORDINATE_FRAME_DEVICE));
private void setTangoListeners() {
// Select coordinate frame pairs
ArrayList<TangoCoordinateFramePair> framePairs = new ArrayList<TangoCoordinateFramePair>();
framePairs.add(new TangoCoordinateFramePair(
TangoPoseData.COORDINATE_FRAME_START_OF_SERVICE,
TangoPoseData.COORDINATE_FRAME_DEVICE));
// Add a listener for Tango pose data
mTango.connectListener(framePairs, new OnTangoUpdateListener() {
@Override
public void onPoseAvailable(TangoPoseData pose) {
// Format Translation and Rotation data
final String translationMsg = String.format(sTranslationFormat,
pose.translation[0], pose.translation[1],
pose.translation[2]);
final String rotationMsg = String.format(sRotationFormat,
pose.rotation[0], pose.rotation[1], pose.rotation[2],
pose.rotation[3]);
// Output to LogCat
String logMsg = translationMsg + " | " + rotationMsg;
Log.i(TAG, logMsg);
final double deltaTime = (pose.timestamp - mPreviousTimeStamp)
* SECS_TO_MILLISECS;
mPreviousTimeStamp = pose.timestamp;
mTimeToNextUpdate -= deltaTime;
// Throttle updates to the UI based on UPDATE_INTERVAL_MS.
if (mTimeToNextUpdate < 0.0) {
mTimeToNextUpdate = UPDATE_INTERVAL_MS;
// Display data in TextViews. This must be done inside a
// runOnUiThread call because
// it affects the UI, which will cause an error if performed
// from the Tango
// service thread
runOnUiThread(new Runnable() {
@Override
public void run() {
mRotationTextView.setText(rotationMsg);
mTranslationTextView.setText(translationMsg);
}
});
}
}
Приведенный выше код дает нам координаты перемещения и вращения в 3D. Когда мы перемещаем или меняем ориентацию танго, табличка mtango. setclicklistener вызывается, и внутренний код запускается и обновляет координаты.
Чего я не могу понять, так это того, как координата обновляется при вызове setclicklistener
? кто-нибудь может объяснить мне работу кода внутри onposeavailable()
?