蓝牙以及蓝牙操作明细

connectlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final BluetoothDevice bluetoothDevice = list.get(position);
new Thread(new Runnable() {
@Override
public void run() {
try {
//Socket连接
BluetoothSocket socket = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(uuid);
socket.connect();
//发送数据
if(socket.isConnected()){
//首先发送总长度
socket.getOutputStream().write((message.getBytes().length+"").getBytes());
Thread.sleep(100);
//再发送数据
socket.getOutputStream().write(message.getBytes());
}else {
Toast.makeText(MainActivity.this, “连接失败!”, Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
//动态获取权限
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
if(ActivityCompat.checkSelfPermission(this,strings[0])!= PackageManager.PERMISSION_GRANTED){
requestPermissions(strings,101);
}
}
//获取本机蓝牙设备
manager= (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
adapter=manager.getAdapter();
//注册广播
myRecevier=new MyRecevier();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);
registerReceiver(myRecevier,intentFilter);
//打开蓝牙点击事件
open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);//打开蓝牙
intent.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//允许蓝牙被搜索
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,200);//允许被搜索时间在200秒内
startActivityForResult(intent,100);
//开启服务
server();
}
});
//关闭蓝牙点击事件
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.disable();
}
});
//显示已匹配设备事件
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list.clear();
Set bondedDevices = adapter.getBondedDevices();
list.addAll(bondedDevices);
myAdapter.notifyDataSetChanged();
}
});
//显示附近设备事件
discovery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listdiscovery.clear();
adapter.startDiscovery();//搜索蓝牙设备
}
});
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(myRecevier);
}

private void server() {
    new Thread(){
        @Override
        public void run() {
            try {
                //获得服务端
                BluetoothServerSocket serverSocket = adapter.listenUsingInsecureRfcommWithServiceRecord(adapter.getName(), uuid);
         //无限死循环接收客户端连接
                while (true){
                    BluetoothSocket bluetoothSocket = serverSocket.accept();
                    new ServerThread(bluetoothSocket).start();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }.start();
}
class MyRecevier extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        //判断找到频道
        if(intent.getAction().equals(BluetoothDevice.ACTION_FOUND)){
                //获得远程设备
            BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            listdiscovery.add(bluetoothDevice);
            myAdapter_discovery.notifyDataSetChanged();
        }
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值