Android编程之蓝牙测试实例

本文实例讲述了Android编程之蓝牙测试。分享给大家供大家参考。具体分析如下:

一、软件平台:

win7 + eclipse + sdk

二、设计思路:

配合倒计时定时器实现蓝牙打开,可见,扫描三个功能

三、源代码:

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:orientation="vertical">
 <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:text="TextView" android:layout_height="wrap_content"></TextView>
 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1">
  <Button android:id="@+id/button1" android:text="OFF" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
 </LinearLayout>
 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2">
  <Button android:id="@+id/button2" android:text="开启可见 " android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设备不可见 "></TextView>
 </LinearLayout>
 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout3">
  <Button android:id="@+id/button3" android:text="扫描:OFF" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止扫描 "></TextView>
 </LinearLayout>
 <ListView android:id="@+id/listView1" android:layout_height="wrap_content" android:layout_width="match_parent"></ListView>
</LinearLayout>

test_bluetooth.java:

package com.test_bluetooth;
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.os.CountDownTimer;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class test_bluetooth extends Activity implements View.OnClickListener
{
 private static final int REQUEST_ENABLE_BT = 2;
 TextView txt;
 TextView txt_see;
 TextView txt_scan;
 BluetoothAdapter mBluetoothAdapter;
 ArrayAdapter<String> mArrayAdapter;
 Button btn_switch;
 Button btn_see;
 Button btn_scan;
 ListView list;
 CountDownTimer see_timer;
 CountDownTimer scan_timer;
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  txt = (TextView)findViewById(R.id.textView1);
  txt_see = (TextView)findViewById(R.id.textView2);
  txt_scan = (TextView)findViewById(R.id.textView3);
  //绑定XML中的ListView,作为Item的容器
  list = (ListView) findViewById(R.id.listView1);
  //获取蓝牙适配器
  mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  mArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
  if (mBluetoothAdapter == null)
  {
   // Device does not support Bluetooth
   txt.setText("fail");
   //退出程序
   test_bluetooth.this.finish();
  }
  btn_switch = (Button)findViewById(R.id.button1);
  btn_switch.setOnClickListener(this);
  btn_see = (Button)findViewById(R.id.button2);
  btn_see.setOnClickListener(this);
  btn_see.setEnabled(false);
  btn_scan = (Button)findViewById(R.id.button3);
  btn_scan.setOnClickListener(this);
  btn_scan.setText("扫描:OFF");
  btn_scan.setEnabled(false);
  //判断蓝牙是否已经被打开
  if (mBluetoothAdapter.isEnabled())
  {
   //打开
   btn_switch.setText("ON");
   btn_see.setEnabled(true);
   btn_scan.setEnabled(true);
  }
  see_timer = new CountDownTimer(120000,1000)
  {
   @Override
   public void onTick( long millisUntilFinished)
   {
    txt_see.setText( "剩余可见时间" + millisUntilFinished / 1000 + "秒");
   }
   @Override
   public void onFinish()
   {
    //判断蓝牙是否已经被打开
    if (mBluetoothAdapter.isEnabled())
    {
     btn_see.setEnabled(true);
     txt_see.setText( "设备不可见");
    }
   }
  };
  scan_timer = new CountDownTimer(12000,1000)
  {
   @Override
   public void onTick( long millisUntilFinished)
   {
    txt_scan.setText( "剩余扫描时间" + millisUntilFinished / 1000 + "秒");
   }
   @Override
   public void onFinish()
   {
    //判断蓝牙是否已经被打开
    if (mBluetoothAdapter.isEnabled())
    {
     btn_scan.setEnabled(true);
     //关闭扫描
     mBluetoothAdapter.cancelDiscovery();
     btn_scan.setText("扫描:OFF");
     txt_scan.setText( "停止扫描");
    }
   }
  };
 }
 @Override
 protected void onDestroy() {
  super.onDestroy();
  android.os.Process.killProcess(android.os.Process.myPid());
 }
 @Override
 public void onClick(View v)
 {
  // TODO Auto-generated method stub
  switch (v.getId())
  {
  case R.id.button1:
   {
    String str = btn_switch.getText().toString();
    if (str == "OFF")
    {
     if (!mBluetoothAdapter.isEnabled())
     {
      //打开蓝牙
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
      txt.setText("s1");
      btn_see.setEnabled(true);
      btn_scan.setText("扫描:OFF");
      btn_scan.setEnabled(true);
     }
    }
    else
    {
     //关闭蓝牙
     mBluetoothAdapter.disable();
     btn_switch.setText("OFF");
     mArrayAdapter.clear();
     list.setAdapter(mArrayAdapter);
     btn_see.setEnabled(false);
     btn_scan.setEnabled(false);
    }
    break;
   }
  case R.id.button2:
  {
   //开启可见
   Intent enableBtIntent_See = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
   startActivityForResult(enableBtIntent_See, 3);
   txt.setText("s1");
   btn_see.setEnabled(false);
   see_timer.start();
   break;
  }
  case R.id.button3:
  {
   String str = btn_scan.getText().toString();
   if (str == "扫描:OFF")
   {
    txt.setText("s5");
    if (mBluetoothAdapter.isEnabled())
    {
     //开始扫描
     mBluetoothAdapter.startDiscovery();
     txt.setText("s6");
     btn_scan.setText("扫描:ON");
     // Create a BroadcastReceiver for ACTION_FOUND
     final BroadcastReceiver mReceiver = new BroadcastReceiver()
     {
      @Override
      public void onReceive(Context context, Intent intent)
      {
       // TODO Auto-generated method stub
       String action = intent.getAction();
       // When discovery finds a device
       mArrayAdapter.clear();
       if (BluetoothDevice.ACTION_FOUND.equals(action))
       {
        // Get the BluetoothDevice object from the Intent
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        // Add the name and address to an array adapter to show in a ListView
        mArrayAdapter.add(device.getName() + ":" + device.getAddress());
       }
       list.setAdapter(mArrayAdapter);
      }
     };
     // Register the BroadcastReceiver
     IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
     registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
     scan_timer.start();
    }
   }
   else
   {
    //关闭扫描
    mBluetoothAdapter.cancelDiscovery();
    btn_scan.setText("扫描:OFF");
    scan_timer.cancel();
    txt_scan.setText( "停止扫描");
   }
   break;
  }
  default:
   break;
  }
 }
 public void onActivityResult(int requestCode, int resultCode, Intent data)
 {
  switch (requestCode)
  {
  case REQUEST_ENABLE_BT:
   // When the request to enable Bluetooth returns
   if (resultCode == Activity.RESULT_OK)
   {
    // Bluetooth is now enabled, so set up a chat session
    btn_switch.setText("ON");
    txt.setText("s4");
    //获取蓝牙列表
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    mArrayAdapter.clear();
    // If there are paired devices
    if (pairedDevices.size() > 0)
    {
     //txt.setText("s3");
     // Loop through paired devices
     for (BluetoothDevice device : pairedDevices)
     {
      // Add the name and address to an array adapter to show in a ListView
      mArrayAdapter.add(device.getName() + ":" + device.getAddress());
     }
     list.setAdapter(mArrayAdapter);
     }
   } else
   {
    finish();
   }
  }
 }
}

效果图如下:

希望本文所述对大家的Android程序设计有所帮助。

(0)

相关推荐

  • 微信小程序--Ble蓝牙

    有一段时间没有.没有写关于小程序的文章了.3月28日,微信的api又一次新的更新.期待已久的蓝牙api更新.就开始撸一番. 源码地址 1.简述 蓝牙适配器接口是基础库版本 1.1.0 开始支持. iOS 微信客户端 6.5.6 版本开始支持,Android 客户端暂不支持 蓝牙总共增加了18个api接口. 2.Api分类 搜索类 连接类 通信类 3.API的具体使用 详细见官网: https://mp.weixin.qq.com/debug/wxadoc/dev/api/bluetooth.ht

  • Android手机通过蓝牙连接佳博打印机的实例代码

    所使用的打印机为佳博打印机,支持蓝牙.wifi.usb我所使用的是通过蓝牙来连接. 在网上找到一个佳博官方针对安卓开发的App源码,但是各种的跳转,没有看太懂,所以又去问度娘,找到了一个不错的文章 Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发. 1. 首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 // 管理蓝牙设备的权限 <uses-permissionandroid:name="

  • Windows系统中使用C#编写蓝牙通信程序的简单实例

    现在很多电脑提供了蓝牙支持,很多笔记本网卡也集成了蓝牙功能,也可以采用USB蓝牙方便的连接手机等蓝牙设备进行通信. 操作蓝牙要使用类库InTheHand.Net.Personal 首先在项目中引用该类库: static void Main(string[] args) { BluetoothRadio bluetoothRadio = BluetoothRadio.PrimaryRadio; if (bluetoothRadio == null) { Console.WriteLine("没有找

  • 客户端实现蓝牙接收(C#)知识总结

    在实现蓝牙接收时,网上的资料很多,使用起来也很简单,但是我觉得还是有必要把这些知识总结下来.蓝牙开发需要用到一个第三方的库InTheHand.Net.Personal.dll,其中关键的两个类是 BluetoothClient 和 BluetoothListener,首先开启一个子线程来不断的接收数据,使用很简单,直接上代码: 复制代码 代码如下: using InTheHand.Net.Sockets; using System.Threading; public MainWindow() {

  • 分享Android 蓝牙4.0(ble)开发的解决方案

    最近,随着智能穿戴式设备.智能医疗以及智能家居的普及,蓝牙开发在移动开中显得非常的重要.由于公司需要,研究了一下,蓝牙4.0在Android中的应用. 以下是我的一些总结. 1.先介绍一下关于蓝牙4.0中的一些名词吧:    (1).GATT(Gneric Attibute  Profile) 通过ble连接,读写属性类小数据Profile通用的规范.现在所有的ble应用Profile  都是基于GATT (2).ATT(Attribute Protocal) GATT是基于ATT Potoca

  • Android Bluetooth蓝牙技术使用流程详解

    在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情. 一:蓝牙设备之间的通信主要包括了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输 二:具体编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,如果返回为空,则无法继续执行了.例如: BluetoothAdapter mBluetoothAdapter = Blueto

  • Android系统中的蓝牙连接程序编写实例教程

    Bluetooth结构 1.JAVA层 frameworks/base/core/java/android/bluetooth/ 包含了bluetooth的JAVA类. 2.JNI层 frameworks/base/core/jni/android_bluetooth_开头的文件 定义了bluez通过JNI到上层的接口. frameworks/base/core/jni/android_server_bluetoothservice.cpp 调用硬件适配层的接口system/bluetooth/

  • Android单片机与蓝牙模块通信实例代码

    啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通过参考网上资料,问题顺利搞定,下面小编把具体实现思路分享给大家,供大家参考. 1.Android蓝牙编程 蓝牙3.0及以下版本编程需要使用UUID,UUID是通用唯一识别码(Universally Unique Identifier),这是一个软件构建的标准,也是被开源基金会组织应用在分布式计算环境领域的一部分.在蓝牙3.0及下一版本中,UUID被用于唯一标识一个服务,比如文件传输服务,串口服务.打印机服务等,如下: #蓝牙串

  • Android蓝牙开发深入解析

    1. 使用蓝牙的响应权限 复制代码 代码如下: <uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 2. 配置本机蓝牙模块 在这里首先要了解对蓝牙操作一个核心类BluetoothAdapter 复制代码 代码如下: Bluetoot

  • android实现蓝牙文件发送的实例代码,支持多种机型

    最近项目上需要实现蓝牙传输apk的一个功能,能够搜索周围的蓝牙手机并分享文件.从需求上讲android手机自带的蓝牙传输模块就可以满足需要了,实现也很简单.不过让人头疼的是,虽然说一般的主流机型都配置有蓝牙模块,但是android机型碎片化太严重,不同android版本手机蓝牙功能也不一样.4.0.3以下版本和以上版本使用的蓝牙包是不同的,分别是"com.android.bluetooth"和"com.mediatek.bluetooth".还有一些厂商对蓝牙模块进

随机推荐