Android编程9:蓝牙测试

来源:互联网 发布:windows bash ubuntu 编辑:程序博客网 时间:2024/05/22 04:50

Android编程9:蓝牙测试


本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.


软件平台:win7 + eclipse + sdk


设计思路:

配合倒计时定时器实现蓝牙打开,可见,扫描三个功能


参考链接:

http://blog.csdn.net/pwei007/article/details/6015907


源代码:

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());      }          @Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (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()                 {@Overridepublic 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 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();              }          }      }  }
效果图: