web-dev-qa-db-ja.com

BluetoothHeadsetAPIを使用してBluetooth接続デバイスを取得する方法

ペアリングされたデバイスだけでなく、Bluetooth接続されたデバイスのリストを取得したい。

APIレベル11BluetoothHeadset AP​​Iを見つけました。これは、接続されているBluetoothデバイスのリストを取得するためのメソッドgetConnectedDevices()を提供します。

このAPIを使用してBluetooth接続デバイスのリストを取得するにはどうすればよいですか?

13
Priyank Patel

ついに解決策を得ました。以下は、BluetoothHeadsetAPIを使用してBluetoothオーディオ接続デバイスを取得するためのいくつかのコードスニペットです。

BluetoothHeadset mBluetoothHeadset;

// Get the default adapter
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// Establish connection to the proxy.
mBluetoothAdapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET);


// Define Service Listener of BluetoothProfile
private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() {
    public void onServiceConnected(int profile, BluetoothProfile proxy) {
        if (profile == BluetoothProfile.HEADSET) {
            mBluetoothHeadset = (BluetoothHeadset) proxy;
        }
    }
    public void onServiceDisconnected(int profile) {
        if (profile == BluetoothProfile.HEADSET) {
            mBluetoothHeadset = null;
        }
    }
};


// call functions on mBluetoothHeadset to check if Bluetooth SCO audio is connected.
List<BluetoothDevice> devices = mBluetoothHeadset.getConnectedDevices();                        
for ( final BluetoothDevice dev : devices ) {           
     return mBluetoothHeadset.isAudioConnected(dev);
}


// finally Close proxy connection after use.
mBluetoothAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset);
29
Priyank Patel

まず、Androindmanifest.xmlで権限を定義する必要があります

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

接続デバイスアクティビティの検索、

private static BluetoothAdapter mBtAdapter;
private final static int REQUEST_ENABLE_BT = 1;

            // 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 );

BroadCastReceiverクラス

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);
            }
        }
        catch ( Exception e )
        {
            logger.info( DateFormat.format( ConstantCodes.dateFormat ,new Java.util.Date()).toString(),"Broadcast Error : " + e.toString(), ConstantCodes.SEARCH_ACTIVITY );
            System.out.println ( "Broadcast Error : " + e.toString() );
        }
    }
};
1
Lucifer