Android蓝牙开发,与HC-06单片机通信,

单片机发,android端收,android端代码怎么搜索蓝牙设备并连接成功呢?

2个回答

最简单的方法:
先到android store上下载一个app做测试,比如‘spp蓝牙‘这个APP
上面有搜索,连接的步骤
你的源码来仿照它的写

 package kankan.idea.bluetoolswitch;


import java.util.ArrayList;
import java.util.List;

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.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;

public class Bluetoolswitch extends Activity implements OnClickListener
{

    ImageButton kaiguan1 ;
    ImageButton kaiguan2 ;
    Button lianjielanya;
    int kaiguan1flag = 0;
    int kaiguan2flag = 0;
    BluetoothAdapter btadapter;

    List<String> devicesfound = new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bluetoolswitch);
        kaiguan1 = (ImageButton)findViewById(R.id.switch11);
        kaiguan2 = (ImageButton)findViewById(R.id.switch22);
        lianjielanya = (Button)findViewById(R.id.connectbluetools);
        kaiguan1.setOnClickListener(Bluetoolswitch.this);
        kaiguan2.setOnClickListener(Bluetoolswitch.this);
        lianjielanya.setOnClickListener(Bluetoolswitch.this);


        // 注册Receiver来获取蓝牙设备相关的结果
        IntentFilter intent = new IntentFilter();
        intent.addAction(BluetoothDevice.ACTION_FOUND);// 用BroadcastReceiver来取得搜索结果
        intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
        intent.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
        intent.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        registerReceiver(searchdevices, intent);

    }

    boolean openbluetools()
    {
        btadapter = BluetoothAdapter.getDefaultAdapter();// 初始化本机蓝牙功能
        if(null == btadapter)
        {
            return false;//没有蓝牙设备
        }

        if((BluetoothAdapter.STATE_OFF == btadapter.getState()) || 
           (BluetoothAdapter.STATE_TURNING_OFF == btadapter.getState()) ||
           (BluetoothAdapter.STATE_TURNING_ON == btadapter.getState()))
        {
            if(btadapter.enable())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return true;
        }
    }


    BroadcastReceiver searchdevices = new BroadcastReceiver() 
    {
        public void onReceive(Context context, Intent intent) 
        {
            String action = intent.getAction();
            Bundle b = intent.getExtras();
            Object[] lstName = b.keySet().toArray();
            // 显示所有收到的消息及其细节
            for (int i = 0; i < lstName.length; i++) 
            {
                String keyName = lstName[i].toString();
                Log.v("test2",keyName +":"+ String.valueOf(b.get(keyName)));
            }
            //搜索设备时,取得设备的MAC地址
            if (BluetoothDevice.ACTION_FOUND.equals(action)) 
            {
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                String str= device.getName() + "|" + device.getAddress();
                if (-1 == devicesfound.indexOf(str))// 防止重复添加
                    devicesfound.add(str); // 获取设备名称和mac地址
            }
        }
    };



    @Override
    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.connectbluetools:
            {
                if(true == openbluetools())
                {
                    Log.v("test","打开设备成功"+"本机蓝牙地址:" + btadapter.getAddress());

                }
                else
                {
                    Log.v("test","打开设备失败");
                }
            }break;
            case R.id.switch11:
            {
                if(0 == kaiguan1flag)
                {
                    Log.v("test","一路开");
                    kaiguan1flag = 1;
                    kaiguan1.setImageDrawable(getResources().getDrawable(R.drawable.switchon1));    
                }
                else
                {
                    Log.v("test","一路关");
                    System.out.print("asdfasdfsafas");
                    kaiguan1flag = 0;
                    kaiguan1.setImageDrawable(getResources().getDrawable(R.drawable.switchoff1));   
                }
            }break;
            case R.id.switch22:
            {
                if(0 == kaiguan2flag)
                {
                    Log.v("test","二路开");
                    kaiguan2flag = 1;
                    kaiguan2.setImageDrawable(getResources().getDrawable(R.drawable.switchon1));    
                }
                else
                {
                    Log.v("test","二路关");
                    kaiguan2flag = 0;
                    kaiguan2.setImageDrawable(getResources().getDrawable(R.drawable.switchoff1));   
                }

            }break;
            default:
            {

            }break;
        }
    }



}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
单片机通过HC-06与手机通信
最近在做一个单片机项目,需要用到手机通过HC-06蓝牙模块与单片机通信,于是写了下面一段代码。但是却遇到了一个问题就是把这个程序烧进开发板之后,当手机第一次发送ab时相应的led亮,但手机第二次发送ab时,led灯没有反应。请大家帮忙解答!rn#includern#includern#define uchar unsigned charrn#define uint unsigned intrnsbit lamp = P1^0;rnsbit fan = P1^1;rnchar rec[2];rnuchar i=0;rnuchar signal;rnvoid delay(uint x)rnrn uchar i;rn uint j;rn for(j=0;j
Android蓝牙开发SPP协议通信
最近项目中使用到蓝牙SPP协议通信,然后在网上看了很多资料,进行学习使用,为了加深印象,做个简单的整理。 1、使用蓝牙权限     2、蓝牙核心类BluetoothAdapter      代表本地的蓝牙适配器设备。BluetoothAdapter类让用户能执行基本的蓝牙任务。例如: 初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个Bluetoot
android 传统蓝牙开发(三):蓝牙设备连接及通信
蓝牙设备连接及通信 1.设备连接,服务器端开启线程一直等待连接,客户端点击某个目标设备,关闭服务器线程监听,并开启线程,发出连接请求。 注意:客户端连接前,一定cancelDiscovery() // 蓝牙已开启 if (bluetoothAdapter.isEnabled()) { showBondDevice(); // 默认开启服务线程监听 if (serverThre...
android蓝牙开发入门到精通4------通信标准
1,工具类package com.win16.bluetoothclass5;import java.util.List;import android.annotation.TargetApi; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.blue
android蓝牙开发————实现服务端客户端通信
蓝牙开发——客户端服务端通信 (本文demo下载地址:http://download.csdn.net/detail/gywuhengy/9816902) 一.新建一个工程作为服务端,里面大致要实现的功能有这几个: (1)权限 android.permission.BLUETOOTH (2)蓝牙适配器 BluetoothAdapter (3)输入输出流 (4)客
Android 蓝牙开发之搜索、配对、连接、通信大全
关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~ 蓝牙( Bluetooth®):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据 交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙设备最多可以同时和7个其它蓝牙设备建立连接,进 行通信,当然并不是每一个蓝牙都可以达到最大值。下面,我们从蓝牙的基本概念...
Android API开发之蓝牙开发之浅谈Android蓝牙开发
随着可穿戴设备的流行,蓝牙是必不可少的一门技术了。   1.简介   1.1.蓝牙有传统蓝牙(3.0以下)和低功耗蓝牙(ble,又称蓝牙4.0)之分。 1.2.android手机必须系统版本4.3及以上才支持BLE API。低功耗蓝牙较传统蓝牙, 传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点。 1.3.传统蓝牙与低功耗蓝牙通信方式也有所不同,传统的一般通过socke...
Android wifi与单片机通信
最近在做物联网方面的东西,需要简单实现android上位机通过wifi连接单片机并采集数据显示,但一直找不到这方面的资料,有没有大神来点儿干活让我学习一下,一起交流啊[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/54.gif][/img]
android蓝牙开发
在进行android蓝牙开发之前必选要对其相关的基础知识有详细的了解,这里主要介绍一些基础知识点和开发流程. 一、整体基础知识框架介绍:       android 提供管理蓝牙功能的类,例如扫描设备、连接设备和管理设备之间的数据传输。 蓝牙接口支持两个“经典的蓝牙”和蓝牙低能量。      蓝牙应用程序的应用程序: 扫描其他蓝牙设备(包括BLE设备)。查询本地蓝牙适配
Android 蓝牙开发
全面详尽的android蓝牙开发流程
Android API开发之蓝牙开发之Android蓝牙开发基础知识
本章节讲述Android蓝牙 开发的基础知识   1.权限   在android 清单文件中加入相应的权限   允许程序连接到已配对的蓝牙设备 &amp;lt;uses-permissionandroid:name=&quot;Android.permission.BLUETOOTH&quot; /&amp;gt;     允许程序发现和配对蓝牙设备 &amp;lt;uses-permissionandroid:name=...
Android蓝牙开发
Android蓝牙开发 最近做蓝牙小车,需要Android端来控制小车的运动,以此文记录开发过程。使用HC-06无线蓝牙串口透传模块。对于其他的蓝牙设备本文同样适用。 蓝牙开发的流程: 获取本地蓝牙适配器    ——>     打开蓝牙    ——>    搜索设备  ——>   连接设备  ——>   发送信息 首先为了避免以往我们先写入蓝牙权限:
android 蓝牙开发
转载自:EOE开发门户 作者:imtijc 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少 Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发,刚巧这段时间公司有蓝牙开发的需求,我看了很多国内、国外的资料,又研究了一下J2ME的蓝牙开发(为了找找思路),虽然我...
单片机控制蓝牙开发
单片机控制蓝牙
Android的蓝牙开发
Android的蓝牙开发,适合新手学习,可实现的功能是连接一个硬件设备
STC89C51单片机与Hc-06蓝牙模块keil程序
一个简单的用蓝牙串口控制LED灯的亮灭,附加手机蓝牙串口助手。注意:这里单片机与蓝牙模块接线时,TXD→TX,RXD→RX。
STC89C52单片机与HC-06模块下位机测试程序
STC89C52单片机与HC-06模块下位机测试程序,带有注释,不懂的可以到我的博客留言 http://blog.csdn.net/itas109
Android程序与单片机通信的坑
前段时间一直在加班,单身狗的周末也搭进去了…只是为了解决一个莫名其妙的bug,不过最终bug还是拜倒在了朕的强大气场下,哈哈哈,现在就在这里好好吐槽下软件遇上硬件的坑; 先简单说说情景:软件需要给硬件设备的单片机发送一串byte数组,用于打开软件与硬件设备之间的通讯通道,软件命令发送完,接着就打开一个线程用于接收从硬件设备回传的数据,然后开始做其他的一些操作。但是现在出现的问题是命令发送了,会出
Android和后台服务器及单片机之间通信
大家好!rn现有一个问题想向大家请教一下:rn我现在有一个项目,涉及到手机、后台服务器及单片机之间通信的问题,大致过程如下:rn1、单片机通过Wi-Fi模块连网,当发生紧急情况时会通知后台服务器,每个单片机都有唯一的ID;rn2、后台服务器根据单片机发送过来的ID,可以识别到是哪一个设备发来的,并把相应的警报信息发送给手机用户;rn3、手机登录用户使用电子邮箱地址作为唯一识别,需要时也可以和后台服务器直接通信。rnrn我现在的问题是:这几者之间使用什么样的通讯协议比较好,是直接使用TCP/IP还是类似WebSocket之类的。rn我的想法是:使用TCP/IP比较直接,当单片机发送警报给后台服务器时,后台服务器会自动记录单片机的IP、端口和ID之类的信息,只要单片机不断电,就会一直保持这个信息,即使断电,重新上电后,根据ID,服务器也可以更新保存在服务器数据库里的这个单片机的相关信息,就像类似于QQ聊天软件,当有一个用户上线时会自动保存或更新其相关信息。rn另外,手机和后台服务器之间是否也可以直接使用TCP/IP呢?我想原理应该类似的。rnWebSocket我目前不熟悉,有没有朋友做过这方面开发的,比较下什么方案比较适合我目前项目的情况,谢谢了!
HC-06蓝牙芯片
文档为HC-06的蓝牙芯片的详细资料,包括原理图,AT指令等等。
Android蓝牙开发入门
在Android开发中不免会涉及到蓝牙的使用,尤其是在物联网发展迅速的现在,好多设备都是通过蓝牙来连接的,今天我们就简单的了解一下Android开发蓝牙,这里只是对蓝牙简单的做一个入门的解释,后面会继续对蓝牙的各个功能深入去讲解。         首先,在Android手机上开发蓝牙操作,需要用到android.bluetooth包,其中BluetoothAdapter是蓝牙开发中的核心类,代表
Android蓝牙开发介绍
蓝牙(BlueTooth)是一种无线技术标准,是当今移动终端最流行的三种数据传输方案之一,其余两种是WiFi和NFC(由于红外传输只能是直线传输,故更多地用于遥控器等设备,不适合数据传输)。蓝牙的传输特点是传输距离短(≤10m),速度适中,为24Mbps(比WiFi(802.11ac 1.3Gbps)慢,比NFC(≤400Kbit/s)快),功耗低(最新4.1版本)。 本文将介绍在Android移动设备上蓝牙技。
Android蓝牙开发简介
Android蓝牙系统蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术,可以在众多设备之间进行无线信息交换。Android系统中的蓝牙模块Android包含了对蓝牙网络协议栈的支持,使蓝牙设备能够无线连接其他蓝牙设备以便交换数据。通过使用蓝牙API,一个Android应用程序能够实现如下功能: - 扫描其他蓝牙设备 - 查询本地蓝牙适配器用于配对蓝牙设备 - 建立RFCOMM信道 -
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池