软件平台: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(); } } } }
效果图:
相关推荐
[14本经典Android开发教程]-3-Android SDK 中文开发文档 什么是 Android? Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。Beta版的 Android SDK 提供了在Android 平台上...
Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件,而且不存在任何...【第一版第十五章】老罗Android开发视频--百度地图实战开发(10集)
Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...
在进行蓝牙设备开发、调试或测试时,LightBlue能够提供便利,帮助开发者快速理解和控制蓝牙低功耗(Bluetooth Low Energy,简称BLE)设备。 首先,我们要了解蓝牙技术的基本概念。蓝牙是一种短距离无线通信技术,...
在Android平台上,蓝牙技术是设备间无线通信的重要组成部分,尤其在移动应用开发中扮演着不可或缺的角色。本项目"Android蓝牙,配对,搜索,连接,通信,断开的Demo"是一个使用Kotlin编写的Android应用示例,它涵盖...
本教程“Android开发教程2”将深入探讨Android应用程序的创建、调试以及发布等关键环节,帮助开发者提升技术水平,从而在这个日益竞争激烈的市场中脱颖而出。 首先,Android开发的基础在于Java或Kotlin编程语言。...
在Android系统中,蓝牙(Bluetooth)模块的移植是一项重要的工作,尤其对于开发和定制设备固件的工程师来说。本文将详细讲解如何移植REALTAK RTL8723BU蓝牙模块到Android系统,以及在此过程中涉及的关键知识点。 ...
以上内容仅为Android开发教程全集中的部分知识点概述。学习Android开发不仅需要掌握这些基础知识,还需要不断实践和探索新技术,才能成为一名优秀的Android开发者。希望本教程能够帮助初学者快速入门并深入学习...
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
以上只是Android开发教程中可能涵盖的部分内容,实际的笔记可能会涉及更多细节,如动画、通知、蓝牙连接、GPS定位、多媒体处理、推送通知等。深入学习和实践这些知识点,将使你具备开发高质量Android应用的能力。
这个"android 蓝牙4.0 demo"是为初学者准备的实践教程,帮助他们理解和掌握如何在Android应用中实现蓝牙4.0的功能。 首先,我们来了解一下Android系统中的蓝牙API。自Android 4.3(API级别18)起,Android开始支持...
Android开发教程和笔记是针对想要踏入Android开发领域的初学者精心准备的学习资源。这份教程涵盖了从基础知识到高级概念的全面内容,旨在帮助新手快速理解和掌握Android应用程序开发的核心技能。 首先,让我们了解...
在Android开发领域,掌握必要的知识和技能是至关重要的。这篇教程详细版涵盖了Android...通过这个详尽的Android开发教程,开发者将能够从零开始,逐步构建起完整的Android开发技能树,为今后的项目开发奠定坚实基础。
以上只是Android开发教程笔记可能涵盖的部分内容,具体的学习过程中还会涉及更多高级主题,如动画、通知、推送服务、多媒体处理、蓝牙通信、安全性、国际化等。这份完全版的教程应该会详细讲解这些知识点,并提供...
【Android开发教程2,英文版】是一本专为有志于深入学习Android应用开发的开发者编写的指南。这本书由Reto Meier撰写,他是一位在移动开发领域有着丰富经验的专家,因此书中内容权威且实用。该教程面向的读者群体...
《Android开发教程笔记完全版》是一份面向初学者的详细指南,旨在教授基本的Android编程技能,并逐步引导读者掌握高级的Android应用程序开发概念。这份文档首先介绍了开放手机联盟(Open Handset Alliance,简称OHA...
在安卓(Android)平台...请确保你的应用遵循Android的蓝牙权限要求,并在不同的Android版本上进行充分测试,以确保兼容性。此外,理解BLE协议栈的细节,如数据包格式、服务质量等,也有助于优化数据传输效率和稳定性。
在Android应用开发领域,...总之,这份“Android Studio开发第二版源码”教程是Android初学者和进阶者的宝贵资源,通过学习和实践,你可以全面提升Android开发能力,为成为一名优秀的Android开发者打下坚实基础。
【Android应用源码安卓蓝牙游戏手柄驱动项目】是一个针对Android平台的开发项目,旨在实现对蓝牙游戏手柄的驱动支持。这个项目的核心是通过源码解析和编程,使Android设备能够识别并适配各种蓝牙游戏手柄,提供顺畅...