软件编程
位置:首页>> 软件编程>> Android编程>> Android编程之蓝牙测试实例

Android编程之蓝牙测试实例

作者:jdh99  发布时间:2022-06-09 13:59:53 

标签: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编程之蓝牙测试实例

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com