android 蓝牙搜索

发布时间:2020-03-24 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了android 蓝牙搜索脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

1.搜索蓝牙权限

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

2.MainActivity.java

package com.example.bluetooth;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

	private ListView tvBlueName;
	private Map<String,String> map;
	private List<Map<String,String>> list;
	private DeviceAdapter adapter;
	private BluetoothAdapter mBluetoothAdapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvBlueName = (ListView) findViewById(R.id.textView1);
		mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		
		//获取已经绑定的蓝牙设备信息
		Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();
		list = new ArrayList<Map<String,String>>();
		if(devices.size() > 0){
			for(BluetoothDevice bluetoothDevice : devices){
				map = new HashMap<String,String>();
				map.put("name",bluetoothDevice.getName());
				map.put("address",bluetoothDevice.getAddress());
				list.add(map);
			}
			adapter = new DeviceAdapter();
			tvBlueName.setAdapter(adapter);
		}
		
		// 注册用以接收到已搜索到的蓝牙设备的receiver  
        IntentFilter mFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);  
        registerReceiver(mReceiver,mFilter);  
        
        // 注册搜索完时的receiver  
        mFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);  
        registerReceiver(mReceiver,mFilter);  
        
		
		findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				setProgressBarIndeterminateVisibility(true);  
		        setTitle("正在扫描....");  
		        // 如果正在搜索,就先取消搜索  
		        if (mBluetoothAdapter.isDiscovering()) {  
		            mBluetoothAdapter.cancelDiscovery();  
		        }  
		        // 开始搜索蓝牙设备,搜索到的蓝牙设备通过广播返回  
		        mBluetoothAdapter.startDiscovery();  
			}
		});
	}
	
	private BroadcastReceiver mReceiver = new BroadcastReceiver() {  
		  
        @Override  
        public void onReceive(Context context,Intent intent) {  
            String action = intent.getAction();  
            if(action.equals(BluetoothDevice.ACTION_FOUND)){
            	BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            	//获取未绑定的蓝牙设备
            	if(device.getBondState() != BluetoothDevice.BOND_BONDED){
            		map = new HashMap<String,String>();
    				map.put("name",device.getName());
    				map.put("address",device.getAddress());
            		list.add(map);
            	}
            	adapter.notifyDataSetChanged();
            }else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {  
                setProgressBarIndeterminateVisibility(false);  
                setTitle("搜索蓝牙设备");  
            } 
        }  
    };  
    
    class DeviceAdapter extends BaseAdapter{

		@Override
		public int getCount() {
			return list.size();
		}

		@Override
		public Object getItem(int arg0) {
			return list.get(arg0);
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(int position,View convertView,ViewGroup parent) {
			View v = getLayoutInflater().inflate(R.layout.item,null);
			TextView tv1 = (TextView) v.findViewById(R.id.name);
			TextView tv2 = (TextView) v.findViewById(R.id.address);
			tv1.setText(list.get(position).get("name"));
			tv2.setText(list.get(position).get("address"));
			return v;
		}
    }
}

3.activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="搜索" />

    <ListView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="10dp" />

</RelativeLayout>


以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

总结

以上是脚本之家为你收集整理的android 蓝牙搜索全部内容,希望文章能够帮你解决android 蓝牙搜索所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

其他人正在看

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

标签: