Как использовать функцию обратного вызова для получения значения переменной региона в Tizen?

Я хочу написать собственное приложение на c, чтобы получить значение региона в Tizen. Скомпилированный код c должен быть запущен на телефоне Tizen, и мне нужно получить значение региона языка. Функция обратного вызова, которую я получил из источника Tizen,

int app_cb_broker_appcore_region_changed(void *data)
{
    app_region_format_changed_cb region_changed_cb;

    region_changed_cb = app_context.callbacks->region_format_changed;

    if (region_changed_cb != NULL)
    {
            region_changed_cb(app_context.user_data);
    }

    return 0;
}

Как использовать эту функцию для получения значения текущего региона?


person Ajay Soman    schedule 21.08.2012    source источник
comment
Можете ли вы объяснить разницу между этим вопросом и вашим предыдущим вопросом, помимо очевидной разницы в языке/регионе? С чем у вас проблемы, с обратными вызовами вообще или с чем-то еще?   -  person Some programmer dude    schedule 21.08.2012
comment
мне нужно реализовать текущий язык, текущий регион и текущую позицию (через GPS), используя функции обратного вызова. Я сделал обратный вызов для GPS. но так же не могу реализовать регион и язык. вот почему я спрашиваю обоих   -  person Ajay Soman    schedule 21.08.2012
comment
и я не очень хорошо знаком с такими обратными вызовами. сложно найти нужные коды из исходников tizen   -  person Ajay Soman    schedule 21.08.2012
comment
Тогда можете ли вы объяснить, почему вы не можете реализовать обратные вызовы для региона/языка? У вас есть ошибки? Вы не знаете, какие функции вызывать? Вы искали документацию по API? Вы пробовали предложение в комментариях к вашему предыдущему вопросу? Сработало или нет? Другими словами, что вы пробовали?   -  person Some programmer dude    schedule 21.08.2012
comment
документация tizen не дает необходимой информации. и для моего предыдущего qtn я не получил никаких полезных ответов. у меня нет ошибок, но значение не получает. проблема в том, что код становится сложным, когда я добавляю необходимые зависимости, такие как структуры, другие функции, файлы заголовков и т. д.   -  person Ajay Soman    schedule 21.08.2012
comment
В предыдущем вопросе кто-то попросил вас попробовать getenv("LANG"). Ты сделал это? т.е. char *lang = getenv("LANG"); Что он вернул?   -  person Some programmer dude    schedule 21.08.2012
comment
он не дает никаких значений. то же самое работает в миего, но не в тизене   -  person Ajay Soman    schedule 21.08.2012
comment
Вы пытались использовать основные функции API Tizen, связанные с местоположением? Язык хранится в этой категории.   -  person shr    schedule 26.08.2012


Ответы (1)


Я не знаком с Tizen, но насколько я вижу в коде, есть структурная переменная (app_context), которая имеет атрибут (обратные вызовы), который должен быть указатель на структуру указателей функций обратного вызова. Одним из таких указателей на функции является region_format_changed. Таким образом, вы должны определить свою функцию и передать ее этому указателю, чтобы она вызывалась (обратно) и вы могли обрабатывать передаваемые параметры (app_context.user_data).

Например.

Шаг 1. Вы определяете и пишете свою функцию обратного вызова

void my_region_changed_cb(typeof(app_context.user_data) data)
{
     //The code of your handler here
}

Шаг 2. Где-то в вашем коде инициализации вы устанавливаете атрибут обратного вызова

//...
app_context.callbacks->region_format_changed = (&my_region_changed_cb);
//...

Надеюсь, поможет.

person Javier Uria    schedule 26.10.2012