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

相关文章

  • 在android中将string转换为int

    以下是关于“在Android中将String转换为int”的完整攻略,包含两个示例。 在Android中将String转换为int 在Android开发中,我们经常需要将String类型的数据转换为int类型。以下是关于如何在Android中将String转换为int的详细攻略。 1. 使用Integer.parseInt()方法 在Android中,我们可…

    other 2023年5月9日
    00
  • Administrator系统管理员帐户如何修改名称

    讲解如何修改Administrator账户名称: 首先,以管理员身份登录操作系统以获取管理权限。 打开Windows PowerShell或者命令提示符窗口,并使用net user命令进行修改用户名操作。具体命令如下: net user administrator 新用户名 其中,新用户名可根据用户自己的需求进行修改。- 等待修改完成,重新启动计算机以使修改…

    other 2023年6月27日
    00
  • js正则表达式大全

    以下是关于“JS正则表达式大全”的完整攻略,包括基本概念、使用方法和两个示例。 基本概念 正则表达式是一种用于匹配字符串的模式。在JavaScript中,可以使用RegExp对象来创建和使用正则表达式。正则表达式由字符和元字符组成,其中字符表示匹配具体的字符,元字符表示匹配一类字符或特殊字符。在JavaScript中,可以使用正则表达式进行字符串的匹配、替换…

    other 2023年5月7日
    00
  • php 静态属性和静态方法区别详解

    PHP 静态属性和静态方法区别详解 1. 静态属性 静态属性是属于类的属性,不属于类的实例对象。它可以在类内部定义,并且通过self::或类名::的方式访问,而不需要实例化类。 静态属性的主要特点包括:- 所有实例对象共享同一个静态属性的值。- 静态属性可以在类内外使用,且所有实例对象和类都可以访问。- 静态属性可以在类外直接使用,通过类名::$静态属性名的…

    other 2023年6月28日
    00
  • android-photoview的使用-全方向滑动浏览

    Android-PhotoView的使用-全方向滑动浏览 Android-PhotoView是一个开源的Android库,它提供了一个可缩放的ImageView,支持手势缩放、双击缩放拖动等功能。在本文中,我们将介绍如何使用Android-PhotoView实现全方向滑动浏览的功能。 步骤一:添加依赖 在项目的build.gradle文件中添加以下依赖: d…

    other 2023年5月7日
    00
  • 为EasyUI的Tab标签添加右键菜单的方法

    为EasyUI的Tab标签添加右键菜单方法如下: 1. 引入jQuery插件 为了实现EasyUI的Tab标签添加右键菜单,需要使用到jquery.contextmenu插件,所以首先需要引入jquery.contextmenu插件到项目中。 <head> <script type="text/javascript" s…

    other 2023年6月27日
    00
  • Vuejs第七篇之Vuejs过渡动画案例全面解析

    Vuejs第七篇之Vuejs过渡动画案例全面解析 1. 介绍 本篇攻略将详细讲解Vue.js过渡动画的使用方法和应用案例,帮助读者了解如何在Vue.js应用中添加各种过渡效果。过渡动画在Web开发中非常常见,可以为应用增加视觉上的吸引力和交互性。 2. 过渡的类型 Vue.js提供了多种过渡的类型,包括CSS过渡、CSS动画和JavaScript钩子函数。下…

    other 2023年6月28日
    00
  • 微信程序开发之-weixinjsbridge调用

    微信程序开发之-weixinjsbridge调用 在微信小程序开发中,weixinjsbridge是一个非常重要的工具,它可以让我们在小程序中调用微信原生API。本文将详细讲解如何使用weixinjsbridge调用微信的原生API。 weixinjsbridge简介 weixinbridge是微信小程序提的一个JavaScript库,它可以让我们在小程序中…

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