如何在Tizen-wearable 4.0上注册?

问题描述 投票:0回答:1

我正在尝试在SM-R800 tizen-wearable app 4.0(三星Galaxy手表)上设置应用程序,除了显示环境光和环境压力之外,它还会在注册时显示水龙头。 (这是在C#中完成的)

我已经尝试使用Window类来尝试传递我的触摸事件参数,因为根据可用的Tizen文档,似乎“View”类不能执行此操作。

//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
// using ElmSharp; can't be used because it is redundant with Xamarin    forms namespace
using Xamarin.Forms;
using Tizen.Wearable.CircularUI.Forms;
using Tizen.Sensor;
using Tizen.NUI;

namespace TizenWearableApp6
{

    public class App : Application
    {
        LightSensor sensor;
        Label textlabel;
        PressureSensor sensor2;
        Label barometer_label;
        //Touch touch;

        public Vector2 startPos;
        public Vector2 direction;
        //Label m_Text;

        protected override void OnStart()
        {
            //base.OnCreate();
            //Initialize();
        }

        public App()
        {

            /*
            Window window = Window.Instance;
            window.TouchEvent += WindowTouched;
            //touch = new Touch(); //this line has to be in a method like "public App()"


            m_Text = new Label
            {
                HorizontalTextAlignment = TextAlignment.Center
            };

            void WindowTouched(object sender, Window.TouchEventArgs e)
            {
                m_Text.Text = "I have been touched!";
            } */

            if (PressureSensor.IsSupported)
            {
                sensor2 = new PressureSensor(); //instantiate HERE
                barometer_label = new Label
                {
                    HorizontalTextAlignment = TextAlignment.Center
                };

                sensor2.Start(); //Barometer sensor
                sensor2.DataUpdated += OnDataUpdated2; //Subscribed event handler (OnDataUpdated2) to event (DataUpdated)

                void OnDataUpdated2(object sender, PressureSensorDataUpdatedEventArgs e) // event handler for humidity
                {
                    barometer_label.Text = "Ambient pressure Level: " + e.Pressure;
                }
            }
            else
            {
                barometer_label = new Label()
                {
                    HorizontalTextAlignment = TextAlignment.Center,
                    Text = "Does not exist"
                };
            }

            //-----------------Light Sensor------------------------
            sensor = new LightSensor(); //"new" because I'm instantiaing a new object of the light sensor class

            textlabel = new Label
            {
                HorizontalTextAlignment = TextAlignment.Center
            };

            sensor.Start(); //Light sensor
            sensor.DataUpdated += OnDataUpdated1; //Subscribed event handler (OnDataUpdated1) to event (DataUpdated)

            void OnDataUpdated1(object sender, LightSensorDataUpdatedEventArgs e) //event handler
            {
                textlabel.Text = "Light level: " + e.Level;
            }

            // The root page of your application
            MainPage = new CirclePage
            {
                Content = new StackLayout
                {

                    VerticalOptions = LayoutOptions.Center,
                    Children = {
                        textlabel,
                        barometer_label,
                        //m_Text
                    }
                }
            };
        }


        /*  protected override void OnStart()
          {
              // Handle when your app starts

          } */

        protected override void OnSleep()
        {
            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
} 

使用上面的代码,我注释掉了我正在尝试的东西(失败)并且只留下了我的代码部分。我希望看到环境光线,压力的实时更新,并期待一个字母“我被感动了!”每次我点击手表。

我实际得到的,(假设我只是使用上面的内容)是环境光和环境压力的实时更新,但是当我取消注释我的Window类的东西然后我得到一个“Out of frame”错误,如果我只是取消注释我的标签m_TextVerticalOptions的两个孩子中,当我声明“Label m_Text”然后我得到分段错误错误。

请注意,一些评论可能看起来是随意的,因为我留下了我以前尝试过的一些东西,并不一定意味着我一次都没有注释。

最后,知道我是C#,Tizen和Microsoft Visual Studio的完全新手可能会很好,所以我肯定会问很多非常初级的问题。

c# tizen-web-app
1个回答
0
投票

从错误理解开始,构建Tizen .NET应用程序UI时可以使用许多不同的API。到目前为止,有些文件没有很好地记录在案。举几个例子(我们在VisualStudio新项目窗口中可以看到):

  1. Xamarin.Forms:一套丰富的跨平台API,可用于Android,iOS,UWP和Tizen。
  2. Tizen.Wearable.CircularUI:Xamarin.Forms的扩展,只有在为Tizen Wearables开发时才可用。
  3. ElmSharp-Beta:传统Tizen原生框架(初级)的C#包装器,它提供有限的支持并广泛用于内部实现。
  4. Tizen.NUI:一个基于Tizen DALi(本机图形库)构建的新C#GUI框架。

那么让我们回到这个问题。由于您的项目基于Xamarin.Forms(和Tizen.Wearable.CircularUI),您可能需要从官方网站引用this guide来处理用户手势。例如,您可以按如下方式将TapGestureRecognizer实例注册到StackLayout组件(而不必导入Tizen.NUI API)。

    var layout = new StackLayout
    {
        VerticalOptions = LayoutOptions.Center,
        Children = { textlabel, barometer_label, m_Text }
    };

    TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer();
    tapGestureRecognizer.Tapped += (sender, e) =>
    {
        m_Text.Text = "I have been touched!";
    };
    layout.GestureRecognizers.Add(tapGestureRecognizer);

    MainPage = new CirclePage
    {
        Content = layout
    };

我希望它有助于开发可穿戴应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.