Системная информация часто отображается на экране помощи. Если вы, например, разрабатываете приложение, использующее камеру, нужно убедиться, что камера поддерживается устройством.
Создаем приложение ‘SystemInfoSample.’ Открываем файл исходного кода и вносим исправления в начало файла.
#include "systeminfosample.h"
#include <system_info.h>
typedef struct appdata {
Evas_Object *win;
Evas_Object *conform;
Evas_Object *label1;
Evas_Object *label2;
Evas_Object *label3;
Evas_Object *label4;
Evas_Object *label5;
Evas_Object *label6;
} appdata_s;
Мы объявили шесть меток, в которых будет отображаться системная информация. Добавим код выше функции create_base_gui().
static void
my_table_pack(Evas_Object *table, Evas_Object *child, int col, int row, int spanx, int spany, bool h_expand, bool v_expand, double h_align, double v_align)
{
/* Create a frame around the child, for padding */
Evas_Object *frame = elm_frame_add(table);
elm_object_style_set(frame, "pad_small");
evas_object_size_hint_weight_set(frame, h_expand ? EVAS_HINT_EXPAND : 0, v_expand ? EVAS_HINT_EXPAND : 0);
evas_object_size_hint_align_set(frame, h_align, v_align);
/* place child in its box */
{
evas_object_size_hint_weight_set(child, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(child, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(frame, child);
evas_object_show(child);
}
elm_table_pack(table, frame, col, row, spanx, spany);
evas_object_show(frame);
}
static Evas_Object *
my_button_add(Evas_Object *parent, const char *text, Evas_Smart_Cb cb, void *cb_data)
{
Evas_Object *btn;
btn = elm_button_add(parent);
elm_object_text_set(btn, text);
evas_object_smart_callback_add(btn, "clicked", cb, cb_data);
return btn;
}
static Evas_Object *
my_label_add(Evas_Object *parent, const char *text)
{
Evas_Object *btn;
btn = elm_label_add(parent);
elm_object_text_set(btn, text);
return btn;
}
Функция my_table_pack() добавляет контролы к контейнеру Table.
Функция my_button_add() создает кнопку.
Функция my_label_add() создает метку.
Добавим код в функцию create_base_gui().
/* Conformant */
ad->conform = elm_conformant_add(ad->win);
elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE);
evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(ad->win, ad->conform);
evas_object_show(ad>conform);
{
Evas_Object *tbl, *btn, *frame, *o;
/* Frame */
frame = elm_frame_add(ad->win);
elm_object_style_set(frame, "pad_medium");
elm_object_content_set(ad->conform, frame);
evas_object_show(frame);
/* Container: standard table */
tbl = elm_table_add(ad->win);
/* Make this table homogeneous for nicer, fixed layout */
elm_table_homogeneous_set(tbl, EINA_TRUE);
elm_object_content_set(frame, tbl);
evas_object_show(tbl);
{
/* Button */
btn = my_button_add(tbl, "Load System Info", btn_clicked_cb, ad);
my_table_pack(tbl, btn, 0, 0, 2, 1, EVAS_HINT_EXPAND, 0, EVAS_HINT_FILL, EVAS_HINT_FILL);
o = my_label_add(tbl, "Back Camera:");
my_table_pack(tbl, o, 0, 1, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label1 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label1, 1, 1, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
o = my_label_add(tbl, "Front Camera:");
my_table_pack(tbl, o, 0, 2, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label2 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label2, 1, 2, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
o = my_label_add(tbl, "Telephony:");
my_table_pack(tbl, o, 0, 3, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label3 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label3, 1, 3, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
o = my_label_add(tbl, "Screen Width:");
my_table_pack(tbl, o, 0, 4, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label4 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label4, 1, 4, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
o = my_label_add(tbl, "Screen Height:");
my_table_pack(tbl, o, 0, 5, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label5 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label5, 1, 5, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
o = my_label_add(tbl, "Platform Version:");
my_table_pack(tbl, o, 0, 6, 1, 1, EVAS_HINT_EXPAND, 0, 1.0, EVAS_HINT_FILL);
ad->label6 = my_label_add(tbl, "");
my_table_pack(tbl, ad->label6, 1, 6, 1, 1, EVAS_HINT_EXPAND, 0, 0.0, EVAS_HINT_FILL);
}
}
/* Show window after base gui is set up */
evas_object_show(ad->win);
Добавим обработчики событий для кнопок выше функции create_base_gui().
static void
btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
{
appdata_s *ad = data;
char buf[100];
char *sValue = NULL;
bool bValue = false;
int nValue = 0;
int ret;
ret = system_info_get_platform_bool("http://tizen.org/feature/camera.back", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label1, bValue ? "True" : "False");
}
}
system_info_get_platform_bool(char *, bool *) - это API, который запрашивает системную информацию.
Добавим код в конце функции btn_clicked_cb().
ret = system_info_get_platform_bool("http://tizen.org/feature/camera.back", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label1, bValue ? "True" : "False");
}
ret = system_info_get_platform_bool("http://tizen.org/feature/camera.front", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label2, bValue ? "True" : "False");
}
}
Запустите пример.
Добавим код в конце функции btn_clicked_cb().
ret = system_info_get_platform_bool("http://tizen.org/feature/camera.front", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label2, bValue ? "True" : "False");
}
ret = system_info_get_platform_bool("http://tizen.org/feature/network.telephony", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label3, bValue ? "True" : "False");
}
}
Запустите пример.
Добавим код в конце функции btn_clicked_cb().
ret = system_info_get_platform_bool("http://tizen.org/feature/network.telephony", bValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label3, bValue ? "True" : "False");
}
ret = system_info_get_platform_int("tizen.org/feature/screen.width", amnValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
sprintf(buf, "%d px", nValue);
elm_object_text_set(ad->label4, buf);
}
ret = system_info_get_platform_int("tizen.org/feature/screen.height", nValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
sprintf(buf, "%d px", nValue);
elm_object_text_set(ad->label5, buf);
}
}
Запустите пример.
Добавим код в конце функции btn_clicked_cb().
ret = system_info_get_platform_int("tizen.org/feature/screen.height", nValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
sprintf(buf, "%d px", nValue);
elm_object_text_set(ad->label5, buf);
}
ret = system_info_get_platform_string("http://tizen.org/feature/platform.version", sValue);
if (ret == SYSTEM_INFO_ERROR_NONE)
{
elm_object_text_set(ad->label6, sValue);
free(sValue);
}
}
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.