How to detect bluetooth device and get the bluetooth address of detected device from android app

旧城冷巷雨未停 提交于 2020-01-13 06:46:31

问题


I want to the detect bluetooth device and get the bluetooth address of detected device from my android app . My task is to print a bill by using Bluetooth printer from my android app .


回答1:


For the Bluetooth Searching Activity you require following things,

Add Permissions in to your AndroidManifest.xml

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />

Minimum API level 7 and Android 2.1 version is required.

Activity class , onCreate() method

private static BluetoothAdapter mBtAdapter;

// Register for broadcasts when a device is discovered
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(mReceiver, filter);

// Register for broadcasts when discovery has finished
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(mReceiver, filter);


filter = new IntentFilter( BluetoothAdapter.ACTION_DISCOVERY_STARTED );
this.registerReceiver( mReceiver, filter );

// Get the local Bluetooth adapter
mBtAdapter = BluetoothAdapter.getDefaultAdapter();


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

Create BroadCastReceiver in same Activity

private final BroadcastReceiver mReceiver = new BroadcastReceiver() 
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        try
        {
            String action = intent.getAction();

            // When discovery finds a device
            if ( BluetoothDevice.ACTION_FOUND.equals(action) ) 
            {
                // Get the BluetoothDevice object from the Intent
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

                String deviceName = device.getName();
                String deviceAddress = device.getAddress();

                            System.out.println ( "Address : " + deviceAddress );
            } 
        }
        catch ( Exception e )
        {
            System.out.println ( "Broadcast Error : " + e.toString() );
        }
    }
};



回答2:


Once you find the device I would expect you would need to connect to it.

Below is an example similar to the one posted above but it also prints out the services on each device.

http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-discover-and.html

I don't have any examples of connecting to a printer but I do have an example for connecting to devices and sending data which may be helpful. The first one is connecting to a Windows PC running an SPP server and the second is connecting to an Arduino.

http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html http://digitalhacksblog.blogspot.com/2012/05/arduino-to-android-turning-led-on-and.html

Hope this helps.



来源:https://stackoverflow.com/questions/12048872/how-to-detect-bluetooth-device-and-get-the-bluetooth-address-of-detected-device

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!