PrismApp: Augmented Reality App for iOS
Augmented Reality (AR) is no longer a futuristic prediction or sci-fi movie element. Today it becomes a part of our everyday reality, transforming the way we live and communicate.
An enhanced version of reality
AR technology adds a digital layer to the real world and creates a continuous view of both the real and virtual worlds. A user can interact with the digital overlay and non-existing objects with different types of devices.
AR technology allows to change the way we see the world around us. Information or image contextual overlays appear on screens or as holograms around the user. AR enhances the real world, makes it digitally manipulative and interactive.
With AR we can modify, add and see supplementary information about things surrounding us just using the camera of our smartphone or tablet.
Here we go
Our mobile development team decided to give AR a closer look and research the market. We were interested in apps intended to help people find specific places and destinations around, such as cafes, hotels, petrol stations, offices and business centers.
We’ve researched and analyzed the three main features of these apps:
- Search by category/name
- Display of locations (on the map and alternative ways)
- Display of information about a specific place
We found out that the location feature is the exact thing where AR technology would suit so well. Still, it is the feature that could be significantly improved.
Sure, we’re not the only guys who decided to use AR to display location data, but to our surprise, it turned out that not so many similar apps were published in app stores. Moreover, all of them had considerable drawbacks in usage. This fact motivated us to develop an app which would fit our expectations and the needs of its potential users.
We decided to develop a convenient app that uses a smartphone’s GPS to display AR markers for nearby locations that may be valuable in travels. With our app a user simply opens a camera mode to get known about the world around them: the closest ATMs, restaurants, bars, landmarks, and any other geographically-relevant information in real-time. As well, we wanted our app to display the general information about the points of interest: short wiki-like info, opening hours, photos, user ratings, and reviews, etc.
An additional boost came from an article posted on one of the most well-known portals among iOS developers community, raywenderlich.com. This article became our primary guide during the PrismApp development.
After analyzing the article, we’ve decided to launch the demo made by the article authors first. Our first impression was “Wow, but everything is already here.” But then it turned into “Improvements needed, a good few…” Nonetheless, this article provided us with valuable basics of understanding the AR development and helped us further implement our intended project.
First of all, we had to figure out how to improve the core feature – the overlaying markers in the camera view, as it didn’t work flawlessly.
Let’s go into the details:
- While rotating the camera around, the markers weren’t moving smoothly. The tiniest motion of the hand holding the device led to the change of marker coordinates. That made the tapping on this marker to review additional information about the place too complicated and uncomfortable;
- When the places were in the immediate neighborhood – the markers overlaid one another;
- The height of the display was not used altogether – all the markers were located at the same distance from the top and the bottom part of the screen, which didn’t look satisfactory either.
Second, we wanted to develop a possibility to display complete information about the specific place, create an easy-to-use interface, enhance the work of the maps, as well as elaborate on additional necessary features.
1. After fiddling around with the coefficient in AR ToolKit DEGREE_TO_UPDATE and INTERVAL_UPDATE, we managed to organize a smooth movement of the markers during the rotation of the camera. Also, we developed an additional small algorithm to ensure that the hand motion is recognized only when it is constant for a certain period of time and goes in the same direction.
It enabled us to avoid situations where a person on-the-go uses their camera with PrismApp and slightly waves the hand left-right. The algorithm is somewhat different for tablets and smartphones due to the different range of user motions for these devices.
2. Then we found a solution of how to fix the overlaying of the markers, located in the similar direction. Considering that the max distance of the markers’ localization is 2000m, and the max quantity of the markers on the screen is 20, we decided to rank the markers by height depending on the distance of the location from the user. That means that locations that are closer to the user are shown on the bottom of the screen, and locations that are farther – at the top of the screen. Also, we applied the uniform scaling of the markers’ size for extra convenience.
This approach allowed to get rid of a lot of empty space on the screen, evenly locate all the markers across the screen and solve the problem with markers overlay. Additionally, to prevent the overlay of the markers, we implemented a slight shift of one of the overlaying markers.
3. Google Places. We took all the information about the places from Google Places. There we’ve found a variety of necessary details – general info, opening hours, photos, user reviews etc. This additional info appears on the screen when a user taps on a place on the camera or the map screen. In a test mode, Google limits the number of requests to 1,000 per 24 hours. That’s why, before the project launch, we passed our verification on console.cloud.google.com by filling out the billing data. That helped us obtain a limit of 150,000 requests per 24 hours.
4. Design. No surprise that we decided upon the Google Maps style for the PrismApp to make it familiar to the users. Then, we added colors and icons, relevant to the type of each place.
We aimed to create the most convenient app to find different categories of places in real-time, and enable a possibility to automatically create a route on user’s device.
As a result, we developed PrismApp – a handy and useful AR application for people who travel or look for some yet unknown places in their everyday surroundings.
Replacing the information about destinations from Google Places with any other information, you can safely use a developed module in any other products.
PrismApp is your local guide to finding any point of interest nearby with the help of Augmented Reality technology and the camera of your mobile device. Simply pan around the area with your camera mode on and get up-to-date information about various places nearby, including their location, distance, addresses, photos, user reviews, and ratings.
At Relevant Software, we are passionate about innovative technologies. We understand, that while physical and digital worlds are merging, the nature of digital interactions is also changing. We are continually looking for solutions that optimize AR technology for everyday use and adjust high-tech innovations for business environments.