THE ONE OF IoT,YOUR ONLY CHOICE!
Time
 

Time


Infairy platform define different layout object to let users interactive with bundle by graphic usere interface, each bundle can be put into many layout tag, each layout tag can design many layout object.

This chapter will show you how to ceate the layout Time object:
First, you have to Field Layout class:
      import com.infairy.cocina.SDK.Layout.Layout;
      import com.infairy.cocina.SDK.Layout.LayoutTime;
      
Then, get Layout service
        Layout layout=(Layout)Tools.getService(context, Layout.class.getName(), "(FUNCTION=LAYOUT)");
      
Next, create layout tag and get LayoutID for other layout object used purpose:
            LayoutTag ltag=new LayoutTag();

            ltag.backgroundImage="img/background.png";
            ltag.bundleID=BundleID;
            ltag.LayoutHeight=450;
            ltag.LayoutWidth=800;
            ltag.title="My App";
            /*
             * Create layout tag and get layout id for other layout object use
             */
            LayoutID=layout.createUI(this, ltag);
      
Nex, create Time layout object:

          LayoutTime ltm=new LayoutTime();
          ltm.LayoutID=LayoutID;
          ltm.left=340;
          ltm.top=170;
          ltm.width=40;
          ltm.height=90;
          ltm.index="Hour";
          //format was defined by com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_xxx
          ltm.format=device.LAYOUT_TYPE_TIME_FORMAT_HOUR;
          ltm.value="12";
          HOUR=12;
          /*
           * Create time layout object
           */
          layout.createUI(this, ltm);
      
The Time layout can be clicked by users, you just need to do defined the key value:
            ltm.key=device.DEVICE_OPERATION_USER_DEFINED_0;
      
"DEVICE_OPERATION_USER_DEFINED_0" is defined by com.infairy.cocina.SDK.device.DevicePool#DEVICE_OPERATION_xxx
then defined the Operation object( refer to Operation):
        public class myFirstBundle implements BundleActivator, Runnable{
            ...
           
           /*
            * Bundle ID
            */
           String BundleID="";
           
           /*
            * Layout ID
            */
           String LayoutID="";
           
           Thread me;

           /*
            * Layout object 
            */
           Layout layout;
           
          /*
           * entry point
           */
          public void start(BundleContext context) throws Exception {
              ...
              /*
               * get layout service
               */
              layout=(Layout)Tools.getService(context, Layout.class.getName(), "(FUNCTION=LAYOUT)");

              .....

              /*
               * define operation for layout key mapping
               */
              Vector Operation=new Vector();
              OperationDNA oobj=new OperationDNA();
              
              //when user click the image layout object, this operation object will trigger to run the Funtoin:Go()
              oobj.KEY=device.DEVICE_OPERATION_USER_DEFINED_0;   
              oobj.Function="Go";
              Operation.addElement(oobj);
              
              dict.put(InfairyInterface.DeviceOperation, Operation);

              ...
              
              BundleID=device.addDevice(this, dict);
            
You have also implemnt Go() function to catch up the action.

              public void Go(){
                ....
              }
            


The Time layout object properties show as below:
          /**
           * Layout id of bundle
           */
          public String LayoutID="";
          /**
           * layout width in pixel, default is 10
           */
          public int width=10;
          /**
           * layout height in pixel, default is 10
           */
          public int height=10;
          /**
           * layout axis of left, default is 0
           */
          public int left=0;
          /**
           * layout axis of top, default is 0
           */
          public int top=0;
          /**
           * Layout key defined, please refer to {@link com.infairy.cocina.SDK.device.DevicePool#DEVICE_OPERATION_DIMMER}, {@link com.infairy.cocina.SDK.device.DevicePool#DEVICE_OPERATION_xxx}...
           */
          public String key="";
          /**
           * layout key value, defined by developer
           */
          public String value="";
          /**
           * layout key index value, defined by developer
           */
          public String index="";
          /**
           * visibility, default is true
           */
            public boolean visible=true;
            /**
             * data format, please refer to 
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_DAY}
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_HOUR_MINUTE_SECOND}
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_HOUR_MINUTE}
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_HOUR}
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_MINUTE_SECOND}
             * {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_MINUTE}
             * and {@link com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_xxx} ...
             * default is com.infairy.cocina.SDK.device.DevicePool#LAYOUT_TYPE_TIME_FORMAT_HOUR_MINUTE_SECOND}
             */

            public String format="hh:mm:ss";