zoukankan      html  css  js  c++  java
  • 蓝牙扫描功能

    1.加入需要的权限

    <uses-feature
            android:name="android.hardware.bluetooth_le"
            android:required="true" />
    
        <uses-permission android:name="android.permission.BLUETOOTH" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

    2.扫描界面实现

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:background="@color/bai"
        android:orientation="vertical"
        tools:context="myapplication.com.myblue.Search_Activity"
        android:weightSum="1">
    
        <LinearLayout
            android:layout_height="45dp"
            android:layout_width="match_parent"
            android:background="@color/theme"
            android:orientation="horizontal">
            <ImageView
                android:id="@+id/imageView1"
                android:layout_height="@dimen/zhuyemian"
                android:layout_width="@dimen/zhuyemian"
                android:layout_gravity="center_vertical"
                android:src="@mipmap/search_back"/>
            <TextView
                android:id="@+id/textView1"
                android:layout_height="@dimen/titlebar"
                android:layout_width="0dp"
                android:text="@string/zhuyemian"
                android:gravity="center_horizontal|center_vertical"
                android:textSize="@dimen/title_size"
                android:layout_weight="1"/>
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:id="@+id/textView_shoushuo"
                 android:layout_gravity="center_vertical"
                android:textSize="@dimen/activity_vertical_margin"
                android:src="@mipmap/search"/>
        </LinearLayout>
        <ListView
    
            android:layout_gravity="center"
            android:layout_marginLeft="30dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="30dp"
            android:layout_marginBottom="30dp"
            android:layout_height="260dp"
            android:layout_width="match_parent"
            android:id="@+id/listView"
            android:layout_weight="0.73" />
    </LinearLayout>

    4.功能实现

    package myapplication.com.myblue;
    
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Handler;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import java.util.ArrayList;
    import java.util.List;
    
    import myapplication.com.myblue.activity.Zhuye_Activity;
    import myapplication.com.myblue.adapter.MyAdapter;
    
    public class Search_Activity extends AppCompatActivity {
        BluetoothAdapter mBluetoothAdapter;
        ArrayList<String> datas = new ArrayList<String>();
        ListView listview;
      //  ArrayAdapter<String> ad;
        MyAdapter ad;
        ImageView imageView1;
        ImageView textView_shoushuo;
        TextView textView1;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search);
            Intent intent=new Intent(this,Zhuye_Activity.class);
            startActivity(intent);
    
            initView();
            mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
            IntentFilter filter=new IntentFilter(BluetoothDevice.ACTION_FOUND);
            registerReceiver(mReceiver,filter);
            IntentFilter filter2=new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
            registerReceiver(mReceiver,filter2);
            textView_shoushuo.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    if(!mBluetoothAdapter.isEnabled())
                    {
                        mBluetoothAdapter.enable();
                    }
                    mBluetoothAdapter.startDiscovery();
                    textView1.setText("搜索中...");
                }
            });
    
           // ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, datas);
            ad=new MyAdapter(datas,getApplicationContext());
            listview.setAdapter(ad);
        }
         public void initView(){
             imageView1= (ImageView) findViewById(R.id.imageView1);
             imageView1.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     finish();
                 }
             });
             listview= (ListView) findViewById(R.id.listView);
             textView_shoushuo= (ImageView) findViewById(R.id.textView_shoushuo);
             textView1= (TextView) findViewById(R.id.textView1);
             listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String s= (String) parent.getItemAtPosition(position);
                     Intent intent=new Intent(Search_Activity.this,Zhuye_Activity.class);
                     intent.putExtra("mac",s);
                     /**
                      * 离开本页面时广播就解除注册,并关闭蓝牙
                      * **/
                     mBluetoothAdapter.disable();
                     unregisterReceiver(mReceiver);
    
                     startActivity(intent);
    
                 }
             });
    
        }
        /**
         *
         * 解除注册
         * **/
        public void onDestroy() {
    
            super.onDestroy();
            //解除注册
            unregisterReceiver(mReceiver);
            Log.e("destory","解除注册");
        }
        /**
         * 打开蓝牙设备
         * **/
        public void enable() {
            //蓝牙设备
            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            //启用
            mBluetoothAdapter.enable();
        }
    
        /***
         * 定义广播接收
         * **/
        private BroadcastReceiver mReceiver=new BroadcastReceiver(){
    
    
    
            @Override
            public void onReceive(Context context, Intent intent) {
    
                String action=intent.getAction();
    
                Log.e("ywq", action);
                if(action.equals(BluetoothDevice.ACTION_FOUND))
                {
                    BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    if(device.getBondState()==BluetoothDevice.BOND_BONDED)
                    {    //显示已配对设备
                      //  这里的datas.indexof()用来判断是否重复添加
                String s=device.getName()+"*"+device.getAddress();
              if(datas.indexOf(s)==-1){
                   datas.add(device.getName()+"*"+device.getAddress());
                }
    }else if(device.getBondState()!=BluetoothDevice.BOND_BONDED) { 
                String s=device.getName()+"*"+device.getAddress();
                   if(datas.indexOf(s)==-1){
                     datas.add(device.getName()+"*"+device.getAddress());
                      }
    } }else if(action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){ // text2.setText("搜索完成..."); textView1.setText("搜索完成..."); } } }; }

    4.ListView适配器

    package myapplication.com.myblue.adapter;
    
    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 myapplication.com.myblue.R;
    
    /**
     * Created by Administrator on 2016/11/24.
     */
    public class MyAdapter extends BaseAdapter {
        ArrayList<String> datas;
        Context context;
    
        public MyAdapter(ArrayList<String> datas, Context context) {
            this.datas = datas;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return datas.size();
        }
    
        @Override
        public Object getItem(int position) {
            return datas.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if(convertView==null){
                convertView= LayoutInflater.from(context).inflate(R.layout.searchitem_layout, null);
                holder=new ViewHolder();
                holder.textViewl=(TextView) convertView.findViewById(R.id.textView_item);
                convertView.setTag(holder);
            }else{
                holder=(ViewHolder) convertView.getTag();
            }
            String s=datas.get(position);
            holder.textViewl.setText("MAC:"+s);
    
            return convertView;
        }
        class  ViewHolder{
            TextView textViewl;
        }
    }

    ListView—item布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:background="@color/bai"
        android:layout_height="40dp">
    <TextView
        android:id="@+id/textView_item"
        android:layout_height="40dp"
        android:textColor="@color/hei"
        android:textSize="@dimen/textsize"
        android:layout_width="match_parent"
        />
    </LinearLayout>
    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    AQTime : ASP.NET Applications
    Ext Js 之坑
    才看到这个强贴,真是out了
    Ext JS多选控件 MultiCombo
    杂记
    NHibernate中用Criteria查询,不采用SetResultTransformer(new DistinctRootEntityResultTransformer())处理Distinct
    [转]IntelliJ IDEA整合VSS2005的配置
    Ext JS: Formpanel中联动ComboBox赋初值
    c#中using 的作用
    DIV+CSS中标签ul ol li dl dt dd用法
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/6119458.html
Copyright © 2011-2022 走看看