另类操作系统 三星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日

相关文章

  • 详解kubernetes pod的编排和生命周期

    详解 Kubernetes Pod 的编排和生命周期 什么是 Kubernetes Pod? Pod 是 Kubernetes 最小的部署单元,它是由一个或多个容器组成的,容器共用一个网络栈和存储卷。同时,它也是 Kubernetes 系统中的编排单元,是调度调度器调度的最基本单位。 Pod 的生命周期 Pod 的生命周期可以分为五个阶段,分别是 Pendi…

    other 2023年6月27日
    00
  • Redis 设置密码无效问题解决

    Redis 设置密码无效问题解决攻略 Redis 是一个开源的内存数据结构存储系统,它提供了一个键值对的存储方式。在使用 Redis 时,我们可以设置密码来保护数据的安全性。然而,有时候我们可能会遇到设置密码无效的问题。本攻略将详细介绍如何解决这个问题,并提供两个示例说明。 步骤一:检查 Redis 配置文件 首先,我们需要检查 Redis 的配置文件,通常…

    other 2023年8月6日
    00
  • C语言数据结构之双向循环链表的实例

    C语言数据结构之双向循环链表的实例 什么是双向循环链表? 双向循环链表是一种链式存储结构。每个节点都包含两个指针域,分别指向前一个节点和后一个节点,形成一个环形结构。双向循环链表可以实现正向和反向遍历,插入和删除节点的时间复杂度为$O(1)$。 双向循环链表的结构体定义 typedef struct Node { ElemType data; struct …

    other 2023年6月27日
    00
  • VisualStudio Code怎么切换大小? vscode代码切换大小写的教程

    Visual Studio Code 切换大小写的教程 Visual Studio Code 是一款功能强大的代码编辑器,它提供了许多快捷键和功能来提高开发效率。下面是关于如何在 Visual Studio Code 中切换大小写的完整攻略。 方法一:使用快捷键 Visual Studio Code 提供了一组快捷键来切换选中文本的大小写。以下是常用的快捷键…

    other 2023年8月16日
    00
  • uaf漏洞学习

    以下是UAF(Use-After-Free)漏洞学习的完整攻略: 步骤1:了解UAF漏洞 在学习UAF漏洞之前,需要了解UAF漏洞的基本概念和原理。UAF洞通常发生在程序释放了一个对象的内存空间后,但仍然继续使用该内存空间。攻击者可以利用UAF漏洞来执行任意代码或者导致程序崩溃。UAF漏洞的修复通常需要程序员正确地管理内存空间,避免重复释放或者使用已经释放的…

    other 2023年5月6日
    00
  • 无线路由器的ip地址忘了的解决办法

    无线路由器的IP地址忘了的解决办法攻略 如果你忘记了无线路由器的IP地址,不用担心,以下是一份详细的解决办法攻略,帮助你找回路由器的IP地址。 步骤1:查找路由器的默认IP地址 大多数无线路由器都有一个默认的IP地址,你可以通过以下几种方式来查找它: 查找路由器的用户手册:在路由器的用户手册中,你可以找到关于默认IP地址的信息。手册通常会提供一个默认的管理网…

    other 2023年7月30日
    00
  • .NET 8新预览版使用 Blazor 组件进行服务器端呈现(项目体验)

    .NET 8新预览版使用 Blazor 组件进行服务器端呈现(项目体验) Blazor 是一种在Web浏览器中运行 .NET代码的方法,可以在服务器上对 Blazor 组件进行呈现。这意味着可以使用 C# 和 .NET框架进行服务器端呈现,并将 UI 组件传输到客户端进行交互。 下面是使用 .NET 8 新预览版进行 Blazor 服务器端呈现的完整攻略: …

    other 2023年6月27日
    00
  • Python学习之书写格式及变量命名

    Python学习之书写格式及变量命名攻略 1. 书写格式 在Python中,良好的书写格式可以提高代码的可读性和可维护性。以下是一些常见的书写格式规范: 1.1 缩进 Python使用缩进来表示代码块,通常使用4个空格或者一个制表符进行缩进。缩进的正确使用可以使代码结构清晰,建议在每个代码块之后进行缩进。 示例: if condition: # 代码块1 s…

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