蓝牙简单使用
程序员文章站
2024-03-24 22:00:46
...
蓝牙
简单的蓝牙功能打开蓝牙 关闭蓝牙 搜索蓝牙
清单文件需要加权限
BluetoothManager 蓝牙管理类,管理BluetoothAdapter。主要负责管理蓝牙的本地连接。
BluetoothAdapter 蓝牙适配器类:代表本蓝牙设备
BluetoothDevice 蓝牙设备,配对后的远程蓝牙设备
package com.example.day10bluetool;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ListView listView;
private MainAdpter mainAdpter;
private List<BlueToothBean> list = new ArrayList<>();
private BluetoothManager bluetoothManager;
private BluetoothAdapter bluetoothAdapter;
private BluetoothReceiver bluetoothReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initview();
initDate();
}
private void initview() {
listView=findViewById(R.id.lv);
findViewById(R.id.btn_start).setOnClickListener(this);
findViewById(R.id.btn_top).setOnClickListener(this);
findViewById(R.id.btn_search).setOnClickListener(this);
mainAdpter = new MainAdpter();
listView.setAdapter(mainAdpter);
}
private void initDate() {
bluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
bluetoothAdapter = bluetoothManager.getAdapter();
if (bluetoothAdapter == null) {
finish();
return;
}
bluetoothReceiver = new BluetoothReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothDevice.ACTION_FOUND);//可发现
intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//搜索结果
intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);//绑定状态
registerReceiver(bluetoothReceiver, intentFilter);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
boolean flag=bluetoothAdapter.enable();
if(!flag){
Intent intent=new Intent();
intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);//启动蓝牙
intent.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//开启设备可被发现
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,200);//指定搜索时间
startActivityForResult(intent,100);
}
break;
case R.id.btn_top:
list.clear();
mainAdpter.refresh(list);
bluetoothAdapter.disable();//关闭蓝牙
break;
case R.id.btn_search:
bluetoothAdapter.startDiscovery();//开启搜素
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100&&requestCode==RESULT_OK){
Toast.makeText(this, "蓝牙已开启", Toast.LENGTH_SHORT).show();
}
}
private class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action) {
case BluetoothDevice.ACTION_FOUND:
//搜索到一台蓝牙设备,进入一次Found
//搜索到的设备保存到list中
BluetoothDevice bluetoothDevice =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
BlueToothBean blueToothBean = new BlueToothBean();
blueToothBean.name = bluetoothDevice.getName();
blueToothBean.address = bluetoothDevice.getAddress();
blueToothBean.bluetoothDevice = bluetoothDevice;
list.add(blueToothBean);
//TODO adapter刷新的方法
mainAdpter.refresh(list);
break;
case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:
//TODO adapter刷新的方法
mainAdpter.refresh(list);
break;
default:
break;
}
}
}
import android.bluetooth.BluetoothDevice;
public class BlueToothBean {
public String name;
public String address;
public BluetoothDevice bluetoothDevice;
}
package com.example.day10bluetool;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
class MainAdpter extends BaseAdapter {
private List<BlueToothBean> list = new ArrayList<>();
public void refresh(List<BlueToothBean> list) {
this.list.addAll(list);
notifyDataSetChanged();
}
@Override
public int getCount() {
if (list.size() != 0) {
return list.size();
}
return 0;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
convertView = layoutInflater.inflate(R.layout.list_item, parent, false);
viewHolder.address = convertView.findViewById(R.id.address);
viewHolder.name = convertView.findViewById(R.id.name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
viewHolder.address.setText(list.get(position).address);
viewHolder.name.setText(list.get(position).name);
}
return convertView;
}
static class ViewHolder {
private TextView name;
private TextView address;
}
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
class MainAdpter extends BaseAdapter {
private List<BlueToothBean> list = new ArrayList<>();
public void refresh(List<BlueToothBean> list) {
this.list.addAll(list);
notifyDataSetChanged();
}
@Override
public int getCount() {
if (list.size() != 0) {
return list.size();
}
return 0;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
convertView = layoutInflater.inflate(R.layout.list_item, parent, false);
viewHolder.address = convertView.findViewById(R.id.address);
viewHolder.name = convertView.findViewById(R.id.name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
viewHolder.address.setText(list.get(position).address);
viewHolder.name.setText(list.get(position).name);
}
return convertView;
}
static class ViewHolder {
private TextView name;
private TextView address;
}
}
上一篇: Property详细解读-python
推荐阅读
-
SQL语句 05进阶篇 索引、子查询、ALTER TABLE 命令、处理重复数据、使用视图
-
蓝牙简单使用
-
Android:BLE蓝牙开发
-
使用二进制替代解决全排列问题 博客分类: java算法 算法全排列字符串二进制
-
Spring的NamedParameterJdbcTemplate的简单使用 博客分类: Spring NamedParameterJdbcTemplateSpring
-
xshell使用
-
idea开发工具使用技巧:代码合并
-
android蓝牙BLE开发
-
Java使用Jsoup简单解析页面 博客分类: Java Tools jsoup
-
使用putty的pscp将windows中文件上传到linux服务器