How to handle bluetooth settings from your application

7

This is a sample activity which shows How to enable and disable bluetooth settings from your application. Last post published in this forum is What is DDMS and how it works.

Underlying Algorithm:

Basic description of algorithm in step by step form:

1.) Create a Project bluetoothdemo.
2.) Add following permissions in AndroidManifest :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.app.bluetoothdemo"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN">
    </uses-permission>
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".bluetoothdemo" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

3.) Put the following code snippet in res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
   <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />
   <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical">
	<ToggleButton android:layout_width="wrap_content" android:text="ToggleButton" android:layout_height="wrap_content" android:id="@+id/toggleButton1" android:gravity="center|center_vertical|center_horizontal">
	</ToggleButton>
   </RelativeLayout>
</LinearLayout>

4.) Get the BluetoothAdapter, The BluetoothAdapter is required for any and all Bluetooth activity. For example:

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) 
{
	// Device does not support Bluetooth
}

5.) Next, you need to ensure that Bluetooth is enabled. Call isEnabled() to check whether Bluetooth is currently enable. For example :

if (!mBluetoothAdapter.isEnabled()) 
{
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, 5);
}

6.) If you would like to make the local device discoverable to other devices, call startActivityForResult(Intent, int) with the ACTION_REQUEST_DISCOVERABLE action Intent. For example :

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);

7.) Run the application.

Steps to Create:

1.) Open Eclipse. Use the New Project Wizard and select Android Project Give the respective project name i.e. bluetoothdemo. Enter following information:
Project name: bluetoothdemo
Build Target: Android APIs 2.1
Application name: bluetoothdemo
Package name: com.app. bluetoothdemo
Create Activity: bluetoothdemo

On Clicking Finish bluetoothdemo code structure is generated with the necessary Android Packages being imported along with bluetoothdemo.java. bluetoothdemo class will look like following:

package com.app.bluetoothdemo;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.widget.ToggleButton;

public class bluetoothdemo extends Activity implements OnClickListener {

   ToggleButton tb;
   BluetoothAdapter mBluetoothAdapter;
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	tb = (ToggleButton) findViewById(R.id.toggleButton1);
	tb.setOnClickListener(this);
   }

   public void onClick(View v) {
	switch(v.getId())
	{
            case R.id.toggleButton1 :
		if((tb).isChecked())
		{
 		    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		    if (mBluetoothAdapter == null) {
			// Device does not support Bluetooth
		    }
		    if (!mBluetoothAdapter.isEnabled()) {
		       Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
		       startActivityForResult(enableBtIntent, 5);
		    }

		    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
		    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
		    startActivity(discoverableIntent);
                }
		else
		{
		    Toast myToast = Toast.makeText(getApplicationContext(), "Bluetooth turned off", Toast.LENGTH_SHORT);
		    myToast.show();	
		    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		    if (mBluetoothAdapter == null) {
			// Device does not support Bluetooth
		    }
		    if (mBluetoothAdapter.isEnabled()) {
			if (mBluetoothAdapter != null) {
				mBluetoothAdapter.disable();
			}
                    }
		}
	  }
     }
}

Output – The final output:

7 Responses

  1. deepa says:

    sir,i am getting null pointer exception and unable enable bluetooth

  2. arun says:

    I am getting null pointer exception

  3. programmer says:

    this code is not running on an emulator…. !!!!

  4. Gina says:

    The emulator has not bluetooth connection. You have to do it on a phone.

  5. programmer says:

    ok i’ll try this

  6. Duke says:

    Thanks. I got this working on eclipse. will run this with my android device later

  7. Duke says:

    worked with the android device. thank you so much

Leave a Reply

Proudly designed by Theme Junkie.