Ariel Elkin, Feb 15

Editorial: Which Planet of the Apps Are We On?

If you haven’t heard that Apple is launching a TV show about app-making, then, I wonder… which planet you’re living on? The trailer for the new show promises the following: In every episode, app developers work to earn millions of dollars in venture capital investment. It begins with a pitch to four of the world’s most culturally influential entrepreneurs. […]. It all leads to a final pitch with one of the hottest venture capital firms on the planet. The developer community’s reception, so far, has been negative. Rock Star Developer and maker of Instaper Marco Arment tweeted: I’m sure Planet of the Apps will be a great show for all of those people who bug developers with their awful ideas. But actual developers… Well, this likely has about as much relevance to reality as most “reality” shows. Aside from the fact that judging a show purely by its trailer is, shall we say, unwordly, I say: Think different, content-creation is an avenue that Apple has much exploration to do in, and they have the resources required for it (visibility, money, domain knowledge, and talent). Consider this an experiment. Worst case scenario; mobile apps gain more visibility. Best case scenario? The perceived value of apps and your job becomes higher. You’d be automatically promoted from Rock Star to Rock Legend.
Craig Buckler, Feb 15

How to Simulate Mobile Devices with Device Mode in Chrome

A quick look at how to enable Chrome's useful new Emulation Mode to emulate dozens of mobile devices.
Rodrigo Cericatto, Feb 14

Phone callbacks in Android Using TelephonyManager

If you are an Android Developer and you need to detect if your phone is in idle state, off-hook (receiving state) or ringing state, this tutorial was created for you. The objective here is to show you how to implement phone callbacks in Android, allowing detection of calls to your phone. In this topic, the most important class that will be talked about is the TelephonyManager. This class uses a listener called PhoneStateListener to listen for telephony service updates. An object of type TelephonyManager will be instantiated, and it will listen for updates of Context.TELEPHONY_SERVICE. In order to monitor updates of telephony states like PhoneStateListener.LISTEN_DATA_CONNECTION_STATE, PhoneStateListener.LISTEN_CELL_INFO and others, a class called PhoneCallback will be created, extending from PhoneStateListener. With TelephonyManager the telephony services of a device can be accessed and with the method TelephonyManager.listen(PhoneStateListener listener, int events) all information the telephone is receiving can be monitored. The class PhoneStateListener receives callbacks when some event of TELEPHONY_SERVICE is observed. In this tutorial, the flag PhoneStateListener.LISTEN_CALL_STATE will be used. It will monitor and listen to the call state of the phone. As can be read in the PhoneStateListener documentation (see section “Further Reading” below), there are other constants that can be set into the argument int events of the method TelephonyManager.listen. For instance: LISTEN_SIGNAL_STRENGTHS listens for changes to the network signal strengths (cellular). But in this tutorial, the flag LISTEN_CALL_STATE will be used, which listens for changes to the device call state.
Jose Rosario, Feb 13

Achieve 60 FPS Mobile Animations with CSS3

Animating elements in your mobile application is easy. And doing it the right way is easy, too... if you follow our tips here.
Xuyen Bowles, Feb 08

Why We’re Fearful of Health and Fitness App Security

Health and fitness apps have changed the way we exercise, eat, and even sleep. Hundreds of thousands of these diverse apps exist — more than 165,000 at last count. While these apps are serious about counting our calories, and tracking our sleep cycles, very few of them take security as seriously as they should. An incredible 90% of mobile health apps have seriously risky security vulnerabilities. Given the wealth of valuable health and personal information these apps can contain, this is troubling — the app that’s smart enough to count users’ steps, or remind them to take their blood pressure meds, may be leaving these users (and their personal information) vulnerable to hackers. If that wasn’t enough, a study from the Future of Privacy Forum found that only 60% of health and fitness apps had privacy policies; compared to 76% of general apps. What implications does this have for those of us developing health and fitness apps for a loyal and trusting user base? Are we putting consumers in danger if they use our apps to keep a food log or monitor their REM sleep cycles? How can we keep our customers’ information safe and private, while still offering top-notch digital tools for their fitness and wellbeing?
Amit Diwan, Feb 07

Android App Accessibility Checklist

Developers and designers of mobile applications must always focus on ensuring accessibility for vision and hearing impaired users. This article will offer some checklists you should complete to ensure your application is more accessible. While working on any app, users rely on touchable controls. The controls should have appropriate size and be easily visible. Your app should have controls with a minimum of 48dp in length as well as width. It is approximately equal to 9mm and recommended for controls for which a user can select or take an action. In the below figures, you can see the correct and incorrect ways of sizing buttons. EditText is a control which configures itself to be editable. For ensuring accessibility, add an android:hint attribute for EditText fields. Adding the attribute will help users in understanding what content is written when the text field is empty. The content of the android:hint attribute can be spoken.
Valdio Veliu, Feb 01

Mastering Complex Lists with the Android RecyclerView

Valdio Veliu looks at the RecyclerView in Android, perfect for handling long lists of data efficiently.
Deivi Taka, Jan 31

Understanding iOS Proactive Suggestions

With the introduction of the “Proactive” feature in iOS 9, Apple is trying to proactively assist you. The system learns from your actions and attempts to anticipate them. It starts showing suggestions, recommendations, apps you frequently use, etc. The Handoff feature hasn’t changed but the space usually reserved for it in the lock screen is used for suggested apps. Apps shown in the bottom-left corner of the lock screen and in the app switcher are based on your location or habits. The following screenshots show quick access to the Music app when I plug in my headphones. iOS has noticed that when I plug in my headphones, I immediately go to the Music app, so it now gives me quicker access to it. The same will happen for an app that uses location. It will appear when you are near your favorite restaurant, for instance. Spotlight search can be reached from the home menu; by swiping down or by swiping all the way left. The first thing to notice are the Siri suggestions below the search bar. By default, you’ll see the 4 apps you are likely to use at that given time (of the day or night), but it can be expanded up to 8 apps. It also depends on your location, or on whether your headphones are plugged in. So Siri suggests apps depending on your previous behavior or on the time of the day. In the screenshot below on the left, Siri has suggested messaging apps and a game I currently play. Notice that in the screenshot on the right, the suggestions change as I plugged in my headphones. Just as in the previous example, the system is trying to help access the Music app quicker.
Ada Ivanoff, Jan 27

The 12 Best Android Tutorials for First-Time App Developers

When you are a beginner, it's easy to get confused about where to start. To make it easy for you here are 12 Android tutorials to start with.
Abbas Suterwala, Jan 24

Kotlin Techniques that Improve Your Android Code

Kotlin is a general purpose language. It compiles to Java bytecode. Kotlin is developed by the company JetBrains which makes IntelliJ IDE. This article covers techniques which make writing Android code in Kotlin efficient or easy. You can find the code for this article at GitHub Using Static layout imports in Kotlin One of the pain points of working with Android is when we want to use one of the views in the activity. We have to use the ‘findViewById()’ function and then type cast it to the appropriate view type. Kotlin takes a different approach: it lets you import all the views in your layout file. For example, suppose we have a layout file as below
Joyce Echessa, Jan 19

Using the YouTube API to Embed Video in an Android App

Joyce Echessa shows how to use the YouTube API to embed video into an Adroid App.
Theodhor Pandeli, Jan 18

Crash Reporting an Android App with Crashlytics and Fabric

Theodhor Pandeli looks at how the Crashlytics library, a part of Twitter's Fabric, can help identify common crashes in an Android app.
Chris Ward, Jan 17

Java-Free Android

Android finds itself in interesting times. Google has begun creating it’s own ‘premium’ versions of the operating system (OS), Cyanogen have ceased development, and many feel that Android will change name or shape in the near future. As the future of the OS remains uncertain, so does the language that developers use to develop for the platform. Traditionally developers have written apps for Android in Java, a language with a long established history and ecosystem, but that has always felt forced upon Android, lacking the most up to date features, and unwieldy for developers who come from different language backgrounds. In this article I will round up some of the likely contenders and see how easy, realistic and plausible it will be for them to replace the Java behemoth. The added bonus for some of these languages, is that you can often use to also target other mobile platforms. A long term solution for developers has been to use different techniques to turn JavaScript and HTML into pseudo applications. I wont include any of these hybrid options in this round up such as React Native, Cordova or NativeScript. I don’t want to begin flame wars on native vs hybrid app development, but in this article I am only interested in covering languages that could become ‘native’ code. Google took an interesting decision when deciding that Java would be the programming language to create apps for Android. Whilst it’s portable and popular, it also restricts developers as there is no official support for using ‘native’ and more efficient languages such as C or C++.
Chris Ward, Jan 17

Build Native Apps in the Browser with Configure.IT

Chris Ward looks at Configure.IT, a service that allows you to build native mobile applications in the browser.
Theodhor Pandeli, Jan 11

Retrofit, a Simple HTTP Client for Android and Java

Theodhor Pandeli covers Retrofit, an HTTP client Library from Square that helps Android and Java developers make network calls easier and quicker
Clay Unicorn, Jan 10

Using MeasurementFormatter in Swift

The MeasurementFormatter class provides formatted and localized representations of units and measurements. When catering to a global audience, you should present this data in local units. Suppose your app shows the end user a distance between two points. Assume that the distance is in imperial units: feet, yards and miles. When catering to a global audience, you should present this data in local units. Consider the following: The distance between New York and Paris is 3,626.81 miles In French, you would want to not only translate the string’s text, but also the measurement units therein contained: La distance entre New York et Paris est de 5 836,78 km Instead of attempting to write your own utility classes to perform these conversions, you should leverage the power of Apple’s Foundation. When dealing with distance measurements, MeasurementFormatter does great work with zero configuration. By the time the user installs your app, the user’s device has a default locale. Working with the distance measurement above, we can convert to the user’s localized standard:
Theodhor Pandeli, Jan 04

Integrating Stripe into Your Android App

In this tutorial I will show how to allow users buy products or services from your app, using Stripe. Stripe is one of the simplest way to manage your online products, orders, and payments. You can find the code for this tutorial on Github. In the end of this tutorial, users would be able to buy plan subscriptions. The first step is creating some simple plans. To begin with, login to Stripe (or create an account if you haven't already). Make sure that you are in Test Mode before creating the plans from the dashboard.
Hunter Jensen, Jan 03

IoT Predictions for 2017

To consider how far the Internet of Things (IoT) could take us, consider the example of comic book superhero Tony Stark (aka Iron Man) and his virtual assistant, JARVIS, an artificial intelligence. The name JARVIS is an acronym for “Just A Rather Very Intelligent System,” but is also an obvious hat tip to the idea of a human butler. JARVIS takes care of all the things a butler would — he runs Tony’s home, keeps an eye on his master’s health, and helps him with administrative tasks. But JARVIS can do much more than merely dim the lights at Tony’s command. He also controls his car and computers. JARVIS is like Siri on steroids, able to fulfill nearly any request once asked. Each year, IoT gets a little closer to JARVIS-level intelligence in real life. We’re excited about smart home gadgets like the very tech-savvy Samsung Family Hub Refrigerator, as well as personal trainer substitutes like the HOIST fitness machines. What will happen with this technology next year? In the next 10 years? To date, most of the buzz around IoT has concentrated on technology in the home. But will other spaces start to see the impact of IoT, too? How much is the phenomenon predicted to grow? Here’s what you need to know about where IoT might be headed.
Valdio Veliu, Dec 21

Volley, a Networking Library for Android

Valdio Veliu looks at Volley, Google's standard library for network requests that takes care of a lot of the hard work for you.
Mike Canarelli, Dec 20

Google's Interstitial Ad Penalty and Its Effect on Mobile Marketers

Last year, Google put digital marketers on notice that a deep freeze was coming for interstitial ads. Now, the search giant has officially put them out in the cold, a move that will open opportunities for marketers willing to create a better mobile experience for consumers. Starting January 10, 2017, Google will institute what some observers are calling a “pop-up penalty,” targeting ads that hide or gray-out most or all of a mobile screen. Websites displaying the intrusive advertisements on mobile devices may not rank as highly in search results. It’s a change that will leave a significant footprint; mobile use drives about 56 percent of consumer traffic to top U.S. websites, according to SimilarWeb’s State of Mobile Web in the U.S. 2015 report. The move isn’t exactly a surprise; in 2015, the search engine giant announced it would penalize websites that displayed interstitial ads prompting users to download an app. Soon after, Apple gave Safari users the ability to install ad blocker apps that would stop interstitials on iPhones and iPads. It’s important to note that Google will penalize a website in mobile search results only, which seems appropriate given the challenge of navigating the intrusive ads on screens as small as 4.5 inches versus ads viewed on a laptop or desktop. What’s more, interstitial advertising remains one of many signals the search engine uses to assess ranking. However, don’t expect these mobile pop-ups to disappear completely. If you’re a company using them for age verification, cookie usage, or paywall logins, Google won’t ding you in search results. It also won’t impose a penalty if your business displays mobile banners that are easy to dismiss and don’t take up a large amount of screen space.
Theodhor Pandeli, Dec 14

Integrating the Facebook API with Android

In Theodhor Pandeli's first post for SitePoint, he looks at integrating the Facebook API into Android apps for login, profile information and posting.
Valdio Veliu, Dec 13

Optimizing Battery and Data Consumption in Android

Battery and network data consumption are two core issues developers have to deal with when developing mobile apps. This is more of a concern in mobile technologies because smartphones have limited resources. There are two key points I will be focusing on this article: battery life and network data reduction. I will go through some tips and examples on how to save battery life and keep network consumption at its minimum. Optimizing battery life The hardware components that consume most of the battery are the CPU, sensors, and the screen. Sensors include GPS, NFC, Bluetooth, etc. Keeping this in mind is simple to determine what are some points for a developer to focus on while developing. Tasks like keeping the CPU utilization to a minimum required, minimizing the radio utilization and minimizing network operations are difficult to apply in many cases but are necessary to build a top of the line app. In the following sections, I will go through a few factors that have an impact on battery drain. Also, I will mention some tips on how to avoid or reduce battery drain. Carefully use Animations It is obvious that animations need a lot of processing power by the CPU and therefore consume a significant amount of power. According to the documentation, most animations look fluid at 30 frames per second. So, going over 30 frames can be a waste of processing power and furthermore, more battery. Another tip that comes from the documentation is to let the CPU sleep between animations. This is due to the fact that continuous animations lead to constant changes on the device screen. As I mentioned earlier the screen is one of the main factors of battery drain.
Hannah Levenson, Dec 13

Why Your App Optimization Is Lacking and You Don't Even Know It

This post originally appeared on Appsee. Hannah Levenson discusses the importance of app optimization and how to maximize optimization for your own app.
Design & UX
Daniel Schwarz, Dec 07

What is Adaptive Design? (And is it Different from Responsive Design?)

We all have an understanding of responsive design, but how does it relate to 'Adaptive design'? Turns out the answer depends on who you ask.