How to Use Beacon in Android Application

 

Beacon, a technology that uncovers incredible features to customers through Android Development. Here learn to implement Beacon in Android Application. Engage your customers with detailed information along with better navigations.

 

What is Beacon?

 

Beacon a small physical device that is used to broadcast the wireless signals to nearby Smartphone’s or tablets.

 

What will these beacons do?

 

Beacons will enable the Bluetooth devices to broadcast or receive tiny, static piece of data by constantly sending out the radio signals to the nearby mobile phones.

 

 

in-store-beacon-technology

 

 

 

To connect this beacon’s, we must need SDK so what is SDK?

 

SDK is a software development kit, a part of Android Studio that consists a set of software development tools which enables the developers to build and compile Android applications.

 

This Android SDK includes required libraries, Debugger, An emulator, library, source code, development tools to build Android applications.

 

This Android Studio must have Java Development Kit (JDK) installed with it and the recommended Android Development Tools (ADT) plug-in.

 

Most of these IDEs provide a graphical interface that enables developers to perform development tasks faster. However, other IDEs, such as NetBeans or IntelliJ, will also work in the same way.

 

Note:

 

Estimote provides the SDK for connecting beacon & sticker and accessing the features. The SDK system works on Android 4.3 or above and requires a device with Bluetooth Low Energy (Estimote SDK’s minimum Android SDK version is 9).

 

Create Your app in Estimate

 

Why do we need to use Estimote?

 

To connect this beacons & stickers and to access the features we must need SDK and this SDK will be provided by Estimote cloud.

 

Here you can find the step by step process to create your app.

 

Step 1: To create your app in Estimote you must sign up first.

 

Once signed in you can see the dashboard as shown in below

READ NOW >>  15 Mobile App Myths That Prevents Your Business Growth

Where you can see the beacons list, Registered Apps, locations, Analytics, etc.

 

 

 

 

Output Screenshot

 

Step 2: Create and register your new App

 

Click on “AddNewApp” option as shown in the below screen.

 

Output Screenshot

 

Step 3: Provide your App info

 

After clicking on it, you will be asked to provide your app info

 

Output Screenshot

 

 

Note: In “Associated Beacons” Based on your app specification choose your beacon.

After creating your App, you could see your App info as shown in below screen.

 

 

Output Screenshot

 

 

Cool! We had successfully created our App in Estimote.

And now it’s time to create your project in Android Studio

 

How to create your project in Android Studio

 

If you are new to Android Studio and you don’t have an idea of creating your project on it. Well, we made it easy for you. In our previous blog, we gave a step by step procedure to create a new project in Android Studio

 

Click here to know: http://www.agiratech.com/kotlin-in-android-development/

 

After creating a project, we must initialize “Estimote SDK” by doing the below steps in MainActivity file.

 

Step 1: Add SDK in your project

 

To add Estimote SDK in your project, find build.gradle file in your App folder.

In build.gradle file you should add your SDK name in below-mentioned code.

 

dependencies {

compile 'com.estimote:sdk:0.11.1@aar'

}

 

Step 2: Initialize SDK

 

Now go to main activity file

To Initialize Estimote SDK, we should give a global declaration in onCreate() method

You can find the “oncreate method” in MainActivity file.

Declare it like the below way

 

private BeaconManager beaconManager;

private EstimoteCloud estimoteCloud;

private static final Region ALL_ESTIMOTE_BEACONS_REGION =

new Region("rid", null, null, null);

 

Step 3:  Create a Beacon Manager object to add your app id and app token

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

beaconManager = new BeaconManager(this); object creation

// To get your AppId and AppToken, you need to create new

an app in Estimote Cloud.

EstimoteSDK.initialize(applicationContext, appId, appToken);

//Optional, debug logging.

EstimoteSDK.enableDebugLogging(true);

}

 

READ NOW >>  Getting Started with Kotlin for Android Development

Step 4: Connect the Beacon Manager to the beacon scanning service maintained by the Estimote SDK.

 

@Override

protected void onResume() {

super.onResume();

SystemRequirementsChecker.checkWithDefaultDialogs(this); // to enable bluetooth

beaconManager.connect(new BeaconManager.ServiceReadyCallback() {

@Override

public void onServiceReady() {

beaconManager.startRanging(ALL_ESTIMOTE_BEACONS_REGION);        }

});

}

 

Step 5: Set ranging listeners

 

To set this ranging listener, we should call the “setranginglistener” method. By typing “setranginglistener” you will automatically get the recommended function suggestions and you can choose it accordingly.

 

beaconManager.setRangingListener(new BeaconManager.RangingListener() {

@Override

public void onBeaconsDiscovered(Region region, List<Beacon> beacons) {

if (beacons.size() != 0) {

Beacon beacon = beacons.get(0);

}

}

});

 

Note: Here the output will be in an array format.

Get (0) will get the details of the first beacon.

 

Once you were done with all the above steps, run your project. Now you will get the output which holds all the details of Beacon.

 

 

Output Screenshot

 

 

Note: Beacon name will not be displayed on the output screen. In case if you like to view or identify the beacon name you can follow the below procedure.

 

 

Procedure to get beacon name

 

To find the beacon name developer need to pass two type of input as followed,

  • If we are using proximity beacon, we must use fetchBeaconDetails methods and in case if we are using location beacon then we must use fetchDeviceDetails.
  • A user has to send beaconUUID and Major id. By using a callback method, so internet is mandatory to get back the details.

 

estimoteCloud.fetchBeaconDetails(beacon.getProximityUUID(),beacon.getMajor(),

nearestBeacon.getMinor(), new CloudCallback<BeaconInfo>() {
@Override
public void success(BeaconInfo beaconInfo) {

String beaconname = beaconInfo.name; // name will get stored

}
}

@Override
public void failure(EstimoteServerException e) {

Log.d("mmmmmmmmm", e.getMessage());
}

});

 

 

Output

 

Output Screenshot

 

 

On other hands, if you want to start or stop the service you can follow the below procedure.

 

To Start the Service 

 

READ NOW >>  How To Improve The Quality Of Android Apps Using Firebase Test Lab

If you like to start the service you can do the below process in onResume method.

 

@Override

protected void onResume() {

super.onResume();

SystemRequirementsChecker.checkWithDefaultDialogs(this); // to enable bluetooth

beaconManager.connect(new BeaconManager.ServiceReadyCallback() {

@Override

public void onServiceReady() {

beaconManager.startRanging(ALL_ESTIMOTE_BEACONS_REGION);        }

});

}

 

To Stop The Service

 

If you need to stop this service you have to use stop scanning process inside of onPause method.

 

@Override

protected void onPause() {

beaconManager.stopRanging(ALL_ESTIMOTE_BEACONS_REGION);

super.onPause();

}

 

Source Code

 

package agira.com.mybeacon;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.AppCompatTextView;

import android.util.Log;

import android.widget.TextView;

import com.estimote.sdk.Beacon;

import com.estimote.sdk.BeaconManager;

import com.estimote.sdk.EstimoteSDK;

import com.estimote.sdk.Region;

import com.estimote.sdk.SystemRequirementsChecker;

import com.estimote.sdk.cloud.CloudCallback;

import com.estimote.sdk.cloud.model.BeaconInfo;

import com.estimote.sdk.exception.EstimoteServerException;

import com.estimote.sdk.cloud.EstimoteCloud;

import java.util.List;

 

public class MainActivity extends AppCompatActivity {

private static final Region ALL_ESTIMOTE_BEACONS_REGION =

new Region("rid", null, null, null);

 

private BeaconManager beaconManager;

private EstimoteCloud estimoteCloud;

private AppCompatTextView appCompatTextView;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

appCompatTextView = (AppCompatTextView) findViewById(R.id.txt);

beaconManager = new BeaconManager(this); - object initiate

EstimoteSDK.initialize(this,"****-tech-llc-s-****-mwp", "8836b7****bf2481d2da******"); -  config app id nd app token

estimoteCloud = EstimoteCloud.getInstance(); estimote object creation

Ranging listeners are set to  find the signal of beacons

-  beaconManager.setRangingListener(new BeaconManager.RangingListener() {

@Override

public void onBeaconsDiscovered(Region region, final List<Beacon> list) {

try {

Log.d("oooooooooo", "" + list.size());

if (!list.isEmpty()) {

Beacon nearestBeacon = list.get(0);

estimoteCloud.fetchBeaconDetails(nearestBeacon.getProximityUUID(), nearestBeacon.getMajor(),

nearestBeacon.getMinor(), new CloudCallback<BeaconInfo>() {

@Override

public void success(BeaconInfo beaconInfo) {

String patientname = beaconInfo.name;

appCompatTextView.setText(patientname);

}

@Override

public void failure(EstimoteServerException e) {

Log.d("mmmmmmmmm", e.getMessage());

}

});

 

}

} catch (Exception d) {

d.getMessage();

}

}

});

}

 

@Override

protected void onResume() {

super.onResume();

SystemRequirementsChecker.checkWithDefaultDialogs(this);

startlistening();

}

private void startlistening() {

beaconManager.connect(new BeaconManager.ServiceReadyCallback() {

@Override

public void onServiceReady() {

//Toast.makeText(getApplicationContext(), "Staring", Toast.LENGTH_SHORT).show();

beaconManager.startRanging(ALL_ESTIMOTE_BEACONS_REGION);

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

beaconManager.disconnect();

BM.enable();

 

}

}

 

Conclusion:

 

While bringing various levels of advancements in Mobile technology, Beacons brings an effective way of carrying the piece of information to the customers. It continuously acknowledges the customers with the required information for the better navigations. By implementing these Beacons with mobile technology we could make the bright path for successful businesses. Aside from big companies, now the start-ups are playing the significant role in identifying the future of beacons.