本文实例讲述了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. */@Overridepublic 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 Bluetoothtxt.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) {@Overridepublic void onTick( long millisUntilFinished){ txt_see.setText( "剩余可见时间" + millisUntilFinished / 1000 + "秒");}@Overridepublic void onFinish(){ //判断蓝牙是否已经被打开 if (mBluetoothAdapter.isEnabled()) {btn_see.setEnabled(true);txt_see.setText( "设备不可见"); }} }; scan_timer = new CountDownTimer(12000,1000) {@Overridepublic void onTick( long millisUntilFinished){ txt_scan.setText( "剩余扫描时间" + millisUntilFinished / 1000 + "秒");}@Overridepublic void onFinish(){ //判断蓝牙是否已经被打开 if (mBluetoothAdapter.isEnabled()) {btn_scan.setEnabled(true);//关闭扫描mBluetoothAdapter.cancelDiscovery();btn_scan.setText("扫描:OFF");txt_scan.setText( "停止扫描"); }} };}@Overrideprotected void onDestroy() { super.onDestroy(); android.os.Process.killProcess(android.os.Process.myPid());}@Overridepublic 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_FOUNDfinal BroadcastReceiver mReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();// When discovery finds a devicemArrayAdapter.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 BroadcastReceiverIntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver, filter); // Don"t forget to unregister during onDestroyscan_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 returnsif (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 devicesfor (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程序设计有所帮助。