в моем android-ndk-app я воспроизвел конфигурацию и поставил обратный вызов, аналогичный образцу cpp_basic_examples / hello_area_description из https://github.com/googlesamples/tango-examples-c
я делаю конфигурацию:
...
TangoConfig_setBool( config, "config_enable_learning_mode", true )
TangoConfig_setString( config, "config_load_area_description_UUID", ADFId.c_str() );
...
затем я подключаю обратный вызов ко всем 3 видам пар кадров:
...
TangoCoordinateFramePair pairs[3] = {
{TANGO_COORDINATE_FRAME_START_OF_SERVICE,
TANGO_COORDINATE_FRAME_DEVICE},
{TANGO_COORDINATE_FRAME_AREA_DESCRIPTION,
TANGO_COORDINATE_FRAME_DEVICE},
{TANGO_COORDINATE_FRAME_AREA_DESCRIPTION,
TANGO_COORDINATE_FRAME_START_OF_SERVICE}
};
TangoService_connectOnPoseAvailable( 3, pairs, onPoseAvailable )
...
и в onPoseAvailable ():
...
if ( pair.base == TANGO_COORDINATE_FRAME_AREA_DESCRIPTION )
{
if ( pair.target == TANGO_COORDINATE_FRAME_START_OF_SERVICE )
{
LOGVI( "\nGOOGLE TANGO POSE ADF TO SOS (CORRECTION)");
// we got a pose correction
isRelocalized = (poseData->status_code == TANGO_POSE_VALID);
}
else if ( pair.target == TANGO_COORDINATE_FRAME_DEVICE )
{
LOGVI( "\nGOOGLE TANGO POSE ADF TO DEVICE");
// apply pose as relative to learned Area
}
}
else if( pair.base == TANGO_COORDINATE_FRAME_START_OF_SERVICE )
{
if ( pair.target == TANGO_COORDINATE_FRAME_DEVICE )
{
LOGVI( "\nGOOGLE TANGO POSE SOS TO DEVICE");
// apply pose as relative to Start-Of-Service pose
}
}
...
все выглядит хорошо на выходе консоли, все коды возврата ошибок - TANGO_SUCCESS
но в выводе консоли я получаю «GOOGLE TANGO POSE ADF TO SOS (CORRECTION)» только один раз с PoseData-> status_code TANGO_POSE_INITIALIZING, но никогда со статусом TANGO_POSE_VALID.
тот же adf локализуется в приложении Google «ADF Inspector» менее чем за секунду в той же позиции, которую я тестировал с помощью своего приложения.
примечание: я создал ADF, который не может переместиться в tango explorer. Между тем я подозреваю, что проблема "доступ к adf из другого приложения", но не нашел решения в документации. я сделал "android.intent.action.REQUEST_TANGO_PERMISSION" с "ADF_LOAD_SAVE_PERMISSION", но этого, похоже, недостаточно, чтобы получить диалоговое окно, позволяющее пользователю разрешить загрузку ADF из другого приложения.