Group Messaging For Samsung Gear Using MVC Web API And AngularJS



What is Gear Group Messaging (GGM) System for Samsung Gear Smartwatch?

In this article we see how to send Group Message from web server to Samsung Gear Smartwatches. The main aim of this Group Message System for Samsung Gear Smartwatch is to send fast and important message to groups from the web server. We have Email, Smartphone messaging system then why we need the group messages to Smartwatch. The answer to this question is very simple. Now let’s consider the CEO of a company wants to meet all the Project Managers of a company in 10 minutes. The CEO can send an email to all the managers and also send Text message to Smartphones. It’s not sure all the Project Managers can see the mail and also all Project managers can see the smartphone messages as they might be not on desk or in a meeting or at cafeteria. In this case there will be a possibility of not seeing the messages send by the CEO. Now we consider that all the Project Managers wearing Samsung Gear Smartwatch. The CEO can send message from web site as “4 Pm Meeting”. After the CEO post the new message the message will be displayed immediately in everyone’s Samsung gear Smartwatch. This group message System is not only for a company, but this Group Messaging system can be used for family, friends, etc.

The main advantage will be anyone can post the message within office Group. Only one message can be posted. Everytime the new message will be updated with an old image.

From the above GIF Image we can see that from my MVC web application using AngularJS and Web API I will be updating the message to the database and the updated result will get back from the database using Web API get method. In my Samsung Gear app I have used the AngularJS controller to get the result of WEB API and bind the result message in Samsung Gear. We will see in detail how to create an application.

Shanu Gear Group Messaging (GGM) Architecture

web message server

Here we can see my GGM Architecture in detail. The Group message can be viewed in both Samsung Gear as well as at GGM Website.

Gear Group Messaging Architecture

Note: If you are new to Samsung Gear App development using TIZEN IDE, then kindly view my previous article which explain in detail how to Install Tizen SDK and create your first hello world program using Tizen IDE:

In this article we will see in detail how to:

  1. Create Group Message Web Server using MVC, AngularJS and Web API 2.This application will be used to post Messages to group rom website.
  2. Create Simple Samsung Gear App to display Date and Current Time using Angular JS.
  3. Create Samsung Gear App with AngularJS to display the current message from WEB API.

Prerequisites need to install for developing Samsung Gear App

To start developing our first App for Samsung Gear we need the fallowing software to be installed.

  1. Tizen SDK.

    (Tizen is consist of set of tools for Developing Tizen web and native applications .It contains IDE for developing our applications and Emulator to view our outputs)

  2. SDK Image
  3. Visual Studio 2015 - you can download it from here.

You can also view my previous articles related to AngularJS using MVC and the WCF Rest Service.

Previous articles related to Angular JS,MVC and WEB API:

Code Part

Create Group Message Web Server using MVC, AngularJS and Web API 2. This application will be used to post Messages to the group from website.

  1. Create Database and Table

    We will create a MessageDetails table under the Database ‘MessageDB’.

    The following is the script to create a database, table and sample insert query. Run this script in your SQL Server. I have used SQL Server 2014.
    1. -- =============================================                                   
    2. -- Author      : Shanu                                    
    3. -- Create date : 2015-10-02                                      
    4. -- Description : To Create Database,Table and Sample Insert Query                                
    5. -- Latest                                   
    6. -- Modifier    : Shanu                                    
    7. -- Modify date : 2015-10-02                               
    8. -- =============================================    
    9. --Script to create DB,Table and sample Insert data    
    10.   
    11. USE MASTER    
    12. GO    
    13.   
    14. -- 1) Check for the Database Exists .If the database is exist then drop and create new DB    
    15. IF EXISTS (SELECT [nameFROM sys.databases WHERE [name] = 'MessageDB' )    
    16. DROP DATABASE MessageDB    
    17. GO    
    18.   
    19. CREATE DATABASE MessageDB    
    20. GO    
    21.    
    22. USE MessageDB    
    23. GO      
    24.   
    25. -- 1) //////////// StudentMasters    
    26.     
    27. IF EXISTS ( SELECT [nameFROM sys.tables WHERE [name] = 'MessageDetails' )    
    28. DROP TABLE MessageDetails    
    29. GO    
    30.   
    31. CREATE TABLE [dbo].[MessageDetail](    
    32.        [msgID] INT IDENTITY PRIMARY KEY,    
    33.        [grpMessage] [varchar](500) NOT NULL,   
    34.         [msgDate]  datetime   
    35. )  
    36.   
    37.   
    38.    Select * from MessageDetail  
    39.   
    40.    -- 1) Stored procedure to Select Student Details  
    41.   
    42. -- Author      : Shanu                                                                  
    43. -- Create date :  2015-10-02                                                              
    44. -- Description : MessageDetail                                              
    45. -- Tables used :  MessageDetail                                                                 
    46. -- Modifier    : Shanu                                                                  
    47. -- Modify date :  2015-10-02                                                                 
    48. -- =============================================     
    49. -- exec USP_Message_Select  
    50. -- =============================================                                                             
    51. Create PROCEDURE [dbo].[USP_Message_Select]                                                
    52.                                                      
    53. AS                                                                  
    54. BEGIN          
    55.          Select Top 1 grpMessage,msgDate  
    56.             FROM   
    57.                 MessageDetail            
    58. END  
    59.   
    60.  -- 2) Stored procedure to insert/Update MessageDetail  
    61.   
    62. -- Author      : Shanu                                                                  
    63. -- Create date :  2015-10-02                                                              
    64. -- Description : MessageDetail                                              
    65. -- Tables used :  MessageDetail                                                                 
    66. -- Modifier    : Shanu                                                                  
    67. -- Modify date :  2015-10-02                                                                 
    68. -- =============================================     
    69. -- exec USP_Message_Insert 'se'  
    70. -- =============================================                                                             
    71. CREATE PROCEDURE [dbo].[USP_Message_Insert]                                                
    72.    (                         
    73.      @grpMessage           VARCHAR(100)     = ''     
    74.       )                                                         
    75. AS                                                                  
    76. BEGIN          
    77. IF NOT EXISTS (SELECT * FROM MessageDetail )  
    78.             BEGIN  
    79.   
    80.                     INSERT INTO MessageDetail  
    81.                     ([grpMessage],msgDate)  
    82.                      VALUES (@grpMessage,GETDATE())  
    83.                                  
    84.                     Select 'Inserted' as results  
    85.                           
    86.             END  
    87.          ELSE  
    88.              BEGIN  
    89.                 UPDATE MessageDetail  
    90.                         SET grpMessage  = @grpMessage   ,  
    91.                             msgDate     = GETDATE()       
    92.                      Select 'Updated' as results  
    93.               END         
    94. END  
    In this script I have created two stored procedure one is to select the current message from the database and another procedure to insert the new message for first time and update the new message if the record is there.

  2. Create our MVC Web Application in Visual Studio 2015

    After installing our Visual Studio 2015. Click Start, Programs and select Visual Studio 2015 - Click Visual Studio 2015.

    Click New, Project, Select Web and ASP.NET Web Application. Select your project location and enter your web application name.

    Select Web

    Select MVC and in Add Folders and Core reference for, select the Web API and click OK.

    Select MVC

Add Database using ADO.NET Entity Data Model

Right click our project and click Add, then New Item.

add new item

Select Data, then ADO.NET Entity Data Model and give the name for our EF and click Add

Entity Data Model

Select EF Designer from the database and click next.

Select EF Designer

Here click New Connection and provide your SQL-Server Server Name and connect to your database.

connect to your database

Select the data as MessageDB as we have created the database using my SQL Script.

MessageDB

Click next and select the tables need to be used and click finish.

click finish

Click Next and select our tables and Stored Procedure that are needed and click Finish.

Stored Procedure

Here we can see now we have created our MessageModel.

created our MessageModel

Once Entity has been created, the next step is we add WEB API to our controller and write function to select/Insert/Update and Delete.

Steps to add our WEB API Controller

Right click Controllers folder, click Add, then Controller.

WEB API Controller

As we are going to create our WEB API Controller. Select Controller and Add Empty WEB API 2 Controller. Give your Name to Web API controller and click OK. Here for my Web API Controller I have given name “MessagesController”.

MessagesController

As we have created Web API controller, we can see our controller has been inherited ApiController.

created Web API controller

As we all know Web API is a simple and easy to build HTTP Services for Browsers and Mobiles; Web API has four methods as Get/Post/Put and Delete where: 

  • Get is to request for the data. (Select)
  • Post is to create a data. (Insert)
  • Put is to update the data.
  • Delete is to delete data.

In our example we will use Get method, since we need to get all the Puzzle Question details from the database.

Get Method


In our example I have used only Get method as I am using to select data from database to display the Word Puzzle game. We need to create object for our Entity and write our Get Method to perform Select operations.

Select Operation

We use get Method to get all the details of MessageDetail from stored procedure USP_Message_Select_Result using entity object and we return the result as IEnumerable.

Here we can see in get Method I have used the USP_Message_Select to get the result.

We use this method in our AngularJS and display the result in MVC HTML page.

  1. public class MessagesController : ApiController  
  2. {  
  3. MessageDBEntities objAPI = new MessageDBEntities();  
  4.   
  5. // to get message from database  
  6. [HttpGet]  
  7.    public IEnumerable<USP_Message_Select_Result> Get()  
  8.    {   
  9.       return objAPI.USP_Message_Select().AsEnumerable();  
  10.    }  
  11. }  
Insert/Update Operation

To Insert and Update I will pass the user posted message as parameter to the procedure and display back the result to MVC page from AngularJS controller.
  1. //to Update Student Details  
  2. [HttpGet]  
  3. public IEnumerable<string> messageinsert(string grpMessage)  
  4. {  
  5.    if (grpMessage == null)  
  6.    grpMessage = "shanu";  
  7.    return objAPI.USP_Message_Insert(grpMessage).AsEnumerable();  
  8. }  
Creating AngularJS Controller

Firstly, create a folder inside the Script Folder and I will give the folder name as “MyAngular”.

Creating AngularJS Controller

Now add your Angular Controller inside the folder.

Right Click the MyAngular Folder and click Add, New Item and select Web, then AngularJs Controller and give name to Controller. I have given my AngularJs Controller name as “Controller.js”

AngularJs Controller

Once the AngularJs Controller is created, we can see by default the controller will have the code with default module definition and all.

If the AngularJS package is missing, then add the package to your project.

Right Click your MVC project and click Manage NuGet Packages. Search for AngularJS and click Install.

Search for AngularJs

Steps to Create AngularJs Script Files

Modules.js: Here we add the reference to the Angular.js javascript and create a Angular Module named “RESTClientModule”.
  1. /// <reference path="../angular.js" />   
  2. /// <reference path="../angular.min.js" />   
  3. /// <reference path="../angular-animate.js" />   
  4. /// <reference path="../angular-animate.min.js" />   
  5.   
  6. var app;  
  7.   
  8. (function () {  
  9.    app = angular.module("RESTClientModule", ['ngAnimate']);  
  10. })();  
Controllers: In AngularJS Controller I have performed all the business logic and returned the data from WEB API to our MVC html page.
  1. Variable declarations

    Firstly, I declared all the local Variable which needs to be used. For each variable I have added the comments.
    1. app.controller("AngularJs_ImageController", function ($scope, $timeout, $rootScope, $window, $http) {  
    2.   
    3. //Global Variables  
    4. $scope.date = new Date();  
    5. $scope.MyName = "shanu";  
    6. $scope.grpMessage = "";  
    7. $scope.grpMessageAdd = "";  
  2. Select Group Message Function

    To display the latest message from database using $http.get I will get the result and bind to the MVC page using $scope.grpMessage variable.
    1. selectMessageDetails();  
    2.   
    3. function selectMessageDetails() {  
    4.   
    5.     $http.get('/api/Messages/').success(function(data) {  
    6.             $scope.Message = data;  
    7.             if ($scope.Message.length > 0) {  
    8.                 $scope.grpMessage = $scope.Message[0].grpMessage  
    9.             }  
    10.         })  
    11.         .error(function() {  
    12.             $scope.error = "An Error has occured while loading posts!";  
    13.         });  
    14. }  
    Here we can see in New Group Message “4 PM Meeting”, the final message which was updated to the database.

    post message

Insert/Update Group Message Function

In this method I will be posting the user entered Message to API and insert/update to the database using Stored procedure.

  1. //Save Message  
  2. $scope.saveDetails = function () {  
  3.     $scope.messageDetails = $scope.grpMessageAdd;  
  4.     if ($scope.grpMessageAdd = "")  
  5.     {  
  6.         alert("Enter Message");  
  7.         return;  
  8.     }  
  9.     $http.get('/api/Messages/messageinsert/', { params: { grpMessage: $scope.messageDetails } }).success(function (data) {  
  10.         $scope.StudentsInserted = data;  
  11.         alert($scope.StudentsInserted);  
  12.         selectMessageDetails()  
  13.     })  
  14.   .error(function () {  
  15.       $scope.error = "An Error has occured while loading posts!";  
  16.   });  
  17.   
  18. }  
Here we can see the gif image and we update the text. After the data is updated to the database; result will be updated in New Group Message.
 
 
 
Create Simple Samsung Gear App to display Date and Current Time using AngularJS
 
 
 
Note: If you are new to Samsung Gear App development using TIZEN IDE, then kindly view my previous article which explain in detail about how to Install Tizen SDK and create your first hello world program using Tizen IDE.

Click - Start programs, then Tizen IDE.

For the first time it will ask you to select your Workspace. You can browse and select folder to create all your project under the folder. Click OK to start your new project.

start your new project

Once you have done click on File, New, then Tizen Web project.

New Tizen Web project

Creating our First Wearable UI Template: We can see a window like the following. Firstly, we start with Wearable UI Template. Select the Template and Wearable UI and click on Basic. Give name for your project and click Finish.

Creating our First Wearable UI Template

Once you have created, you can see your Project on the left side of Project Explorer. Create new folder inside your newly created project for adding all the AngularJS reference files. I have created the folder name “MyAngular” and copied all AngularJS and jQuery related reference files to this folder. Also created new JavaScript file as “controller.js” for AngularJS controller creation.

go to Controller

In the Controller.JS javascript file we will create for AngularJS Model and Contrller like below.
In this JS file first I create AngularJS Module and then Controller.

In controller I have declared all the variable need to be used as date to display the current date and time. Myname to display my name from controller to an html page.

I have used the timer to run every second and call the function “CounterFunction” for every second. In this function I updated the current time and displayed the current time in an html page.
  1. /// <reference path="angular.js" />    
  2. /// <reference path="angular.min.js" />     
  3. /// <reference path="angular-animate.js" />     
  4. /// <reference path="angular-animate.min.js" />     
  5. var app;  
  6.   
  7.   
  8. (function () {  
  9.     app = angular.module("RESTClientModule", ['ngAnimate']);  
  10. })();  
  11.   
  12.   
  13. app.controller("AngularJs_Controller", function ($scope, $timeout, $rootScope, $window, $http) {  
  14.   
  15.     //Global Variables  
  16.     $scope.date = new Date();  
  17.     $scope.MyName = "Shanu";  
  18.     $scope.counterval = 0;  
  19.       
  20.     $scope.CounterFunction = function(){  
  21.         $timeout(function() {  
  22.           $scope.getTime();  
  23.           $scope.CounterFunction();  
  24.         }, 1000)  
  25.       };  
  26.       $scope.getTime = function(){  
  27.           $scope.counterval= $scope.counterval+1;  
  28.           $scope.date = new Date();  
  29.       }  
  30.       // Kick off the interval  
  31.       $scope.CounterFunction();  
  32.     
  33. });  
Now we have created AngularJS controller next part as we all know that in Tizen Samsung Gear project we have created is web project and we can find the index.html in project explorer. Now in this html page we bind the result of controller variable to display the result.

We add all the AngularJS reference at the bottom of html page.

In html tag we add the data-ng-app and in the body tag we add the data-ng-controller.

Next we bind the name from AngularJS to our page using {{ MyName }}.

Same like this we bind the Current Date and time.
  1. <!DOCTYPE html>  
  2. <html data-ng-app="RESTClientModule">  
  3. <head>  
  4.     <meta name="viewport" content="width=device-width,user-scalable=no">  
  5.     <title>Gear & AngulrJS</title>  
  6.     <link rel="stylesheet" href="lib/tau/wearable/theme/default/tau.min.css">  
  7.     <link rel="stylesheet" media="all and (-tizen-geometric-shape: circle)" href="lib/tau/wearable/theme/default/tau.circle.min.css">  
  8.     <!-- load theme file for your application -->  
  9.     <link rel="stylesheet" href="css/style.css">  
  10. </head>  
  11. <body data-ng-controller="AngularJs_Controller">  
  12.     <div class="ui-page ui-page-active" id="main">  
  13.         <header class="ui-header">  
  14.             <h2 class="ui-title">Gear & AngulrJS</h2>  
  15.         </header>  
  16.         <div class="ui-content content-padding">  
  17.             <ul class="ui-listview">  
  18.                 <p>{{ MyName }} </p>  
  19.                  <p>  {{date | date:'yyyy-MM-dd'}}</p>    
  20.                    <p>  {{date | date:'hh:mm:ss a'}}</p>           
  21.                   
  22.                           
  23.             </ul>  
  24.         </div>  
  25.     </div>  
  26.     <script type="text/javascript" src="lib/tau/wearable/js/tau.min.js"></script>  
  27.     <script type="text/javascript" src="js/circle-helper.js"></script>  
  28.     <script src="app.js"></script>  
  29.     <script src="lowBatteryCheck.js"></script>  
  30.       
  31. <script src="MyAngular/angular.js"></script>  
  32.   
  33. <script src="MyAngular/angular-animate.js"></script>  
  34.   
  35. <script src="MyAngular/controller.js"></script>  
  36. </body>  
  37. </html>  
When we run this project in simulator we can see the result as in the following screenshot:

run this projec

Output with Emulator:

Output

Create Samsung Gear App with AngularJS to display the current message from WEB API

This is our main Samsung Gear App which is to display the newly updated message to be displayed in Samsung Gear. I will be using Timer and every 1 second I call the method to display the updated Group Message from WEB API using AngularJS controller.

Click - Start programs, then click Tizen IDE.

For the first time it will select your Workspace. You can browse and select folder to create all your project under the folder. Click OK to start your new project.

Click ok to start your new project

Once you have done click on File, New, then Tizen Web project.

Tizen Web project

Creating our First Wearable UI Template: We can see a window like the following screenshot. Firstly, we start with Wearable UI Template and select the Template and Wearable UI and click on Basic. Give name for your project and click Finish.

Wearable UI Template

Once you have created you can see your Project in the left side of Project Explorer. Create new Folder inside your newly created project for adding all AngularJS reference files. I have created the folder name “MyAngular” and copied all AngularJS and jQuery related reference files to this folder and also created new JavaScript file “controller.js” for AngularJS controller creation.

Controller

In the Controller.JS JavaScript file we will create AngularJS Model and Controller like below.
In this JS file, firstly I will create AngularJS Module and then Controller.

In controller I have declared all the variable need to be used as date to display the current date and time, Myname to display my name from controller to html page and  Messages TO DISPLAY THE MESSAGE FROM api RESULT.

I have used the timer to run every second and call the function “getMessages” for every second. In this function I will update the MESSAGE which I receive from MVC Web API.
  1. /// <reference path="angular.js" />    
  2. /// <reference path="angular.min.js" />     
  3. /// <reference path="angular-animate.js" />     
  4. /// <reference path="angular-animate.min.js" />     
  5. var app;  
  6.   
  7.   
  8. (function () {  
  9.     app = angular.module("RESTClientModule", ['ngAnimate']);  
  10. })();  
  11.   
  12.   
  13. app.controller("AngularJs_Controller", function ($scope, $timeout, $rootScope, $window, $http) {  
  14.   
  15.     //Global Variables  
  16.     $scope.date = new Date();  
  17.     $scope.MyName = "Shanu";  
  18.     $scope.Messages = "";  
  19.       
  20.     $scope.CounterFunction = function(){  
  21.         $timeout(function() {  
  22.           $scope.getMessages();  
  23.           $scope.CounterFunction();  
  24.         }, 1000)  
  25.       };  
  26.       $scope.getMessages = function(){  
  27.             
  28.           $http.get('http://localhost/shanuMVCTEST/api/Messages/').success(function (data) {                
  29.               $scope.AllMessages = data;  
  30.               if ($scope.AllMessages.length > 0) {    
  31.                   $scope.Messages=$scope.AllMessages[0].grpMessage;  
  32.               }  
  33.           })  
  34.           .error(function () {  
  35.               $scope.error = "An Error has occured while loading posts!";  
  36.           });  
  37.       }  
  38.         
  39.       $scope.CounterFunction();  
  40.     
  41. });  
Now we have created AngularJS controller next part as we all know that .In Tizen Samsung Gear project we have created is web project and we can find the index.html in project explorer. Now in this html page we bind the result of controller variable to display the result.

We add all the AngularJS reference at the bottom of html page.

In html tag we add the data-ng-app and in body tag we add the data-ng-controller.

Next we bind the message from AngularJS to our page using {{ Messages }}.

Same like this we bind the Current Date and time.
  1. <!DOCTYPE html>  
  2. <html data-ng-app="RESTClientModule">  
  3. <head>  
  4.     <meta name="viewport" content="width=device-width,user-scalable=no">  
  5.     <title>Circular UI</title>  
  6.     <link rel="stylesheet" href="lib/tau/wearable/theme/default/tau.min.css">  
  7.     <link rel="stylesheet" media="all and (-tizen-geometric-shape: circle)" href="lib/tau/wearable/theme/default/tau.circle.min.css">  
  8.     <!-- load theme file for your application -->  
  9.     <link rel="stylesheet" href="css/style.css">  
  10. </head>  
  11. <body data-ng-controller="AngularJs_Controller">  
  12.     <div class="ui-page ui-page-active" id="main">  
  13.         <header class="ui-header">  
  14.             <h2 class="ui-title">  
  15.             <span style="color:#fffff;font-size:x-large">Shanu Message Service</span></h2>  
  16.         </header>  
  17.         <div class="ui-content content-padding">  
  18.             <ul class="ui-listview">  
  19.                   <img src="shanu.jpg" /> <span style="color:#af2609;font-size:large">Message:</span>  
  20.                   <br> <span style="color:#FFFFFF;font-size:x-large">  
  21.                     {{ Messages }}  
  22.                     </span>  
  23.                   
  24.                   
  25.             </ul>  
  26.         </div>  
  27.     </div>  
  28.     <script type="text/javascript" src="lib/tau/wearable/js/tau.min.js"></script>  
  29.     <script type="text/javascript" src="js/circle-helper.js"></script>  
  30.     <script src="app.js"></script>  
  31.     <script src="lowBatteryCheck.js"></script>  
  32.     <script src="MyAngular/angular.js"></script>  
  33.   
  34. <script src="MyAngular/angular-animate.js"></script>  
  35.   
  36. <script src="MyAngular/controller.js"></script>  
  37. </body>  
  38. </html>  
When we run this project in simulator we can see the result as displaying the current message as “4 PM Meeting”.

system summery

Note: To run this in Emulator we need to perform the fallowing settings in config.xml file to allow internet in your emulator from your Tizen Project.

Config.XML – Double click the Config.xml file and open to do the following changes

Config

Add the following setting in

Features & privileges for the App:
Privilege: http://tizen.org/privilege/internet
feature: http://tizen.org/feature/network.internet

Features Tab:

In features Tab click Add and then select the http://tizen.org/feature/network.internet.

features Tab

Privileges Tab:

In privileges Tab click Add and then select the http://tizen.org/privilege/internet.

Privileges Tab

Policy Tab:

In Policy Tab click Add and then add * for any website and allow Subdomain to true. Same like this you can add to localhost as well.

Policy Tab

I tried to run the application but it was not displaying the localhost web API result in emulator. All the settings are looking fine but still it’s not displaying the result in emulator and working fine for Simulator and in Preview.

For testing with live internet web API result I checked with this API.

This internet API result worked fine in my emulator and here is my sample controller to get the result from this sample live API and bind the length in message box:

  1. function GetOrderMasters() {  
  2.     alert("1");  
  3.     $http.get('http://api.geonames.org/cities?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo/').success(function(data) {  
  4.             alert("2");  
  5.             $scope.jsonResult = data;  
  6.             alert("API result Count " + $scope.jsonResult.length);  
  7.             if ($scope.jsonResult.length > 0) {  
  8.   
  9.             }  
  10.   
  11.         })  
  12.         .error(function() {  
  13.             $scope.error = "An Error has occured while loading posts!";  
  14.         });  
  15. }  
Here we can see in Samsung gear Emulator we can see the API result total count.

Samsung gear Emulator

Hope you liked this and now you might be having more clear idea to start working with Samsung Gear App development for Smartwatch and have fun.

In the zip file you can find:
  1. shanuAngularJSwebAPIMessageWebServer.sln for MVC web application.
  2. shanuGearAngularJs folder which contain source code for Samsung Gear App with AngularJS sample to display Date and Time.
  3. samsungGearAngularMessageSystem folder which contain source code for Samsung gear app to display the message from the WEB API using AngularJS.