Build your own IoT Based Android Application to control an LED on Arduino using Bluetooth

Arduino based Android Application

In this tutorial, we are going to build an Android application and we will be able to control the on board LED of the Arduino with our own android application using Bluetooth. But this tutorial is a continuation of our Android Studio for Internet of Things Series, where we made our first Android application having an image of a light bulb and a button. In this tutorial, you need to have some patience and please follow this tutorial step by step because I have got so many errors while implementing it for the first time.


What we are going to build?

We have already made a MainActivity in our previous tutorial. In the picture given below, you can see what we have already made in the previous tutorial. If you are interested, you can check out Getting started with the Android Studio for Internet of Things

 IoT Android Application

As you can see in the above pictures, we have added an image of a light bulb and a button. Whenever a user clicks on the button, the text on the button and the image will get change as per the second picture above. Now, let’s have a look at the below images to get an idea of what we are going to build in this tutorial.

 IoT App 

As you can see in the above image, we need to build a toolbar section that I have marked with a red rectangle. The “IOTAPP” is the title of the toolbar and the “Connect Bluetooth or WiFi” is the subtitle of the toolbar. We are going to change the subtitle according to the status of the Bluetooth Connection. And the menu section will pop up whenever the user will click on the three dots.

IoT Application

As you can see in the above image, we have a menu section with two items “Bluetooth” and “Exit”. In Bluetooth, we need to add the feature which can show the paired devices and we can connect any paired device with just a simple click. In the below image, you can find that it is displaying the paired devices. In my case, I have already paired it with the HC-06 Bluetooth module and my Desktop. 

Bluetooth Paired Network

When I clicked on the HC-06, then it will go back to the Main Activity and it will change the subtitle of the toolbar. In the below image, you can see that the title of the toolbar has been changed to “Connected to HC-06” Then we will add a progress bar in the activity_main.xml file.

IoT App Working

So far, I have just given you an overview of the application. Now, let’s build the app. In the below image, you can see the folder structure that we have already discussed in the tutorial. We need to create some more classes, activities, and layouts in this tutorial. I have marked those files in red in the picture below.

IoT App Folder Structure

According to the above picture, you need to create two Java classes. One is the “DeviceInfoModel” and another one is “DeviceListAdapter”. To create these classes, just follow the simple steps shown in the images below.

Step 1: Right click on the “com.example.yourappname” under the “java” folder. Then click “new > Java Class”. You can see a window popup on your screen.

IoT Application Java Class

Step 2: Give a name to the class. You need to follow these two steps twice to create both “DeviceInfoModel” and “DeviceListAdapter” classes.

IoT based Android Application

Now, we need to create the “” activity file and the “device_info.xml” layout file. I am not going to explain how to create an activity and a layout here, because I have already mentioned the procedures to create activities and layouts before in our first tutorial. When you will create the “” activity file, the “activity_device_select.xml” file will be created automatically. Now you can open the “activity_main.xml” file and follow the below code for the layout of the main activity.


The activity_main.xml file:

The activity_main.xml file is the layout of the file that we have created in our previous tutorial. Now, we need to add some more items in the layout. The most important one is the toolbar that I have told you in the above section. You can use a toolbar on your layout by using the code below.

    app:title="Bluetooth Connection"
    app:titleTextColor="@android:color/background_light" />

I have provided an Idtoolbar” to the item by using “android:id="@+id/toolbar"”.

The “android:layout_width="match_parent"" and the “android:layout_height="wrap_content"” is used to give the dimension to the toolbar.

Another component is the “Progress Bar”. Refer the code given below to add a progress bar to the layout. So, we have created the layout of the main activity that you can see in the image given below.

IoT Android Application

In the above image, you can see that we have added a progress bar that I have mentioned in the red circle just below the image of the bulb. At the top of the layout, you can find the toolbar. So, we have prepared the layout file of the main activity.


The “DeviceInfoModel” class and The “DeviceListAdapter” class:

Now, we need to prepare the two classes that we have created before. These classes are the “DeviceInfoModel” class and the “DeviceListAdapter” class. In the “DeviceInfoModel” class, we will hold our device data (i.e. the name of the device and the address of the hardware device). The “DeviceListAdapter” is a recycler view adapter which will help us to get the device data from the “DeviceInfoModel” class. You can visit this link to know more about ViewModel and RecyclerViewAdapter.


The “DeviceInfoModel” class:

public class DeviceInfoModel {
    private String deviceName, deviceHardwareAddress;
    public DeviceInfoModel(){}
  // Constructor
    public DeviceInfoModel(String deviceName, String deviceHardwareAddress){
        this.deviceName = deviceName;
        this.deviceHardwareAddress = deviceHardwareAddress;
    public String getDeviceName(){return deviceName;}
    public String getDeviceHardwareAddress(){return deviceHardwareAddress;}


In the above code, inside the DeviceInfoModel public class, we have a DeviceInfoModel() constructor, which is a bridge between our model and adapter class.

And we have two getter getDeviceName() and getDeviceHardwareAddress(). These two getter methods are used to get the values from the device property which we are going to use in our main activity.


The “DeviceListAdapter” class:

public class DeviceListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<Object> deviceList;
    public static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textName, textAddress;
        LinearLayout linearLayout;
        public ViewHolder(View v) {
            textName = v.findViewById(;
            textAddress = v.findViewById(;
            linearLayout = v.findViewById(;
    public DeviceListAdapter(Context context, List<Object> deviceList) {
        this.context = context;
        this.deviceList = deviceList;
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.device_info_layout, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
        ViewHolder itemHolder = (ViewHolder) holder;
        final DeviceInfoModel deviceInfoModel = (DeviceInfoModel) deviceList.get(position);
        // When a device is selected
        itemHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent(context,MainActivity.class);
                // Send device details to the MainActivity
                intent.putExtra("deviceName", deviceInfoModel.getDeviceName());
                // Call MainActivity
    public int getItemCount() {
        int dataCount = deviceList.size();
        return dataCount;


There are mainly two variables “context” and “deviceList” in the above code snippet. Context is used for access to application-specific resources and classes, as well as calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. The deviceList provides resizable-array, which means that in our case, the device name and address of the device can be added and removed from the list. It implements the List interface. Then we create some Override methods

  1. ViewHolder (): In this method we define view and get text view or image view from XML by their Id.
  2. DeviceListAdapter() : Create a parameterized constructor ---> Constructor is the mediator between Adapter and Activity.
  3. onCreateViewHolder(): This method create a view for user.
  4. onBindViewHolder():  This method bind the data with list of the items.
  5. getItemCount(): This method indicates how many items (or rows) are in the data set that will be presented in the AdapterView.

So, we prepared our two classes that is model and the recycler adapter class. Now, we need to show the data that we have with our model class.

We are going to use the “” and the “activity_device_select.xml” file.


The activity_device_select.xml file:

In the activity_device_select.xml file, we need to add the recycler view which will helps us to show the list of the paired devices. The below code can be used to add the recycler view in your app.

    app:layout_constraintTop_toTopOf="parent" />


I have given an ID to the RecyclerView by using the android:id="@+id/recyclerViewDevice". The other attributes can be used to give a proper dimension of the RecyclerView in the layout. The below image is representing a Recycler View where you can see that the items are listed down vertically. In our case, these items are going to be the device name and the address of the device.

activity_device_select.xml file


The “” file:

In the file, we need to show the device lists and we need to add a method show that it will keep a record of the details of the device when the user will click on a device. Then it will send us to the main activity. You can follow the below code to show a recycler view in the activity.

public class SelectDeviceActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        // Bluetooth Setup
        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        // Get List of Paired Bluetooth Device
        Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
        List<Object> deviceList = new ArrayList<>();
        if (pairedDevices.size() > 0) {
            // There are paired devices. Get the name and address of each paired device.
            for (BluetoothDevice device : pairedDevices) {
                String deviceName = device.getName();
                String deviceHardwareAddress = device.getAddress(); // MAC address
                DeviceInfoModel deviceInfoModel = new DeviceInfoModel(deviceName,deviceHardwareAddress);
            // Display paired device using recyclerView
            RecyclerView recyclerView = findViewById(;
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            DeviceListAdapter deviceListAdapter = new DeviceListAdapter(this,deviceList);
            recyclerView.setItemAnimator(new DefaultItemAnimator());
        } else {
            View view = findViewById(;
            Snackbar snackbar = Snackbar.make(view, "Activate Bluetooth or pair a Bluetooth device", Snackbar.LENGTH_INDEFINITE);
            snackbar.setAction("OK", new View.OnClickListener() {
                public void onClick(View view) { }


In the above code, the BluetoothAdapter allows us to perform the fundamental Bluetooth tasks. I used some methods which are available in the BluetoothAdapter.

The bluetoothAdapter.getBondedDevices() is used to get the list of the paired devices. Then I used the deviceList as an array and it will store the list of the paired devices that we got from the bluetoothAdapter.getBondedDevices() method. I used the RecyclerView from the activity_device_select.xml file in the following “RecyclerView recyclerView = findViewById(” line.

Then I called the DeviceListAdapter() and set the adapter into the RecyclerView by using “recyclerView.setAdapter(deviceListAdapter)” method. So, we have prepared the file to show the lists of the paired Devices.


The file:

I have already discussed the layout of the main activity file that is activity_main.xml. Now, we need to program the backend of the main activity in the file. You can follow the code below as I there is no need to explain everything about the Android studio and java here. I have already given some comments inside the code below so that you could get an overview of the concepts.

public class MainActivity extends AppCompatActivity {
    private String deviceName = null;
    private String deviceAddress;
    public static Handler handler;
    public static BluetoothSocket mmSocket;
    public static ConnectedThread connectedThread;
    public static CreateConnectThread createConnectThread;
    private final static int CONNECTING_STATUS = 1; // used in bluetooth handler to identify message status
    private final static int MESSAGE_READ = 2; // used in bluetooth handler to identify message update
    protected void onCreate(Bundle savedInstanceState) {
        // UI Initialization
        final Button buttonConnect = findViewById(;
        final Toolbar toolbar = findViewById(;
        final ProgressBar progressBar = findViewById(;
        final TextView textViewInfo = findViewById(;
        final Button buttonToggle = findViewById(;
        final ImageView imageView = findViewById(;
        // If a bluetooth device has been selected from SelectDeviceActivity
        deviceName = getIntent().getStringExtra("deviceName");
        if (deviceName != null){
            // Get the device address to make BT Connection
            deviceAddress = getIntent().getStringExtra("deviceAddress");
            // Show progree and connection status
            toolbar.setSubtitle("Connecting to " + deviceName + "...");
            BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            createConnectThread = new CreateConnectThread(bluetoothAdapter,deviceAddress);
        handler = new Handler(Looper.getMainLooper()) {
            public void handleMessage(Message msg){
                switch (msg.what){
                    case CONNECTING_STATUS:
                            case 1:
                                toolbar.setSubtitle("Connected to " + deviceName);
                            case -1:
                                toolbar.setSubtitle("Device fails to connect");
                    case MESSAGE_READ:
                        String arduinoMsg = msg.obj.toString(); // Read message from Arduino
                        switch (arduinoMsg.toLowerCase()){
                            case "led is turned on":
                                textViewInfo.setText("Arduino Message : " + arduinoMsg);
                            case "led is turned off":
                                textViewInfo.setText("Arduino Message : " + arduinoMsg);
        // Select Bluetooth Device
        buttonConnect.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                // Move to adapter list
                Intent intent = new Intent(MainActivity.this, SelectDeviceActivity.class);
        // Button to ON/OFF LED on Arduino Board
        buttonToggle.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                String cmdText = null;
                String btnState = buttonToggle.getText().toString().toLowerCase();
                switch (btnState){
                    case "turn on":
                        buttonToggle.setText("Turn Off");
                        // Command to turn on LED on Arduino. Must match with the command in Arduino code
                        cmdText = "<turn on>";
                    case "turn off":
                        buttonToggle.setText("Turn On");
                        // Command to turn off LED on Arduino. Must match with the command in Arduino code
                        cmdText = "<turn off>";
                // Send command to Arduino board
                assert cmdText != null;
    /* ============================ Thread to Create Bluetooth Connection =================================== */
    public static class CreateConnectThread extends Thread {
        public CreateConnectThread(BluetoothAdapter bluetoothAdapter, String address) {
            Use a temporary object that is later assigned to mmSocket
            because mmSocket is final.
            BluetoothDevice bluetoothDevice = bluetoothAdapter.getRemoteDevice(address);
            BluetoothSocket tmp = null;
            UUID uuid = bluetoothDevice.getUuids()[0].getUuid();
            try {
                Get a BluetoothSocket to connect with the given BluetoothDevice.
                Due to Android device varieties,the method below may not work fo different devices.
                You should try using other methods i.e. :
                tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
                tmp = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(uuid);
            } catch (IOException e) {
                Log.e(TAG, "Socket's create() method failed", e);
            mmSocket = tmp;
        public void run() {
            // Cancel discovery because it otherwise slows down the connection.
            BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            try {
                // Connect to the remote device through the socket. This call blocks
                // until it succeeds or throws an exception.
                Log.e("Status", "Device connected");
                handler.obtainMessage(CONNECTING_STATUS, 1, -1).sendToTarget();
            } catch (IOException connectException) {
                // Unable to connect; close the socket and return.
                try {
                    Log.e("Status", "Cannot connect to device");
                    handler.obtainMessage(CONNECTING_STATUS, -1, -1).sendToTarget();
                } catch (IOException closeException) {
                    Log.e(TAG, "Could not close the client socket", closeException);
            // The connection attempt succeeded. Perform work associated with
            // the connection in a separate thread.
            connectedThread = new ConnectedThread(mmSocket);
        // Closes the client socket and causes the thread to finish.
        public void cancel() {
            try {
            } catch (IOException e) {
                Log.e(TAG, "Could not close the client socket", e);
    /* =============================== Thread for Data Transfer =========================================== */
    public static class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;
        public ConnectedThread(BluetoothSocket socket) {
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;
            // Get the input and output streams, using temp objects because
            // member streams are final
            try {
                tmpIn = socket.getInputStream();
                tmpOut = socket.getOutputStream();
            } catch (IOException e) { }

            mmInStream = tmpIn;
            mmOutStream = tmpOut;
        public void run() {
            byte[] buffer = new byte[1024];  // buffer store for the stream
            int bytes = 0; // bytes returned from read()
            // Keep listening to the InputStream until an exception occurs
            while (true) {
                try {
                    Read from the InputStream from Arduino until termination character is reached.
                    Then send the whole String message to GUI Handler.
                    buffer[bytes] = (byte);
                    String readMessage;
                    if (buffer[bytes] == '\n'){
                        readMessage = new String(buffer,0,bytes);
                        Log.e("Arduino Message",readMessage);
                        bytes = 0;
                    } else {
                } catch (IOException e) {
        /* Call this from the main activity to send data to the remote device */
        public void write(String input) {
            byte[] bytes = input.getBytes(); //converts entered String into bytes
            try {
            } catch (IOException e) {
                Log.e("Send Error","Unable to send message",e);
        /* Call this from the main activity to shutdown the connection */
        public void cancel() {
            try {
            } catch (IOException e) { }
    /* ============================ Terminate Connection at BackPress ====================== */
    public void onBackPressed() {
        // Terminate Bluetooth Connection and close app
        if (createConnectThread != null){
        Intent a = new Intent(Intent.ACTION_MAIN);


Schematic of the Bluetooth Module and the Arduino Uno

As I have discussed before, we need an Arduino Uno and an HC-06 Bluetooth module to make a Bluetooth connection between the Arduino Uno and our Android application.

Arduino Bluetooth Module Circuit

In the above image, you can see that the Receiver pin (RXD pin) of the Bluetooth module is connected to the Transmitter Pin (TX0 Pin) of the Arduino Uno with a purple wire and the Transmitter Pin (TX0 Pin) of the Bluetooth module is connected to the Receiver pin (RXD pin) of the Arduino UNO with an orange wire. The VCC pin of the Bluetooth Module is connected to the 5V pin of the Arduino Uno with a Red Wire. The Ground (GND) of both board has been connected via the black wire.


Code for the Arduino Uno

The below code is for the Arduino sketch. You can see that we defined the LED 13 as a pin to access the built-in LED of the Arduino Uno board. Then we used the Serial Library to use the UART communication in between the Bluetooth module and the Arduino Uno. Upload the below code on your Arduino and connect the Bluetooth module as per the above schematic.

int value1;
#define LED 13
void setup()
    pinMode(LED, OUTPUT);
    digitalWrite(LED, LOW);
void loop()
  value1 =;
  if (value1==1)
    Serial.println("Led ON");
    digitalWrite(LED, HIGH);
  if (value1==0)
      digitalWrite(LED, LOW);
      Serial.println("Led Off");


In the video given below, I have demonstrated the entire project where I am controlling the built-in LED of the Arduino Uno using the Bluetooth module HC-06 through the Android App.



Hi, great tutorial, love what you are doing! I'm trying to get the app working with both the ESP8266 and Bluetooth dongle. However, I noticed some parts of the codes are missing. I was wondering if you could share the complete project (e.g., GitHub or Drive) so I can continue the project! Thanks in advance!

I just wanted to construct a small word in order to thank you for all the nice ideas you are giving out at this site. My time-consuming internet investigation has at the end of the day been recognized with good quality know-how to share with my good friends. I would state that that most of us website visitors are definitely endowed to be in a very good website with so many brilliant people with helpful hints. I feel quite privileged to have used your entire webpages and look forward to so many more amazing minutes reading here. Thank you once again for everything.

I simply needed to say thanks yet again. I do not know the things I could possibly have handled without the thoughts revealed by you over this subject matter. Certainly was an absolute scary situation for me personally, nevertheless viewing a new expert avenue you solved it forced me to weep over fulfillment. I'm happier for this service and even hope that you are aware of an amazing job you're putting in training people by way of your blog. I am sure you have never met any of us.

Needed to create you the bit of word in order to give many thanks as before over the incredible tactics you have provided at this time. It has been pretty generous of you to offer freely just what most people might have advertised as an e-book to end up making some profit on their own, and in particular considering that you could possibly have tried it in the event you wanted. Those techniques also acted to become a fantastic way to fully grasp many people have the same keenness really like my own to see many more with reference to this matter. Certainly there are several more pleasurable instances in the future for individuals that read through your blog post.

I wanted to send a quick remark to be able to appreciate you for these amazing hints you are posting on this site. My incredibly long internet search has at the end of the day been honored with pleasant information to exchange with my friends and classmates. I 'd express that many of us site visitors actually are undoubtedly endowed to exist in a wonderful community with many awesome individuals with helpful things. I feel very much happy to have encountered your entire web pages and look forward to really more fabulous minutes reading here. Thank you again for everything.

The next time I learn a weblog, I hope that it doesnt disappoint me as much as this one. I imply, I know it was my option to learn, however I truly thought youd have one thing interesting to say. All I hear is a bunch of whining about one thing that you may fix should you werent too busy in search of attention.

The subsequent time I learn a blog, I hope that it doesnt disappoint me as much as this one. I mean, I do know it was my option to read, however I really thought youd have something attention-grabbing to say. All I hear is a bunch of whining about something that you might fix should you werent too busy in search of attention.

I'm writing to make you know of the exceptional encounter my princess developed visiting your blog. She realized too many details, which included what it is like to have an ideal teaching mindset to let many more clearly have an understanding of various advanced issues. You actually exceeded her expectations. Thank you for providing those important, dependable, edifying and cool tips on the topic to Janet.

A lot of thanks for all your labor on this blog. My niece loves managing investigation and it's really easy to understand why. Most of us hear all relating to the powerful mode you make reliable things on the website and therefore improve participation from some others on the area while our child is truly discovering a lot. Take advantage of the rest of the new year. Your conducting a brilliant job.

I am also writing to make you know of the fine discovery my cousin's girl experienced studying your web page. She realized some things, with the inclusion of what it is like to possess a wonderful giving style to make the mediocre ones smoothly grasp specified very confusing subject areas. You really did more than our own desires. Thank you for displaying such good, safe, revealing and in addition cool tips about this topic to Kate.

Thanks for all of the labor on this blog. My aunt delights in participating in investigations and it is obvious why. Most of us hear all about the compelling tactic you render worthwhile tips on the blog and as well improve participation from other ones on the subject matter while our own child has always been understanding a whole lot. Take pleasure in the remaining portion of the year. You are always performing a good job.

I'm also commenting to make you know of the really good experience my friend's girl developed checking your webblog. She figured out a lot of pieces, which included what it's like to possess an excellent giving mood to let other folks with no trouble have an understanding of various complex issues. You actually surpassed readers' expectations. Many thanks for producing these beneficial, healthy, explanatory and as well as cool tips about this topic to Sandra.

I intended to compose you a little bit of word to help say thanks a lot once again for these great strategies you've documented in this article. This has been certainly wonderfully open-handed of you giving publicly all that a few people could have distributed as an e book to end up making some profit on their own, notably now that you might have tried it in case you wanted. Those strategies additionally acted to be a easy way to fully grasp that some people have the same dreams just as mine to learn a little more when it comes to this issue. I'm sure there are many more fun periods ahead for folks who scan your website.

I needed to compose you that little word to be able to say thank you once again considering the remarkable ideas you have documented on this page. This has been simply particularly open-handed of you to present unreservedly what exactly most of us might have marketed for an e book in order to make some bucks for their own end, especially considering that you might well have done it if you ever decided. These solutions also worked to be the fantastic way to understand that other people have the same zeal just as my own to learn great deal more related to this issue. Certainly there are some more enjoyable periods in the future for many who look into your blog post.

Thank you a lot for providing individuals with a very pleasant possiblity to read in detail from this web site. It's usually so lovely and stuffed with fun for me and my office peers to visit your website on the least thrice in 7 days to read the new tips you will have. And indeed, I am also always motivated for the beautiful knowledge you give. Selected 3 tips in this post are rather the finest we've had.

I enjoy you because of all your hard work on this web site. My mum delights in managing internet research and it's easy to see why. Most of us hear all relating to the compelling tactic you render efficient solutions through the web blog and even attract participation from other individuals on the topic plus my daughter is certainly becoming educated a whole lot. Take advantage of the rest of the year. You're carrying out a superb job.

Good post. I learn something more difficult on totally different blogs everyday. It would at all times be stimulating to read content from different writers and follow a bit one thing from their store. I抎 want to make use of some with the content material on my weblog whether you don抰 mind. Natually I抣l provide you with a hyperlink in your web blog. Thanks for sharing.

Aw, this was a very nice post. In concept I would like to put in writing like this additionally ?taking time and actual effort to make a very good article?however what can I say?I procrastinate alot and certainly not seem to get something done.

Good post. I learn something tougher on totally different blogs everyday. It'll always be stimulating to learn content from different writers and practice a little one thing from their store. I抎 desire to use some with the content on my blog whether or not you don抰 mind. Natually I抣l give you a hyperlink on your internet blog. Thanks for sharing.

I wanted to create you a little remark to help give thanks yet again for the lovely advice you have featured on this site. This is incredibly generous with you to convey unreservedly what exactly many individuals would have marketed as an electronic book to get some dough for their own end, principally given that you might well have done it in case you decided. Those basics additionally served to provide a easy way to be certain that some people have a similar dream much like my personal own to find out a good deal more on the topic of this matter. Certainly there are many more enjoyable periods up front for people who check out your blog.

Add new comment

The content of this field is kept private and will not be shown publicly.

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.