{"id":7244,"date":"2016-07-07T18:37:51","date_gmt":"2016-07-07T18:37:51","guid":{"rendered":"http:\/\/blog.uruit.com\/?p=7244"},"modified":"2023-05-31T10:07:36","modified_gmt":"2023-05-31T13:07:36","slug":"xamarin","status":"publish","type":"post","link":"https:\/\/uruit.com\/blog\/xamarin\/","title":{"rendered":"How Xamarin allowed us to improve performance in record time"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_17 counter-hierarchy counter-decimal ez-toc-grey\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" style=\"display: none;\"><i class=\"ez-toc-glyphicon ez-toc-icon-toggle\"><\/i><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-1\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#Xamarin_allowed_us_to_improve_performance_in_record_time\" title=\"Xamarin allowed us to improve performance in record time\">Xamarin allowed us to improve performance in record time<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#About_the_App\" title=\"About the App\">About the App<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#The_clients_need\" title=\"The client\u2019s need\">The client\u2019s need<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#Using_Xamarin_Components\" title=\"Using Xamarin Components\">Using Xamarin Components<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#Working_remotely_with_the_scanner\" title=\"Working remotely with the scanner\">Working remotely with the scanner<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/uruit.com\/blog\/xamarin\/#Record_time_to_market_increased_performance\" title=\"Record time to market &amp; increased performance\">Record time to market &amp; increased performance<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"Xamarin_allowed_us_to_improve_performance_in_record_time\"><\/span><span data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;Xamarin allowed us to improve performance in record time&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:15165,&quot;3&quot;:{&quot;1&quot;:0},&quot;5&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;6&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;7&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;8&quot;:{&quot;1&quot;:[{&quot;1&quot;:2,&quot;2&quot;:0,&quot;5&quot;:{&quot;1&quot;:2,&quot;2&quot;:0}},{&quot;1&quot;:0,&quot;2&quot;:0,&quot;3&quot;:3},{&quot;1&quot;:1,&quot;2&quot;:0,&quot;4&quot;:1}]},&quot;11&quot;:3,&quot;12&quot;:0,&quot;14&quot;:{&quot;1&quot;:2,&quot;2&quot;:0},&quot;15&quot;:&quot;Calibri&quot;,&quot;16&quot;:11}\">Xamarin allowed us to improve performance in record time<\/span><span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>Bluepath Consulting<\/strong>, a business consulting firm has a customer in the flower industry: \u00a0a leading grower, importer and distributor of fresh cut flowers that currently serve over 800 clients comprised of large and mid-sized floral wholesaler distributors and mass market retailers.<\/p>\n<p>All flowers are imported into the Miami facilities where they are prepared for distribution to customers.<\/p>\n<p><span style=\"font-weight: 400;\">Controlling all incoming and outgoing orders is of extreme importance to them. Therefore, in order to have a better control of each order, they created an App with Xamarin Android that helps with the logistics. The App can read the barcodes on each order, find them on an existent database, and show the list of all boxes corresponding to each order. Once the order is found, the user can capture the barcode on the boxes with the App, which at the same time, checks each box on the order\u2019s list. This procedure not only shows that the order exists but also confirms its completion.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_App\"><\/span>About the App<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It&#8217;s developed in Xamarin Android using Visual Studio 2015.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Currently it&#8217;s running on the Motorola TC70 with Android version 4.4.2.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It consumes information from a SQL database which is connected by a data access layer.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Also, it has a Git Repo for the source control.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_clients_need\"><\/span>The client\u2019s need<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Bluepath Consulting\u2019s customer selected the <a href=\"https:\/\/www.zebra.com\/us\/en\/products\/mobile-computers\/handheld\/tc7x-touch-computer-series.html\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"broken_link external\">Motorola TC70<\/a> smartphone, which is an Android device, to run the App. \u00a0The App was successfully controlling each order, however, there was a problem. It was capturing the barcodes through the phone&#8217;s camera, which was causing two issues. One of them was that the camera would take time to focus, and it was making the process run slow. The other issue was that the users were not taking advantage of one of the main features on the Motorola TC70. The barcode scanner, which would allow them to work at a more efficient pace.<\/p>\n<p><span style=\"font-weight: 400;\">Bluepath Consulting contacted UruIT with the aim of solving the customer\u2019s problem. The solution consisted of substituting the camera for the barcode scanner on the App. Mother\u2019s day was around the corner, and they needed to speed up thei<\/span><span style=\"font-weight: 400;\">r procedures. Therefore, we only had about 10 days to develop this new feature on the App.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Using_Xamarin_Components\"><\/span>Using Xamarin Components<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>We took the challenge to develop and implement a different way to read the barcodes with the already existing scanner embedded in the Motorola TC70.<\/p>\n<p><span style=\"font-weight: 400;\">Xamarin has a <a href=\"https:\/\/components.xamarin.com\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" class=\"external\">Components section<\/a> which allowed us to add <\/span><span style=\"font-weight: 400;\">encapsulated and robust<\/span><span style=\"font-weight: 400;\"> functionalities in just a few steps. Some examples are Cloud Services, Libraries, User Interface, and Themes, to name a few.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Among those <\/span><span style=\"font-weight: 400;\">components<\/span><span style=\"font-weight: 400;\">, we could find the EMDK (Enterprise Mobility Developer Kit) version 1.0 \u00a0for Xamarin, which offers a wide range of tools needed to interact with the hardware added to the Motorola TC70 by Zebra Technologies. <\/span><span style=\"font-weight: 400;\">That is the component<\/span><span style=\"font-weight: 400;\"> we used in order to add the scanner to the App, which was a fairly simple task, compared to the challenge of changing the logic while maintaining the same behavior (given the App was configured to utilize the camera on the device in order to read the codes).<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Working_remotely_with_the_scanner\"><\/span>Working remotely with the scanner<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Since the mobile device the customer was using was not physically in my hands, and we were running out of time, I had to work on their device remotely, by making use of the following:<\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Leverage a remote laptop in the client facility installed with Visual Studio and Xamarin Extensions. The Motorola TC70 was attached to the computer\u2019s USB port, allowing me to debug or deploy the App as needed.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Video Skype, in order to be able to watch the device constantly.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The ADB (Android Debugging Bridge) console is a command line available on Visual Studio 2015. This tool allowed me to interact with the device remotely. In other words, I was able to control the Motorola TC70 by uninstalling apps, pressing the Back and Home buttons, or touching anywhere on the screen, without having it physically in my hands.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">I also needed to have a barcode strategically positioned in front of the Motorola smartphone while working on the app remotely. The device was set to be constantly scanning a barcode, which allowed me to access the data in development phase. However, during the trial or production versions the device was set back to \u201cTrigger on\u201d mode in order to control the scanner manually. <\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7281 size-full\" src=\"http:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit.jpg\" alt=\"xamarin-project-uruit\" width=\"984\" height=\"724\" srcset=\"https:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit.jpg 984w, https:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit-300x221.jpg 300w, https:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit-768x565.jpg 768w, https:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit-750x552.jpg 750w, https:\/\/uruit.com\/blog\/wp-content\/uploads\/2016\/07\/xamarin-project-uruit-20x15.jpg 20w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/p>\n<h2><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"Record_time_to_market_increased_performance\"><\/span>Record time to market &amp; increased performance<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Despite of the time constraint and remote development challenges, we were able to develop and release the app before the deadline. The customer \u00a0was able to use the new version of the App a day before the estimated time.<\/p>\n<p>They are \u00a0extremely pleased with the results. The new version of the App had a highly positive impact on performance. They aim to use the app not only as a control method but also as a traceability tool. That&#8217;s because they are currently relying on handheld scanners. Therefore, we are now working on developing a new feature that will help the company trace their boxes more easily, without the need of the handheld barcode scanners they use.<\/p>\n<p>&nbsp;<\/p>\n<blockquote><p>We tried other vendors, but one of the things that UruIT showed us was that they are quite resourceful. They found the way to work with the device remotely. Also, they were able to complete the job according to the full requirements. \u00a0With them we were able to make our customer feel special to increase performance at one of their busiest time.<\/p>\n<p>Sandra Flechas, Bluepath Consulting.<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>Keep learning about our Xamarin experience in this other Blog Post: <a href=\"https:\/\/uruit.com\/blog\/why-choosing-xamarin\/\" class=\"broken_link\" rel=\"nofollow\">Why using Xamarin for cross-platform development<\/a>.<\/p>\n<p>If you want to know more about our coding practices and experience, take a look at our <a href=\"https:\/\/github.com\/UruIT\" class=\"external\" rel=\"nofollow\">GitHub page<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contents Xamarin allowed us to improve performance in record timeAbout the AppThe client\u2019s needUsing Xamarin ComponentsWorking remotely with the scannerRecord time to market &amp; increased performance Xamarin allowed us to&#8230;<\/p>\n","protected":false},"author":15,"featured_media":7273,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[284],"tags":[218,255,257,256],"_links":{"self":[{"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/posts\/7244"}],"collection":[{"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/comments?post=7244"}],"version-history":[{"count":7,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/posts\/7244\/revisions"}],"predecessor-version":[{"id":11286,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/posts\/7244\/revisions\/11286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/media\/7273"}],"wp:attachment":[{"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/media?parent=7244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/categories?post=7244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uruit.com\/blog\/wp-json\/wp\/v2\/tags?post=7244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}