android app development

Android app development to control Arduino over Bluetooth using Android Studio

Android App Development:

Android app development– So far I have been using Android applications to control Arduino over Bluetooth. I will share the links of all the projects in which I have used the android applications. Due to a lot of requests from my subscribers and followers on my YouTube channel “Electronic Clinic” to explain how to create your own android application. Finally, I decided to share with you the knowledge, how to develop your own Android app to control Arduino.


 

allpcb circuit

 

For the best understanding and easy follow-up, I am going to control an LED from the android cell phone app. In this tutorial I will add two buttons in the app, one button will be used to turn on the LED and the other button will be used to turn off the LED. Later after understanding the basics then you can add multiple buttons and you can simply copy and paste the code the only difference will be in the ID, which you will see in the programming.

In this tutorial I am going to use a lot of pictures and I will try to explain everything, so this Tutorial can be a bit longer, but trust me if you follow all the steps and read this article, at the end you will be able to make your own Android app to control anything you want. Enough with the introduction, without any further delay, let’s get started!!!

The software’s used:

  1. The Software used for the Android app development
    • Android Studio
  2. Arduino IDE

About the Android Studio:

Android studio is one of the most commonly used software used for android app development which includes designing and programming. Before you follow this tutorial you should have some basic knowledge of how to use the Android studio. Otherwise, It can be really confusing for you. My recommendation is first you should follow some basic tutorials and then you can resume from here.

Before we start the android app development, first of all, I would like to explain the circuit diagram and Arduino programming. Because we can only design a good android application if we know exactly for what purpose we are making this application.

Circuit Diagram:

android app development

This is a very basic circuit diagram designed in CadeSoft Eagle 9.1.0 version. If you want to learn how to make a schematic and PCB then watch my tutorial given in the related projects section at the end.

An LED is connected with Pin number 13 of the Arduino through 330-ohm resistor. This is a 2.5v LED and that’s why I connected this current limiting resistor. If you have a 5v LED then there is no need to connect this resistor. In Video you will see I am not using this resistor as the led I am using is 5v. The main reason I added 2.5v LED in the circuit diagram is that this led is very commonly available. It really doesn’t matter if you use a 2.5v LED or a 5v led or even if you add a relay to control a 220 Vac bulb, it will have no effect on the programming.


 

 

On the left side, you can see a Bluetooth module, you can use HC-05 or HC-06 Bluetooth Module. If you are using a Bluetooth for the first time then you can watch my getting started tutorial on the Bluetooth module available in the related projects section. The Bluetooth module Tx and Rx pins are connected with the Arduino’s pin number 2 and pin number 3. Pin number and pin number 3 will be used as the Serial Port, which will be defined in the programming. While the VCC and GND are connected with the Arduino’s 5v and GND.

Arduino Bluetooth Programming:

Arduino Program Explanation:

As you know my friends in Arduino Uno we have only one Serial port which is available on pin number 0 and pin number 1. As I always say never use these pins with any Serial communication supported devices. The Arduino’s default Serial Port should only be used for debugging purposes. You can always define other Serial Ports using the SoftwareSerial library. So that’s the reason I added the SoftwareSerial.h header file.

I defined a Serial Port with the name Blue on pin number 2 and pin number 3 of the Arduino. The pin number is the Rx while Pin number 3 is the Tx.

On the third line, I defined a variable data of the type long int. This variable will be used to store the number which is sent from the Android cell phone.

 

 

LED is connected with pin number 13 of the Arduino.

Then I defined two variables password1 and password2 of the type long integer. The number 92 is used to turn on the led while 79 is used to turn off the led. This led can be replaced with a relay, this way you will be able to control anything you want.

Then in the void setup function, I set the LED as output and set it to off state using the digitalwrite function. low means off and High means ON.

To activate the serial communication I used the Serial.begin() function while 9600 is the baud rate and similarly for the Bluetooth module.  then starts the void loop function.

while(Blue.available()==0) ;

this line means that if the Bluetooth module has not received any data from the android cell phone then simply wait here.

if(Blue.available()>0)

this condition means if the Bluetooth module has received data from the android cell phone then store the received number in variable data and then using the if conditions the number stored in variable data is compared with the password1 and password2. If the number is equal to the password1 then the LED is turned ON and if the number stored in data is equal to password2 then the led is turned OFF. So that’s all about the Arduino’s programming.

Android app development:

First off all, open the Android Studio.

android app development


 

 

Click on Start a new Android Studio project

android app development

While the Choose your project form is open.

Select empty activity and click on the next button

android app development

After you click on the Next button, the configure your project form is opened, over here you set the project name, package name and you can select a directory where you want to store the application. Make sure the language is set to Java. So after you are done then you can click on the Finish button.

android app development

 

 

Wait for app synchronization

android app development

When your project is fully synchronized, as you can see the green dots in the following picture which is an indication that the synchronization is completed and we are ready for the next step.

android app development

Now we will make a layout for the Search and connect buttons. The search button will be used for searching the Bluetooth module and the connect button will be used to connect with the paired Bluetooth module.

For this click on the small arrow symbol given with the lightcontrol and find the Res and click on the small arrow to expand it, under the res then click on the layout to expand it and click on the activity_main.xml this will open the design screen.

android app development

 

 

The design screen is opened. Click on the small arrow in front of the java to expand it and then click on the MainActivity.
android app development

Now change the layout form constraint layout to linearlayout

android app development

As you can see in the picture below.

android app development

 

 

Now we make another linear layout within the main linearlayout

To create a button in xml we use the button attribute having some property which you can adjust as per your requirements.

android app development

To check the design layout for this change from text mode to the design. As you can see at the end of the coding there are two buttons with captions Design and Text. You can click on the Design button. As you can see the mouse cursor.

android app development

android app development


 

 

Now again click on the text button to open the coding. As in this App I am going to use only two buttons. So I can simply copy and paste the code and will change the caption of the button from search to connect.

android app development

Now if again you click on the design button you will see now two buttons are added.

 

android app development

 

It’s a good programming practice to keep checking your design layout as you continue to program. So now we are done with two buttons with captions search and connect. Now we will add the code for the paired device, for this, we use the listview attribute.

android app development

 

 

Click on the Design button to check.

android app development

Now open the mainActivity.java class

android app development

Change the appcompatActivity to Activity

android app development

 

 

android app development

Now you can follow the following pictures

android app development

Now create a java class

android app development

 

 

Enter the name as the ActivityHelper and click ok

android app development

android app development

ActivityHelper.java  Code:

android app development

Now create the second java class

android app development


 

 

Enter class name as the preferrencesActivity and click ok

android app development

android app development

android app development

 

 

PreferrencesActivity.java Code

Now open again MainActivity.java

android app development

 

PCBWay:

PCBWay is a trusted leader in the PCB industry, offering custom-designed boards at competitive prices to suit projects of all sizes—from basic to highly specialized.

Whether you’re working with standard FR-4 or need advanced solutions like Rogers, HDI, or Flexible and Rigid-Flex boards, PCBWay provides high-quality options without the high cost. Get an instant quote at pcbway.com/orderonline.

Curious about what others are creating? Explore innovative projects and ideas from the PCB community on PCBWay’s open-source platform at pcbway.com/project/.

MainActivity.java Code

To remove  this error just click on the red bulb and select create id value resource

android app development

 

 

And then click ok

android app development

Now remove this error click on red bulb and click on create layout resource file

android app development

And the click ok

android app development


 

 

So now you can see the list_item.xml is created

android app development

Open list_item.xml file and paste this code

Now you see all red error are removed.

android app development

Now we create the main controlling screen, for this right click on package folder

Then New

Then Activity

And click on the Empty Activity

android app development

 

 

Open  activity_controlling.xml

android app development

Now change the layout form constraint layout to RelativeLayout

android app development

 

android app development

Open activity_controlling.xml and switch form text to design mode

android app development

Create button  id on

android app development

 

 

android app development

Copy the same code and paste and change the id and name

android app development

Now open the Controlling.java class

android app development

android app development


 

 

Controlling.java code

Don’t forget to add the bluetooth permission in manifest.xml before you creat the APK file.

android app development

 

 

We are done with the designing and coding. Now the next step is to create the APK file.

Create .apk file:

Click on the build menu then hover the mouse on build bundle/(apk) and click on the build apk

android app development

And then wait for around one minute depending on your laptop or computer processing speed.

android app development

After generating the apk file then click on locate and transfer the app-debug.apk to phone and install

android app development


 

 

Download:

Download apk file:  light controlling apk

For the android app testing watch video given below.

Watch Video on YouTube:

 

 

 

Android app Bluetooth related Projects:

 

 

Related Articles

54 Comments

  1. thank you very much
    but i have an error at the main activity at line 315:
    Error:(315, 22) error: cannot find symbol variable action_settings

  2. Thank you for this nice tutorial.
    But still have problem with line “case R.id.action_settings:” which I don’t know how to solve.
    @SAVOIU Ioan : Tried to understand your link but didn’t know what to do as they mentionned to create a menu to insert action.settings, but we don’t need a menu so it’s a big mystery for me, also that I’m a newbie on Android Studio. So if someone can help

    1. I have also try to make a new folder named “menu_game” in layout folder and declared inside action_settings. There is no more error in the code but the app still crashes. the debugger gives : “Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.ListView.setAdapter(android.widget.ListAdapter)” , the two lines concerned 🙁 initList(new ArrayList()); ) and ( listView.setAdapter(adapter); ). What’s wrong, if someone can answer, I can post codes but waiting for somebody…Please.

      1. Hi, @Mastaf, You did not need Setting. comment or remove that function

        ( @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_settings:
        Intent intent = new Intent(MainActivity.this, PreferencesActivity.class);
        startActivityForResult(intent, SETTINGS);
        break;
        }
        return super.onOptionsItemSelected(item);
        } )

  3. Thanks for your answer Yamee Roar, I do understand know that is was for the ActionBar with the icon “settings” 😉 If you don’t setup the ActionBar with this variable, it’s unused…

  4. Is it possible you can leave us a copy of the entire project? For some reason the The project does not seem to work when I try and build it.

      1. So ive spent like multiple hours trying to figure what I am doing wrong. I can get the app to start but whenever I try to connect through Bluetooth the app crashes. The main issue I had with the code is the action_settings variable which I would comment out because I would get the error stating it was never declared. Would you by any chance know what the issue is?

          1. I am really not sure. The app keeps crashing. If you are able to leave a copy of the project it would be greatly appreciated.

  5. Dear Sir;
    thank you so much for your grear tutorial. I run correctly the code in my phone, but when i execute the app and touch search button, it doesn’t recognize and device, can you please help?

  6. Hallo thanks for this tutorial. I have Problem with “android.support.v7.app.AppCompatActivity; does not exist” i’m using sdkversion 29.

    1. replace this : import android.support.v7.app.AppCompatActivity;
      by this : import androidx.appcompat.app.AppCompatActivity;

  7. I have Problem with:
    java.lang.NullPointerException: Attempt to invoke virtual method ‘android.widget.ListAdapter android.widget.ListView.getAdapter()’ on a null object reference
    I can’t solve it. can you help me

  8. Hi, I have a problem when I tried to turn the light on with the app. I’ve double checked the wiring already so i thought it was my coding. therefore, i downloaded the apk with the link provided. It is still not working. Everything was fine like i can connect the bluetooth but when i touch the light on button, the led light was not responding. Also, i tried to use 330 ohm resistor as well.

    1. This is a fully tested project. IF for you even the APK file is not working, Then there must be some other problem with your hardware. Are you sure your Bluetooth module is ok? the wires are connected in the proper way?

  9. Just solved the problem with MainActivity errors (listview and action_settings)

    listview ERROR:

    Add into activity_main -> “android:id=”@+id/listview”

    action_settings ERROR:

    As the link that SAVOIU Ioan post, create the menu with the code:

    It should be already fixed

  10. Nice tutorial. Had to do some modifications to get it working, but I got it. Didn`t try to connect to bluetooth adapter as I must get it first tho.
    1.) Follow link posted by SAVOIU Ioan to solve action_settings problem.

    2.) replace this : import android.support.v7.app.AppCompatActivity;
    by this : import androidx.appcompat.app.AppCompatActivity;

    (Do this, posted by Tuday to solve “android.support.v7.app.AppCompatActivity; does not exist” problem).

    After that app should work, but one problem remains.
    If you press connect button with nothing selected from bluetooth device list app will crash. I`m picky so I worked on solution:

    In MainActivity.java add this line:

    connect.setEnabled(false);

    right after:
    search = (Button) findViewById(R.id.search);
    connect = (Button) findViewById(R.id.connect);

    so you get:
    search = (Button) findViewById(R.id.search);
    connect = (Button) findViewById(R.id.connect);
    connect.setEnabled(false);

    This will disable connect button if no device is selected from the list and prevent app from crashing.

    Thank you

  11. @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_settings:
    Intent intent = new Intent(MainActivity.this, PreferencesActivity.class);
    startActivityForResult(intent, SETTINGS);
    break;
    }
    return super.onOptionsItemSelected(item);
    }
    }

    I’m having an issue with this: “Cannot find symbol variable action_settings
    Can you please help?

  12. @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_settings:
    Intent intent = new Intent(MainActivity.this, PreferencesActivity.class);
    startActivityForResult(intent, SETTINGS);
    break;
    }

    Error: cannot find symbol variable action_settings
    Please help

  13. @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_settings:
    Intent intent = new Intent(MainActivity.this, PreferencesActivity.class);
    startActivityForResult(intent, SETTINGS);
    break;
    }
    return super.onOptionsItemSelected(item);
    }

    error: cannot find symbol variable action_settings

  14. I have problem with the code it says I cannot resolve symbol R, I don’t know what this R do and what is it so I cant find the solution anyone might help?:(

  15. Which line of main activity should I add?
    connect.setEnabled(false);

    right after:
    search = (Button) findViewById(R.id.search);
    connect = (Button) findViewById(R.id.connect);

    so you get:
    search = (Button) findViewById(R.id.search);
    connect = (Button) findViewById(R.id.connect);
    connect.setEnabled(false);

  16. Im having an error, for some reason the app crashes when i touch the “search” button, it dosent say anything about any error on android studio, does anybody know how to fix this?

  17. Hi after creating the list_item.xml file you said all errors has been gone, but i still have 5 errors in the code, can you please help me out.
    3 of them required bluetooth permission when i click on the red bulb and then click again and gave the premission the error has gone,
    but 1 error remains and it is on line 101 about controlling.class,
    it say ” cannot resolve ‘controlling'”.
    and when i clicked on the red bulb it shows me the 4 ways which are
    create class
    create enum
    create inner class
    create interface

    what should i do now??

  18. ok,it is good , i like it, it can help me
    Im having an error, for some reason the app crashes when i touch the “search” button, it dosent say anything about any error on android studio, does anybody know how to fix this

  19. Hello hope you are doing well. Can you please explain you have specifically taken password1 as 92 and password2 as 79? is there a reason or I can change the numbers according to my choice

  20. How did you get around the bluetooth connection issue. startActivity has been deprecated… Whats the fix to the code??? Thanks.

  21. Hello, I was able to follow your code and installed it to my android. but when I click/touch the search button it crashes and exit? I tried to other phones and its the same. does anyone here encountered it?

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button