当前位置: 代码迷 >> Android >> Android开发课程:蓝牙测试
  详细解决方案

Android开发课程:蓝牙测试

热度:21   发布时间:2016-05-01 17:24:47.0
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();                 }             }         }     }  

?效果图:


?

  相关解决方案