蓝牙匹配

来源:互联网 发布:js 全角 半角 编辑:程序博客网 时间:2024/04/29 10:48
package com.example.bluedemo;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import java.util.Set;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity {    private BluetoothAdapter mBluetoothAdapter;    private List<String> liststr;    private ListView listview;    private MyViewAdapter myadapter;    private Button server,client;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);        setContentView(R.layout.mainlist);        liststr = new ArrayList<String>();        listview = (ListView) findViewById(R.id.listview);        server = (Button) findViewById(R.id.server);        client = (Button) findViewById(R.id.client);        server.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                Intent in = new Intent(getApplication(), Server.class);                startActivity(in);            }        });        client.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                Intent in = new Intent(getApplication(), ClientRoom.class);                startActivity(in);            }        });        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();        Set<BluetoothDevice> pairedDevices = mBluetoothAdapter                .getBondedDevices();        if (pairedDevices.size() > 0) {            for (BluetoothDevice device : pairedDevices) {                liststr.add(device.getName() + "|" + device.getAddress());            }        }        //        myadapter = new MyViewAdapter(this, liststr);        listview.setAdapter(myadapter);        listview.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> arg0, View arg1,                    int position, long arg3) {                String address = liststr.get(position);                address = address.substring(address.indexOf("|") + 1,                        address.length());                // 获取设备                BluetoothDevice btDev = mBluetoothAdapter                        .getRemoteDevice(address);                try {                    Boolean returnValue = false;                    if (btDev.getBondState() == BluetoothDevice.BOND_NONE) {                        // 利用反射方法调用BluetoothDevice.createBond(BluetoothDevice                        // remoteDevice);                        Method createBondMethod = BluetoothDevice.class                                .getMethod("createBond");                        Log.d("BlueToothTestActivity", "开始配对");                        returnValue = (Boolean) createBondMethod.invoke(btDev);                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        });        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);        this.registerReceiver(receiver, filter);        filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);        this.registerReceiver(receiver, filter);        filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);        this.registerReceiver(receiver, filter);    }    public void onClick_Search(View view) {        setProgressBarIndeterminateVisibility(true);        setTitle("正在扫描...");        if (mBluetoothAdapter.isDiscovering()) {            mBluetoothAdapter.cancelDiscovery();        }        mBluetoothAdapter.startDiscovery();    }/** *  */    private final BroadcastReceiver receiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            String action = intent.getAction();            if (BluetoothDevice.ACTION_FOUND.equals(action)) {                BluetoothDevice device = intent                        .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);                if (device.getBondState() != BluetoothDevice.BOND_BONDED) {                    liststr.add(device.getName() + "|" + device.getAddress());                    myadapter.notifyDataSetChanged();                }            } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED                    .equals(action)) {                setProgressBarIndeterminateVisibility(false);                setTitle("搜索完成");            }        }    };}
0 0
原创粉丝点击