怎么在搜索蓝牙4.0 设备中调用蓝牙2.0的搜索界面?(和UI关系更大,和蓝牙4.0关系不大)

原创 2017年01月03日 05:14:40
你好!

本人主要是做个界面:上栏是新搜索的蓝牙4.0设备,下栏是已经配对的蓝牙4.0设备,下面还有个按钮可以手动搜索,
这个界面在2.0很多,但是蓝牙4.0在adatper里面是没有配对设备的记录的,是不是能用preference来记录?

因为我看很多demo里面都是一行一行的textview,然后程序里面使用ViewHolder来加载这些textview的(textview在xml里面写好了),要做到上面的界面,是2个ListView加一个Button,我不知道怎么在ViewHolder来调用ListView,只是知道ViewHolder是为了能加快调用界面,来加快显示搜索到的蓝牙设备。
比如,现在一般用textview的xml是这么写的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <TextView android:id="@+id/device_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="24dp"/>
    <TextView android:id="@+id/device_address"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="12dp"/>
    <TextView android:id="@+id/device_uuid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="12dp"/>
</LinearLayout>

我想做的界面的xml是这样写的:

<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/newDevice"/>
<ListView android:id="@+id/newDevices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stackFromBottom="true"
    android:layout_weight="2">
    </ListView>
<TextView android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/pairedDevice"/>
<ListView android:id="@+id/pairedDevices"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stackFromBottom="true"
    android:layout_weight="2">
    </ListView>
<Button android:id="@+id/scanButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/scanNew"/>

蓝牙2.0调用上面这个界面一般是这么调用的:

super.onCreate(savedInstanceState);
// Setup the window
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.device_list);
        bluetooth = BluetoothAdapter.getDefaultAdapter();
        // Get a set of currently paired devices
        Set<BluetoothDevice> pairedDevices = bluetooth.getBondedDevices();
        
        scanButton = (Button)findViewById(R.id.scanButton);
        scanButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
doDiscovery();
                v.setVisibility(View.GONE);
}
});
        newDevicesList = (ListView)findViewById(R.id.newDevices);
        newDevicesAdapter = new ArrayAdapter<String>(this, 
                        android.R.layout.simple_list_item_1,
                        newDevices);
        newDevicesList.setAdapter(newDevicesAdapter);
        newDevicesList.setOnItemClickListener(mNewDeviceClickListener);
        
        // Find and set up the ListView for paired devices
        pairedDevicesList = (ListView)findViewById(R.id.pairedDevices);
        pairedDevicesAdapter = new ArrayAdapter<String>(this, 
                android.R.layout.simple_list_item_1);
        pairedDevicesList.setAdapter(pairedDevicesAdapter);
        //当点击时,启动线程connect
        pairedDevicesList.setOnItemClickListener(mDeviceClickListener);
        
        // Register for broadcasts when a device is discovered
        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        this.registerReceiver(mReceiver, filter);

        // Register for broadcasts when discovery has finished
        filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        this.registerReceiver(mReceiver, filter);

现在ViewHolder是这么调用的:


 public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder viewHolder;
            // General ListView optimization code.
            if (view == null) {
                view = mInflator.inflate(R.layout.list_item_device, null);
                viewHolder = new ViewHolder();
                viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
                viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
                viewHolder.deviceUuid = (TextView) view.findViewById(R.id.device_uuid);
                view.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) view.getTag();
            }

            BluetoothDevice device = mLeDevices.get(i);
            final String deviceName = device.getName();
            if (deviceName != null && deviceName.length() > 0)
                viewHolder.deviceName.setText(deviceName);
            else
                viewHolder.deviceName.setText(R.string.unknown_device);
            viewHolder.deviceAddress.setText(device.getAddress());
            try{
            //Method getUuidsMethod = BluetoothAdapter.class.getDeclaredMethod("getUuids", null);

            ParcelUuid[] uuids = (ParcelUuid[]) device.getUuids();
            String uuidStr="";
            for (ParcelUuid uuid: uuids) {
             uuidStr = uuid.getUuid().toString()+"\n";
                Log.d("Log", "UUID: " + uuid.getUuid().toString());
            }
            viewHolder.deviceUuid.setText(uuidStr);
            }catch(Exception e){
             put(e.toString(),"mybleYYYError");
            }
            return view;
        }
static class ViewHolder {
        TextView deviceName;
        TextView deviceAddress;
        TextView deviceUuid;
    }


其实我就是想在蓝牙4.0能调用这个界面就可以了

demo里面的搜索蓝牙4.0的界面一般是这样的:

这样一条的,没有已经配对的设备,还有一个按钮的


android:蓝牙4.0的搜索、连接及数据传输(真实可用)——(一)

每周写一篇博客,愿共同促进。17年6月第4周 最近两周由于时间问题,博客一直没有更新。这周做了两个项目,一个是用自定义控件画了一个动画,另一个就是利用蓝牙4.0进行的一个智能设备的一个通信。对于蓝牙...
  • ningzhimeng
  • ningzhimeng
  • 2017年06月25日 16:05
  • 687

蓝牙4.0 BLE初探

转:http://blog.csdn.net/innost/article/details/9187199 Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2蓝牙介绍 蓝牙一...
  • luo_gw123
  • luo_gw123
  • 2014年10月30日 10:22
  • 1578

Androidble4.0蓝牙开发兼容2.0蓝牙应用(针对arduino蓝牙控制小车开发应用HC-08,06蓝牙模块的连接)

1.嗯有段时间没更新博客啦,给广大CSDN友上点干活 2.android蓝牙即智能穿戴设备火起来之后蓝牙的普及也是有点猛,今天我们博客的主题就是围绕arduino开发蓝牙控制小车写的测试demo,连接...
  • qq_31546677
  • qq_31546677
  • 2017年12月08日 17:27
  • 244

Android 蓝牙开发之搜索、配对、连接、通信大全

安卓平台提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。...
  • qq_25827845
  • qq_25827845
  • 2016年11月01日 17:23
  • 16035

Swift语言iOS8的蓝牙Bluetooth解析

http://www.itnose.net/detail/6253738.html 开发中央步骤:   1.添加CoreBluetooth.framework框架到你的工程 ...
  • mengzhengjie
  • mengzhengjie
  • 2016年03月10日 15:11
  • 1740

蓝牙4.0 BLE 模块问答

转自: http://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=432353 一、 蓝牙4.0模块基础理论问答 1、什么是蓝牙4.0,...
  • erinblog
  • erinblog
  • 2015年06月25日 15:17
  • 7804

android 蓝牙4.0 ble 低功耗蓝牙

一:概述这段时间做了蓝牙4.0的项目,就是一个蓝牙设备控制手机进行拍照。并且有很多按键,不同的按键对应到手机上有不同的功能,并且组合起来也有不同的功能。 低功耗蓝牙有中央设备后周边设备的概念手机就是一...
  • u010339039
  • u010339039
  • 2015年11月18日 16:46
  • 2565

蓝牙4.0BLE协议栈

蓝牙4.0BLE协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并提供一些应用层API,供用户调用。...
  • zzfenglin
  • zzfenglin
  • 2016年06月20日 15:34
  • 8225

Android BLE蓝牙4.0开发详解

蓝牙我们应该很早就听过,最常见的就是原来我们偶尔通过手机上的蓝牙来传输文件。貌似在蓝牙4.0系列出现之前,蓝牙我们使用的并不多,蓝牙的产品貌似也不是很多。2010年6月30号蓝牙技术联盟推出了蓝牙4....
  • chenliqiang12345678
  • chenliqiang12345678
  • 2016年01月12日 15:16
  • 32518

蓝牙4.0和3.0区别

简介   蓝牙4.0为蓝牙3.0的升级标准。   蓝牙4.0最重要的特性是省电科技,极低的运行和待机功耗可以使一粒纽扣电池连续工作数年之久。此外,低成本和跨厂商互操作性,3毫秒低延迟、100米以上...
  • liuhaomatou
  • liuhaomatou
  • 2014年09月10日 16:48
  • 9554
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么在搜索蓝牙4.0 设备中调用蓝牙2.0的搜索界面?(和UI关系更大,和蓝牙4.0关系不大)
举报原因:
原因补充:

(最多只允许输入30个字)