2 f823154 f823154 于 2016.04.10 17:01 提问

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

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

3个回答

qq_33232071
qq_33232071   2016.04.11 08:25

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

CSDNXIAOD
CSDNXIAOD   2016.04.10 17:12

android 与 蓝牙模块 hc06通信app 开发要点
安卓手机通过蓝牙与单片机通信
Android 通信--蓝牙
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

hanxinxin_com
hanxinxin_com   2016.04.18 10:06
 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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
STC89C52单片机通过HC-06蓝牙模块与Android手机通信
STC89C52单片机通过HC-06蓝牙模块与Android手机通信
android设备终端与蓝牙模块(HC-06)的通讯编程思路
private BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter(); 蓝牙模块(HC-06) 在这个项目中,手机端作为客户端,去连接到蓝牙模块上。而接受蓝牙模块发过来的信息的时候,是没有必要再创建服务器端的,我们只要一个不断监听对方消息的循环就行。   在socket.connect();
STC89C52单片机与HC-06模块下位机测试程序
STC89C52单片机与HC-06模块下位机测试程序,带有注释,不懂的可以到我的博客留言 http://blog.csdn.net/itas109
android 与 蓝牙模块 hc06通信app 开发要点
最近做学校的硬件综合训练,实验箱上有一个带温湿度传感器的hc06蓝牙模块,于是准备用蓝牙与android端app通信,实时更新温湿度信息。本次开发由我全部负责移动端代码,还是压力比较大的。 因为蓝牙模块部分单片机程序肯定有特殊性,大家遇到的单片机代码或者自己设计的肯定跟我这次不是一样的,所以具体数据解算代码就不放出来了。 在网上很难搜到相关app的实现,于是我准备把几个主要的难点写下来,与大家
Android手机蓝牙与单片机蓝牙串通信开发经验总结
最近辛辛苦苦的终于把落下了七八个月的Android蓝牙开发搞完了,其中的痛苦不堪回首啊。感谢那些帮了大忙的老师和同学们!辛苦归辛苦,收获总是有的,因而在此总结一下关键所在,以勉励自己!        网上说的好多的Android蓝牙开发多是基于同类设备之间的通讯,大多需要建立一个服务端和客户端,客户端连接服务器需要服务端的UUID号。而单片机上的蓝牙模块与手机蓝牙连接有点不同,它的UUID号需要
STC89C51单片机与Hc-06蓝牙模块keil程序
一个简单的用蓝牙串口控制LED灯的亮灭,附加手机蓝牙串口助手。注意:这里单片机与蓝牙模块接线时,TXD→TX,RXD→RX。
实现蓝牙HC-05、06与单片机的连接及与手机通信(转)
蓝牙(Bluetooth):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙技术最初由电信巨头爱立信公司于1994年创制,当时是作为RS232数据线的替代方案, 蓝牙可连接多个设备,在与单片机连接使用也得到了广泛应用。
树莓派3B板载蓝牙与HC05蓝牙模块通讯(C++编程实现)
    在项目中需要使用树莓派的板载蓝牙与HC05蓝牙模块进行通讯,以下是实现步骤.一、树莓派与HC05蓝牙模块进行连接在树莓派的图形界面单机右上角蓝牙图标》Add Device...
HC-06蓝牙模块设置与使用
由于项目需要用到Android手机控制单片机,所以用到了HC-06蓝牙模块(一下简称蓝牙模块),找了一些网上的参考资料发现好像不太全,折腾了半天才弄好,因此出此文记录一下,也希望能帮助到有需要的朋友. 本文主要介绍蓝牙模块与单片机(本文以Arduino为例)以及PC的连接通信 先上连接示意图 为了配置蓝牙模块,我们先让单片机与蓝牙模块正常通信,这里需要在代码里控制数据传输与显示
Android通过蓝牙HC06与Arduino通信实例
本文基于《Android创建Service后台常驻服务并使用Broadcast通信》扩展蓝牙通信的功能,使用手机作为Client,HC06芯片作Service进行通信。 1)手动打开手机的蓝牙开关,打开app,自动连接HC06 2)按键1、2、3、4,通过HC06向下位机发送命令1、2、3、4 3)下位机反馈信息通过Toast回显到屏幕