`

Android开发教程:蓝牙测试

 
阅读更多

软件平台:Windows 7 + 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();     
            }     
        }     
    }     
}  

 效果图:


 

  • 大小: 10.9 KB
分享到:
评论

相关推荐

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    [14本经典Android开发教程]-3-Android SDK 中文开发文档 什么是 Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android 平台上...

    老罗android开发视频教程全集百度网盘下载

    Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何...【第一版第十五章】老罗Android开发视频--百度地图实战开发(10集)

    新版Android开发教程.rar

    Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...

    android版本lightblue,超级好用蓝牙调试工具

    在进行蓝牙设备开发、调试或测试时,LightBlue能够提供便利,帮助开发者快速理解和控制蓝牙低功耗(Bluetooth Low Energy,简称BLE)设备。 首先,我们要了解蓝牙技术的基本概念。蓝牙是一种短距离无线通信技术,...

    Android蓝牙,配对,搜索,连接,通信,断开的Demo

    在Android平台上,蓝牙技术是设备间无线通信的重要组成部分,尤其在移动应用开发中扮演着不可或缺的角色。本项目"Android蓝牙,配对,搜索,连接,通信,断开的Demo"是一个使用Kotlin编写的Android应用示例,它涵盖...

    Android开发教程2

    本教程“Android开发教程2”将深入探讨Android应用程序的创建、调试以及发布等关键环节,帮助开发者提升技术水平,从而在这个日益竞争激烈的市场中脱颖而出。 首先,Android开发的基础在于Java或Kotlin编程语言。...

    Android蓝牙模块移植 BT驱动

    在Android系统中,蓝牙(Bluetooth)模块的移植是一项重要的工作,尤其对于开发和定制设备固件的工程师来说。本文将详细讲解如何移植REALTAK RTL8723BU蓝牙模块到Android系统,以及在此过程中涉及的关键知识点。 ...

    Android 开发教程全集(共72讲)

    以上内容仅为Android开发教程全集中的部分知识点概述。学习Android开发不仅需要掌握这些基础知识,还需要不断实践和探索新技术,才能成为一名优秀的Android开发者。希望本教程能够帮助初学者快速入门并深入学习...

    Android开发案例驱动教程 配套代码

    《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...

    Android开发教程&笔记

    以上只是Android开发教程中可能涵盖的部分内容,实际的笔记可能会涉及更多细节,如动画、通知、蓝牙连接、GPS定位、多媒体处理、推送通知等。深入学习和实践这些知识点,将使你具备开发高质量Android应用的能力。

    android 蓝牙4.0 demo

    这个"android 蓝牙4.0 demo"是为初学者准备的实践教程,帮助他们理解和掌握如何在Android应用中实现蓝牙4.0的功能。 首先,我们来了解一下Android系统中的蓝牙API。自Android 4.3(API级别18)起,Android开始支持...

    android开发教程和笔记

    Android开发教程和笔记是针对想要踏入Android开发领域的初学者精心准备的学习资源。这份教程涵盖了从基础知识到高级概念的全面内容,旨在帮助新手快速理解和掌握Android应用程序开发的核心技能。 首先,让我们了解...

    Android开发教程详细版

    在Android开发领域,掌握必要的知识和技能是至关重要的。这篇教程详细版涵盖了Android...通过这个详尽的Android开发教程,开发者将能够从零开始,逐步构建起完整的Android开发技能树,为今后的项目开发奠定坚实基础。

    Android开发教程笔记完全版.zip

    以上只是Android开发教程笔记可能涵盖的部分内容,具体的学习过程中还会涉及更多高级主题,如动画、通知、推送服务、多媒体处理、蓝牙通信、安全性、国际化等。这份完全版的教程应该会详细讲解这些知识点,并提供...

    Android开发教程2,英文版

    【Android开发教程2,英文版】是一本专为有志于深入学习Android应用开发的开发者编写的指南。这本书由Reto Meier撰写,他是一位在移动开发领域有着丰富经验的专家,因此书中内容权威且实用。该教程面向的读者群体...

    Android零基础开发教程笔记.doc

    《Android开发教程笔记完全版》是一份面向初学者的详细指南,旨在教授基本的Android编程技能,并逐步引导读者掌握高级的Android应用程序开发概念。这份文档首先介绍了开放手机联盟(Open Handset Alliance,简称OHA...

    安卓Android BLE低功耗蓝牙接受数据详解 只需100行代码轻松搞定

    在安卓(Android)平台...请确保你的应用遵循Android的蓝牙权限要求,并在不同的Android版本上进行充分测试,以确保兼容性。此外,理解BLE协议栈的细节,如数据包格式、服务质量等,也有助于优化数据传输效率和稳定性。

    Android Studio开发第二版源码,教程

    在Android应用开发领域,...总之,这份“Android Studio开发第二版源码”教程是Android初学者和进阶者的宝贵资源,通过学习和实践,你可以全面提升Android开发能力,为成为一名优秀的Android开发者打下坚实基础。

    Android应用源码安卓蓝牙游戏手柄驱动项目

    【Android应用源码安卓蓝牙游戏手柄驱动项目】是一个针对Android平台的开发项目,旨在实现对蓝牙游戏手柄的驱动支持。这个项目的核心是通过源码解析和编程,使Android设备能够识别并适配各种蓝牙游戏手柄,提供顺畅...

Global site tag (gtag.js) - Google Analytics