Android提高第十三篇之探祕藍芽隱藏API
阿新 • • 發佈:2019-01-31
-
package com.testReflect;
-
import java.util.ArrayList;
-
import java.util.List;
-
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.util.Log;
-
import android.view.View;
-
import android.widget.AdapterView;
-
import android.widget.ArrayAdapter;
-
import android.widget.Button;
-
import android.widget.ListView;
-
import android.widget.Toast;
-
public class testReflect extends Activity {
-
Button btnSearch, btnShow;
-
ListView lvBTDevices;
-
ArrayAdapter adtDevices;
-
List lstDevices = new ArrayList();
-
BluetoothDevice btDevice;
-
BluetoothAdapter btAdapt;
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
btnSearch = (Button) this.findViewById(R.id.btnSearch);
-
btnSearch.setOnClickListener(new ClickEvent());
-
btnShow = (Button) this.findViewById(R.id.btnShow);
-
btnShow.setOnClickListener(new ClickEvent());
-
lvBTDevices = (ListView) this.findViewById(R.id.ListView01);
-
adtDevices = new ArrayAdapter(testReflect.this,
-
android.R.layout.simple_list_item_1, lstDevices);
-
lvBTDevices.setAdapter(adtDevices);
-
lvBTDevices.setOnItemClickListener(new ItemClickEvent());
-
btAdapt = BluetoothAdapter.getDefaultAdapter();// 初始化本機藍芽功能
-
if (btAdapt.getState() == BluetoothAdapter.STATE_OFF)// 開藍芽
-
btAdapt.enable();
-
// 註冊Receiver來獲取藍芽裝置相關的結果
-
IntentFilter intent = new IntentFilter();
-
intent.addAction(BluetoothDevice.ACTION_FOUND);
-
intent.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
-
registerReceiver(searchDevices, intent);
-
}
-
private BroadcastReceiver searchDevices = new BroadcastReceiver() {
-
public void onReceive(Context context, Intent intent) {
-
String action = intent.getAction();
-
Bundle b = intent.getExtras();
-
Object[] lstName = b.keySet().toArray();
-
// 顯示所有收到的訊息及其細節
-
for (int i = 0; i < lstName.length; i++) {
-
String keyName = lstName[i].toString();
-
Log.e(keyName, String.valueOf(b.get(keyName)));
-
}
-
// 搜尋裝置時,取得裝置的MAC地址
-
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
-
BluetoothDevice device = intent
-
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-
if (device.getBondState() == BluetoothDevice.BOND_NONE) {
-
String str = "未配對|" + device.getName() + "|" + device.getAddress();
-
lstDevices.add(str); // 獲取裝置名稱和mac地址
-
adtDevices.notifyDataSetChanged();
-
}
-
}
-
}
-
};
-
class ItemClickEvent implements AdapterView.OnItemClickListener {
-
@Override
-
public void onItemClick(AdapterView arg0, View arg1, int arg2,
-
long arg3) {
-
btAdapt.cancelDiscovery();
-
String str = lstDevices.get(arg2);
-
String[] values = str.split("//|");
-
String address=values[2];
-
btDevice = btAdapt.getRemoteDevice(address);
-
try {
-
if(values[0].equals("未配對"))
-
{
-
Toast.makeText(testReflect.this, "由未配對轉為已配對", 500).show();
-
ClsUtils.createBond(btDevice.getClass(), btDevice);
-
}
-
else if(values[0].equals("已配對"))
-
{
-
Toast.makeText(testReflect.this, "由已配對轉為未配對", 500).show();
-
ClsUtils.removeBond(btDevice.getClass(), btDevice);
-
}
-
} catch (Exception e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
}
-
/**
-
* 按鍵處理
-
* @author GV
-
*
-
*/
-
class ClickEvent implements View.OnClickListener {
-
@Override
-
public void onClick(View v) {
-
if (v == btnSearch) {//搜尋附近的藍芽裝置
-
lstDevices.clear();
-
Object[] lstDevice = btAdapt.getBondedDevices().toArray();
-
for (int i = 0; i < lstDevice.length; i++) {
-
BluetoothDevice device=(BluetoothDevice)lstDevice[i];
-
String str = "已配對|" + device.getName() + "|" + device.getAddress();
-
lstDevices.add(str); // 獲取裝置名稱和mac地址
-
adtDevices.notifyDataSetChanged();
-
}
-
// 開始搜尋
-
setTitle("本機藍芽地址:" + btAdapt.getAddress());
-
btAdapt.startDiscovery();
-
}
-
else if(v==btnShow){//顯示BluetoothDevice的所有方法和常量,包括隱藏API
-
ClsUtils.printAllInform(btDevice.getClass());
-
}
-
}
-
}
- }