Android 蓝牙实例

一身转战三千里,一剑曾当百万师。这篇文章主要讲述Android 蓝牙实例相关的知识,希望能为你提供帮助。
本文转自:http://www.yiibai.com/android/android_bluetooth.html
在很多方面,蓝牙是一种能够发送或接受两个不同的设备之间传输的数据。 android平台包含了蓝牙框架,使设备以无线方式与其他蓝牙设备进行数据交换的支持。
Android提供蓝牙API来执行这些不同的操作。

  1. 扫描其他蓝牙设备
  2. 获取配对设备列表
  3. 连接到通过服务发现其他设备
Android提供BluetoothAdapter类蓝牙通信。通过调用创建的对象的静态方法getDefaultAdapter()。其语法如下给出。
private BluetoothAdapter BA; BA = BluetoothAdapter.getDefaultAdapter();

为了使用设备的蓝牙,调用下列蓝牙ACTION_REQUEST_ENABLE的意图。其语法如下:
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOn, 0);

除了这个常量,有提供其它的API,支持不同任务的其他常数。它们在下面列出。
Sr.No常数说明
1 ACTION_REQUEST_DISCOVERABLE
此常数用于开启蓝牙的发现
2 ACTION_STATE_CHANGED
此常量将通知蓝牙状态已经改变
3 ACTION_FOUND
此常数用于接收关于所发现的每个设备的信息
启用了蓝牙功能之后,可以通过调用 getBondedDevices()方法来获取配对设备列表。它返回一组的蓝牙设备。其语法如下:
private Set< BluetoothDevice> pairedDevices; pairedDevices = BA.getBondedDevices();

除了配对的设备,还有API,让更多蓝牙控制权等方法。它们在下面列出。
Sr.No方法及说明
1 enable()
这种方法使适配器,如果未启用
2 isEnabled()
如果适配器已启用此方法返回true
3 disable()
该方法禁用适配器
4 getName()
此方法返回的蓝牙适配器的名称
5 setName(String name)
此方法更改蓝牙名称
6 getState()
此方法返回蓝牙适配器的当前状态
7 startDiscovery()
此方法开始蓝牙120秒的发现过程。
示例这个例子提供了示范BluetoothAdapter类操纵蓝牙,并显示通过蓝牙配对设备列表。
为了试验这个例子,需要在实际设备上运行此程序
步骤描述
1 使用Android Studio创建Android应用程序,并将其命名为Bluetooth,创建这个项目,确保目标SDK编译在Android SDK的最新版本或使用更高级别的API。
2 修改  src/MainActivity.java  文件中添加代码
3 如果修改所需的布局XML文件  res/layout/activity_main.xml   添加GUI组件
4 修改  res/values/string.xml   文件,并添加必要的字符串常量组件
5 修改 AndroidManifest.xml  添加必要的权限。
6 运行应用程序并选择运行Android的设备,并在其上安装的应用和验证结果。
以下是  src/com.yiibai.bluetooth/MainActivity.java  文件的内容:
package com.example.bluetooth; import java.util.ArrayList; import java.util.List; import java.util.Set; import android.os.Bundle; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity {private Button On,Off,Visible,list; private BluetoothAdapter BA; private Set< BluetoothDevice> pairedDevices; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); On = (Button)findViewById(R.id.button1); Off = (Button)findViewById(R.id.button2); Visible = (Button)findViewById(R.id.button3); list = (Button)findViewById(R.id.button4); lv = (ListView)findViewById(R.id.listView1); BA = BluetoothAdapter.getDefaultAdapter(); }public void on(View view){ if (!BA.isEnabled()) { Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(turnOn, 0); Toast.makeText(getApplicationContext(),"Turned on" ,Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(),"Already on", Toast.LENGTH_LONG).show(); } } public void list(View view){ pairedDevices = BA.getBondedDevices(); ArrayList list = new ArrayList(); for(BluetoothDevice bt : pairedDevices) list.add(bt.getName()); Toast.makeText(getApplicationContext(),"Showing Paired Devices", Toast.LENGTH_SHORT).show(); final ArrayAdapter adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1, list); lv.setAdapter(adapter); } public void off(View view){ BA.disable(); Toast.makeText(getApplicationContext(),"Turned off" , Toast.LENGTH_LONG).show(); } public void visible(View view){ Intent getVisible = new Intent(BluetoothAdapter. ACTION_REQUEST_DISCOVERABLE); startActivityForResult(getVisible,0); }@Overridepublicboolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); returntrue; }}

这里是  activity_main.xml  文件的内容:
< RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > < ScrollView android:id="@+id/scrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" > < LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > < TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:textAppearance="?android:attr/textAppearanceLarge" /> < Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="on" android:text="@string/on" /> < Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="visible" android:text="@string/Visible" /> < Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="list" android:text="@string/List" /> < Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="off" android:text="@string/off" /> < ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" > < /ListView> < /LinearLayout> < /ScrollView> < /RelativeLayout>

这里是  Strings.xml  文件的内容:
   
< ?xml version="1.0" encoding="utf-8"?> < resources> < string name="app_name"> Bluetooth< /string> < string name="action_settings"> Settings< /string> < string name="hello_world"> Hello world!< /string> < string name="on"> Turn On< /string> < string name="off"> Turn Off< /string> < string name="Visible"> Get Visible< /string> < string name="List"> List Devices< /string> < /resources>

这里是  AndroidManifest.xml  文件的内容:
< ?xml version="1.0" encoding="utf-8"?> < manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yiibai.bluetooth" android:versionCode="1" android:versionName="1.0" > < uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> < uses-permission android:name="android.permission.BLUETOOTH"/> < uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> < application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > < activity android:name="com.yiibai.bluetooth.MainActivity" android:label="@string/app_name" > < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < /application> < /manifest>

让我们试着运行AndroidCapture应用程序。假设你已经连接实际的Android移动设备到计算机。启动应用程序之前,Eclipse会显示如下窗口,选择要运行的Android应用程序的选项。
Android 蓝牙实例

文章图片

选择移动设备作为一个选项,然后检查移动设备将显示如下界面:
Android 蓝牙实例

文章图片

现在选择打开开启蓝牙。但是当选择它,蓝牙将不会被打开。事实上它会询问许可,以启用蓝牙。
【Android 蓝牙实例】
Android 蓝牙实例

文章图片

现在,只需要选择设置可见按钮来打开视图。下面的屏幕会出现要求许可才能打开发现120秒。
Android 蓝牙实例

文章图片

现在,只要选择列表中的设备选项。它会列出倒在列表视图中的配对设备。就我而言,只有一个配对设备。它如下所示。
Android 蓝牙实例

文章图片

现在,只需选择关闭按钮来关闭蓝牙。当关掉蓝牙指示成功切换关闭蓝牙会出现以下消息。
Android 蓝牙实例

文章图片

 

    推荐阅读