Tuesday, January 2, 2018

Jio Phones - Exciting time for application developers



Success of a mobile platform is based on the number of users using it and number of apps available for the users natively. Usually, it is a chicken and egg problem since it is difficult to get users without exhaustive list of apps for the users and developers won’t be interested in developing apps till there is a considerable number of users using it. However, with Reliance Jio, user base won’t be a problem because of their almost free Jio phones which will easily attract millions of users.

Jio feature phones is expected to use KaiOS which is a linux flavor forked out of Firefox OS. The apps are rumored to be HTML5 apps. So most of the web apps that doesn’t use mobile features such as accelerometer, Bluetooth, location, etc., can easily be made available to Jio users. Those web apps that use mobile features in other platforms such as Android/iOS should be easily portable provided the KaiOS SDK has those features available for developers to access.

For application developers to develop apps or port their apps to Jio phones, among other things such as the vastness of the mobile features accessible by their KaiOS SDK, what matters the most is the revenue generation opportunities for their applications. Indians, in general, spend less money on paid apps or In-App purchases compared to users in western countries. Given that the Jio phones will be available only in India, the revenue will be even more limited since Jio users will be among the least interested in spending money for apps. So revenue from paid apps or IAP may not be encouraging for the developers in spite of large user base. The other options for generating revenue for developers is either using advertisements or provide apps on Jio phone which indirectly increases downloads on Android/iOS phones, for example Chatting apps.

The biggest advantage for application developers is that the Jio phone will bring huge number of users who were not earlier using any smartphones. Since Jio phones are almost free and Jio network is available even in remote parts of the country while other networks are not, users will be mostly non-English speakers which means that the applications has to support multiple languages in order to reach majority of the users.

Overall, one can expect mostly free apps on Jio device, with advertisements in the app and with regional language support & translations. Lots of HTML5 games or standalone apps available in web now should be available on app store as soon as the developers get the KaiOS SDK and access to Jio app store.
With 200 million 4G features phones in production and with free unlimited data, it is right time for application developers to unleash their creativity for India-centric applications.

Friday, April 14, 2017

Top 5 Free Apps in Google Play To Track Others




Most of the time we need to know the location of others. Suppose we are planning for a family dinner and one of the family member has still not arrived. Or suppose we are about to cut a birthday cake at office but the colleague who went to get the cake has still not come back yet. Or we just want to track the location of our spouse to see if that person is safe. In all these scenarios we rely on calling or texting that person and waiting for his response.

In the age of Smartphones, we can do this tracking better and faster. That’s why we are listing 5 apps with varied features which will help you track other person and get their location accurately and fast.

All apps are available for free. There are no hidden charges on them anytime.

 

Live Cell Tracker

 
Live Cell Tracker allows you to track other users live. Using this application you can track the movement of other number for a specific duration. You can now stay in touch with your loved ones and stay carefree about where they are at any given time.

All you need to do is install the app and register using your mobile number and email Id. To track someone just enter their number and the duration for which you want to track. The app takes care of informing the target user that you wish to track him/her. The target person then can allow/deny your request. If he/she wishes to allow then you can see his/her movements live in your cellphone for the given duration.

If you want to track the other person but don’t want to wait for the other person to always allow the request, the target user has to just add your number to the allowed list in the app settings. Next time when a request from you is received, the app will just auto accept without waiting for the approval from the user and sends you location updates.

Either you or the remote user can stop the tracking anytime. All you or the other person has to do is open the app and click on the stop button.

 

Remote Cell Tracker


Remote Cell Tracker allows user to track the location of his own cell phone from the website www.TrackMyPhones.com/ct. So if you want to track your spouse’s location always, just install this app in your spouse’s device and then you can track that person’s location from www.TrackMyPhones.com/ct without waiting for any approval before knowing the location. An ideal way to allow someone you trust to track you.

Friends Tracker


Friends Tracker is an ideal app if you want to track others and you don’t have internet on your device. This app works using SMS. You need to just request for location of another person using the person’s contact number and the app sends an SMS to the remote person. The same app needs to be installed in the remote person’s phone as well and the app reads the location and responds with an SMS with the location. You will know the location of the remote person in the app which will be displayed using Google Map.

Mobile Location using SMS


Mobile Locator using SMS is the right application if you want to know the location of a device from your device without installing any application on your device. This app helps you control and operate a mobile through SMS. You can not only get the location of the device by sending an SMS but also make the siren play loud for 10 sec, get last 5 call details, , capture video or even take pic remotely by just sending an SMS.

 

 

Track My Phones Pro


Track My Phone application is the leader in remote control category. It helps you control and operate a mobile remotely either from the website www.TrackMyPhones.com or by sending SMS to the target device from any other device. You can get the location of the mobile, make siren play loud, send a message from that mobile, call a number, enable or disable mobile data, make it vibrate for 5 sec, and even take pic remotely and email pics to your email ID.

 

Other Number Cell Tracker


This is a prank app which helps user understand why no one can track other phones without installing an app in that target device. This app shows you random location of the contact you ask the location for and then when you realize something is wrong the app tells you not to waste time searching for such apps since no such app exists.

Saturday, January 17, 2015

How to develop an Augmented Reality app on Android




How to develop an Augmented Reality app on Android

Augmented reality applications show the view of the real world with information superimposed on them. There are many apps on Google Play which uses Augmented Reality. 

Street Lens shows interesting places in the direction where the phone is pointing. It basically shows the camera view and superimposes the place information on top of it based on which direction the phone is pointing to. 

Similarly, Google Sky Map shows the stars and planets in the direction the phone points. Here again, the app just displays images based on how the phone is held.

Augmented Reality applications have the following basic steps
  • Detect the mobile orientation and direction
  • Display a background image based on the orientation and direction
  • Superimpose relevant information on the image

When I say the direction to which the phone is pointing to, I mean the direction at which the back camera of the phone is pointing to since for Augmented Reality the back camera is the eye of the phone.

Detecting the Mobile orientation and direction

The orientation of the device can be either portrait or landscape. If the height is greater than the width then the orientation of the device is portrait, otherwise it is landscape.



The most important part of the Augmented Reality applications is to know the position of the phone in the 3D world. In other words, the app should know how the phone is held by the user so that the app can show the content based on the direction the phone is pointing to.
Android SDK provides APIs for Accelerometer and Magnetometer and using these sensors the direction of the phone can be determined.

Using the accelerometer and magnetometer sensor values, we can obtain the Azimuth, Pitch and Roll values.


Azimuth value is the most important of the 3 since it tells how the mobile is aligned to the magnetic poles (north, south, east & west). The value ranges from -Pi radians to +Pi radians. Azimuth is –Pi when the phone is pointing to south. It is 0 when the phone points to north. –Pi/2 when it points to west and +Pi/2 when it points to east.

Roll value tells how the mobile is held with respect to the ground. Roll value is 0 when the phone is parallel to ground with camera facing down and it is –Pi or +Pi when the camera is facing up. 

Hold the phone parallel to the ground with the camera facing down. Now rotate the phone such a way that the phone remains parallel to the ground. This rotation can be measured using the Pitch values.

Imagine a big sphere around your phone. Any point in this sphere can be identified by using one of the 3 values (Azimuth, Pitch and Roll). From the phone’s sensor values, you can exactly find out where the phone is pointing to. 

Even though these sensor APIs are available in Android SDK, the sensor’s functionality and accuracy depends on the hardware. For example, in case of Micromax Canvas 1, the roll value is always 0.
 
Here is a sample Android Java code which reads the Azimuth, Pitch and Roll of the device


public class TiltDetector implements SensorEventListener
{
      public float swRoll;
      public float swPitch;
      public float swAzimuth;

      public SensorManager mSensorManager;
      public Sensor accelerometer;
      public Sensor magnetometer;

      public float[] mAccelerometer = null;
      public float[] mGeomagnetic = null;

      public TiltDetector(Context context)
      {
          mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
          accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
          magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

          mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_GAME);
          mSensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_GAME);

          swRoll = 0;
          swPitch = 0;
          swAzimuth = 0;
      }

      public void Clear()
      {
            mSensorManager.unregisterListener(this, accelerometer);
            mSensorManager.unregisterListener(this, magnetometer);
      }

      public void onAccuracyChanged(Sensor sensor, int accuracy)
      {
      }

      @Override
      public void onSensorChanged(SensorEvent event)
      {
          // onSensorChanged gets called for each sensor so we have to remember the values
          if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
          {
              mAccelerometer = event.values;
          }
          if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
          {
              mGeomagnetic = event.values;
          }

          if (mAccelerometer != null && mGeomagnetic != null)
          {
              float R[] = new float[9];
              float I[] = new float[9];
              boolean success = SensorManager.getRotationMatrix(R, I, mAccelerometer, mGeomagnetic);

              if (success)
              {
                  float orientation[] = new float[3];
                  SensorManager.getOrientation(R, orientation);

                  // at this point, orientation contains the azimuth, pitch and roll values.
                  swAzimuth = (float) (180 * orientation[0] / Math.PI);
                  swPitch = (float) (180 * orientation[1] / Math.PI);
                  swRoll = (float) (180 * orientation[2] / Math.PI);
              }
          }
      }
}


Displaying a background Image based on the position of the phone

When the app knows where exactly the phone is pointing to, the next step is to display appropriate image. The image to be displayed depends on the type of application. Street Lens app, for example, displays the camera view itself.
Suppose you are standing in front of Nasdaq stock market in New York City and the phone is pointing to the Nasdaq stock market. Using the camera view, the exact view that the camera view can be displayed on the app.


Superimpose relevant information on the image

Google Sky Map displays dynamically generated content based on the position of the stars at given time. Street Lens displays the restaurants, building names, etc based on the current location of the user and the direction at which the camera points. So the Augmented Reality application should show relevant info for the given direction of the phone.
Using GPS the exact location (latitude & longitude) of the device can be known and using sensor values as mentioned above, the direction the device is pointing to can be obtained. Coupled with these information, now any information of the real world can be shown on the mobile screen as if the information are displayed right in front of you and not on the mobile.




Many mobile users believe that the Augmented Reality app parses the image from the camera to decide the orientation and direction but as you see the reality is that the direction and position are obtained using the Accelerometer and Magnetometer sensors.