另类操作系统 三星Tizen2.4测试版SDK已经向开发者推送下载

另类操作系统 三星Tizen2.4测试版SDK已经向开发者推送下载

从本篇文章中,你将会了解到如何下载、安装并使用三星Tizen2.4测试版SDK进行开发。

下载

  1. 访问三星的开发者网站(https://developer.tizen.org/development/sdk/download)。
  2. 在“Tizen Studio”页面选择合适的平台进行下载,Windows、macOS和Ubuntu都可下载,这里以Windows为例。
  3. 点击下载链接,等待下载完成。

安装

  1. 双击下载的安装程序,按照提示进行安装。
  2. 安装完后启动Tizen Studio。

创建新项目

  1. 启动Tizen Studio后,点击“File” -> “New” -> “Tizen Project” -> “Tizen Wearable 2.3 Native Application”。
  2. 在弹出的对话框中填写项目信息,例如应用名称、包名、版本号等。
  3. 点击“Finish”进行创建。

运行项目

  1. 点击“Run” -> “Tizen Emulator Manager”,在弹出的窗口中创建一个新的模拟器。
  2. 选择所要运行的模拟器,点击“Run”进行运行。
  3. 在模拟器中选择你创建的项目并运行。

示例 1

下面通过一个简单的示例代码来展示在Tizen Studio中如何编写一个简单的应用:

#include <app.h>
#include <Elementary.h>

int main(int argc, char *argv[]) {
    ui_app_lifecycle_callback_s event_callback = {0,};
    app_event_handler_h handlers[5] = {NULL, };
    int ret;

    ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, app_event_callback, &event_callback);
    ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, app_event_callback, &event_callback);
    ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, app_event_callback, &event_callback);
    ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, app_event_callback, &event_callback);
    ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, app_event_callback, &event_callback);

    event_callback.create = create_cb;
    event_callback.terminate = terminate_cb;
    event_callback.pause = pause_cb;
    event_callback.resume = resume_cb;
    event_callback.app_control = app_control_cb;
    event_callback.ui_app_lang_changed = ui_app_lang_changed_cb;
    event_callback.ui_app_orient_changed = ui_app_orient_changed_cb;
    event_callback.ui_app_region_changed = ui_app_region_changed_cb;

    ret = ui_app_main(argc, argv, &event_callback, NULL);
    if (ret != APP_ERROR_NONE) {
        dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
    }

    return ret;
}

static bool create_cb(void *data) {
    ui_app_lifecycle_callback_s *callbacks = data;

    /* Hook to take necessary actions before main event loop starts
        Initialize UI resources
        Open a connection to the sensor manager
        Register callbacks for sensor events if it is necessary
    */

    return true;
}

static void terminate_cb(void *data) {
    /* Release all resources. */
}

static void pause_cb(void *data) {
    /* Take necessary actions when application becomes invisible. */
}

static void resume_cb(void *data) {
    /* Take necessary actions when application becomes visible. */
}

static void app_control_cb(app_control_h app_control, void *data) {
    /* Handle the launch request. */
}

static void ui_app_lang_changed_cb(app_event_info_h event_info, void *user_data) {
    /* APP_EVENT_LANGUAGE_CHANGED */
    char *locale = NULL;
    system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
    elm_language_set(locale);
    free(locale);
}

static void ui_app_orient_changed_cb(app_event_info_h event_info, void *user_data) {
    /* APP_EVENT_DEVICE_ORIENTATION_CHANGED */
}

static void ui_app_region_changed_cb(app_event_info_h event_info, void *user_data) {
    /* APP_EVENT_REGION_FORMAT_CHANGED */
}

示例 2

下面通过一个简单的图形化界面来展示如何在Tizen Studio中创建一个简单的用户界面:

#include <app.h>
#include <Elementary.h>

enum {
    SQUARE = 0,
    CIRCLE = 1,
    RECTANGLE = 2,
    ITEM_LAST,
};

static const char *_icon_path[] = {
    "images/ico_square.png",
    "images/ico_circle.png",
    "images/ico_rectangle.png",
};

typedef struct appdata {
    Evas_Object *win;
    Evas_Object *conform;
    Evas_Object *layout;
    Evas_Object *list;
} appdata_s;

static void win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) {
    ui_app_exit();
}

static void item_selected_cb(void *data, Evas_Object *obj, void *event_info) {
    appdata_s *ad = data;
    int index = (int)elm_object_item_data_get(event_info);

    switch (index) {
        case SQUARE:
            dlog_print(DLOG_INFO, "mytag", "Square is selected!");
            break;
        case CIRCLE:
            dlog_print(DLOG_INFO, "mytag", "Circle is selected!");
            break;
        case RECTANGLE:
            dlog_print(DLOG_INFO, "mytag", "Rectangle is selected!");
            break;
        default:
            break;
    }
}

static void create_base_gui(appdata_s *ad) {
    /* Window */
    elm_config_use_sync_set(EINA_TRUE);
    ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
    elm_win_autodel_set(ad->win, EINA_TRUE);
    elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
    evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL);

    /* Conformant */
    ad->conform = elm_conformant_add(ad->win);
    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);

    /* Create a list view */
    ad->list = elm_list_add(ad->conform);
    evas_object_show(ad->list);

    elm_list_item_append(ad->list, "Square", NULL, NULL, item_selected_cb, ad);
    elm_list_item_append(ad->list, "Circle", NULL, NULL, item_selected_cb, ad);
    elm_list_item_append(ad->list, "Rectangle", NULL, NULL, item_selected_cb, ad);

    /* Layout */
    ad->layout = elm_layout_add(ad->conform);
    elm_layout_theme_set(ad->layout, "layout", "application", "default");
    evas_object_size_hint_weight_set(ad->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_object_content_set(ad->conform, ad->layout);

    elm_object_part_content_set(ad->layout, "elm.swallow.content", ad->list);

    /* Show window */
    evas_object_show(ad->win);
}

int main(int argc, char *argv[]) {

    appdata_s ad = {NULL,};

    ui_app_lifecycle_callback_s event_callback = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
    app_event_handler_h handlers[5] = {NULL, };
    int ret = 0;

    /* Hook to take necessary actions before main event loop starts
        Initialize UI resources
        Open a connection to the sensor manager
        Register callbacks for sensor events if it is necessary
    */

    //create_base_gui(&ad);
    create_base_gui(&ad);

    ret = ui_app_main(argc, argv, &event_callback, &ad);

    /* Hook to take necessary actions before main event loop starts
        Release all resources
    */

    return ret;
}

以上就是下载、安装和使用Tizen Studio开发三星Tizen2.4测试版SDK的完整攻略,通过这些步骤,你可以轻松上手开发Tizen应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:另类操作系统 三星Tizen2.4测试版SDK已经向开发者推送下载 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 关于JavaScript的单双引号嵌套问题

    关于JavaScript的单双引号嵌套问题攻略 在JavaScript中,字符串可以使用单引号(’)或双引号(\”)来表示。有时候,我们需要在字符串中嵌套引号,这就引发了单双引号嵌套的问题。本攻略将详细介绍如何正确处理这个问题,并提供两个示例说明。 1. 使用转义字符 一种解决单双引号嵌套问题的方法是使用转义字符(\)。转义字符可以将特殊字符转义为普通字符,…

    other 2023年7月28日
    00
  • javascript getElementsByClassName函数

    JavaScript getElementsByClassName函数攻略 何为getElementsByClassName函数? getElementsByClassName是JavaScript中的一个内置函数,用于通过指定的类名来获取文档中所有具有该类名的元素。这个函数返回一个动态的HTML集合,可以根据需要进行遍历和操作。 语法 document.g…

    other 2023年6月28日
    00
  • 深入理解Vue keep-alive及实践总结

    深入理解Vue keep-alive及实践总结 什么是 Vue keep-alive? Vue keep-alive 是 Vue.js 的一个内置组件,用于缓存组件。当一个组件被包裹在 Vue keep-alive 组件中时,这个组件就可以被缓存起来,在需要时随时重新加载。 使用示例 基本用法 <template> <div> &lt…

    other 2023年6月27日
    00
  • 关于c++:每帧调用glgetuniformlocation()

    在C++中,我们可以使用OpenGL库来进行图形渲染。在每一帧中,我们可能需要调用glGetUniformLocation()函数来获取着色器程序中的uniform变量的位置。在本攻略,我们将详细讲如何在每一帧中调用glGetUniformLocation()函数,并提供两个示例。 在每一帧中调用glGetUniformLocation()函数 在OpenG…

    other 2023年5月9日
    00
  • linuxnohup不输出到nohup.out

    以下是关于Linux中nohup命令不输出到nohup.out文件的完整攻略: 什么是nohup命令? nohup命令是Linux中的一个工具,用于在后台运行命令,即使用户退出终端或关闭SSH连接,命令也会继续运行。默认情况下,nohup命令的输出会被重定向到nohup.out文件中。 如何使用nohup命令不输出到nohup.out文件? 以下是使用noh…

    other 2023年5月6日
    00
  • tp5.1 框架路由操作-URL生成实例分析

    TP5.1 框架路由操作-URL生成实例分析攻略 在TP5.1框架中,URL生成是一项重要的功能,它允许我们通过路由名称和参数生成URL链接。本攻略将详细讲解TP5.1框架中的路由操作和URL生成的实例分析。 1. 路由操作 在TP5.1框架中,路由操作是通过定义路由规则来实现的。我们可以在route目录下的route.php文件中定义路由规则。以下是一个示…

    other 2023年8月5日
    00
  • Linux常用的磁盘管理及文件目录管理命令总结

    Linux常用的磁盘管理命令总结 磁盘分区和格式化 fdisk 命令:用于对磁盘进行分区操作。 示例: fdisk /dev/sda mkfs 命令:用于对分区进行格式化操作。 示例: mkfs -t ext4 /dev/sda1 磁盘挂载和卸载 mount 命令:用于挂载文件系统。 示例: mount /dev/sda1 /mnt umount 命令:用于…

    other 2023年6月27日
    00
  • 自制url转换器

    以下是“自制URL转换器”的完整攻略: 自制URL转换器 URL转换器是一种常用的工具,用于将长URL转换为短URL,以便于在短信、微博等场景使用。在本攻略中,我们将使用Python编写一个简单的URL转换器。 步骤 安装Flask框架。 bash pip install flask 创建一个名为app.py的Python文件,并添加以下代码: “`pyt…

    other 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部