Java 建立蓝牙连接
我不知道是什么问题。我已经尝试过其他的解决方案,但没有真正起作用。这是我的密码。我只需要与我的蓝牙屏蔽建立连接。Mac地址已被识别。一旦我点击了bluetooth shield的mac添加,它就会关闭。求你了。救命啊Java 建立蓝牙连接,java,android,bluetooth,Java,Android,Bluetooth,我不知道是什么问题。我已经尝试过其他的解决方案,但没有真正起作用。这是我的密码。我只需要与我的蓝牙屏蔽建立连接。Mac地址已被识别。一旦我点击了bluetooth shield的mac添加,它就会关闭。求你了。救命啊 package aijm.pd.testing; /** * Created by Alyssa on 1/7/2016. */ import android.app.Activity; import android.bluetooth.BluetoothAdapter;
package aijm.pd.testing;
/**
* Created by Alyssa on 1/7/2016.
*/
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.util.UUID;
public class newConnection extends Activity {
private static final int REQUEST_ENABLE_BT = 1;
ListView listDevicesFound;
Button btnScanDevice;
TextView stateBluetooth;
BluetoothAdapter bluetoothAdapter;
ArrayAdapter<String> btArrayAdapter;
// universal UUID
private static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
// bluetooth device MAC address
private static String address = "20:00:06:08:10:40";
ThreadConnectBTDevice myThreadConnectBTDevice;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newconnection);
btnScanDevice = (Button)findViewById(R.id.scandevice);
stateBluetooth = (TextView)findViewById(R.id.bluetoothstate);
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
listDevicesFound = (ListView)findViewById(R.id.devicesfound);
btArrayAdapter = new ArrayAdapter<String>(newConnection.this, android.R.layout.simple_list_item_1);
listDevicesFound.setAdapter(btArrayAdapter);
listDevicesFound.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
BluetoothDevice device = (BluetoothDevice)parent.getItemAtPosition(position);
Toast.makeText(newConnection.this, "Name: "+device.getName()+ "\n"
+ "Address: " +device.getAddress()+ "\n"
+ "Bond state: " +device.getBondState()+ "\n"
+ "Bluetooth class: " +device.getBluetoothClass()+ "\n"
+ "Class: " +device.getClass(), Toast.LENGTH_LONG).show();
myThreadConnectBTDevice = new ThreadConnectBTDevice(device);
myThreadConnectBTDevice.start();
}
});
CheckBlueToothState();
btnScanDevice.setOnClickListener(btnScanDeviceOnClickListener);
registerReceiver(ActionFoundReceiver,
new IntentFilter(BluetoothDevice.ACTION_FOUND));
}
private class ThreadConnectBTDevice extends Thread {
private BluetoothSocket bluetoothsocket = null;
private BluetoothDevice device = bluetoothAdapter.getRemoteDevice(address);
public ThreadConnectBTDevice(BluetoothDevice device) {
try {
bluetoothsocket = device.createRfcommSocketToServiceRecord(myUUID);
stateBluetooth.setText("Bluetooth socket: " + bluetoothsocket);
} catch (IOException e) {
e.printStackTrace();
}
bluetoothAdapter.cancelDiscovery();
try {
bluetoothsocket.connect();
stateBluetooth.setText("Connection Established!");
} catch (IOException e) {
try {
bluetoothsocket.close();
} catch (IOException ee) {
stateBluetooth.setText("Unable to close socket during connection failure." + ee.getMessage());
}
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(ActionFoundReceiver);
}
private void CheckBlueToothState(){
if (bluetoothAdapter == null){
stateBluetooth.setText("Bluetooth NOT support");
}else{
if (bluetoothAdapter.isEnabled()){
if(bluetoothAdapter.isDiscovering()){
stateBluetooth.setText("Bluetooth is currently in device discovery process.");
}else{
stateBluetooth.setText("Bluetooth is Enabled.");
btnScanDevice.setEnabled(true);
}
}else{
stateBluetooth.setText("Bluetooth is NOT Enabled!");
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
}
}
private Button.OnClickListener btnScanDeviceOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
btArrayAdapter.clear();
bluetoothAdapter.startDiscovery();
}};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if(requestCode == REQUEST_ENABLE_BT){
CheckBlueToothState();
}
}
private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
btArrayAdapter.add(device.getName() + "\n" + device.getAddress());
btArrayAdapter.notifyDataSetChanged();
}
}};
}
包aijm.pd.testing;
/**
*由Alyssa于2016年1月7日创建。
*/
导入android.app.Activity;
导入android.bluetooth.BluetoothAdapter;
导入android.bluetooth.bluetooth设备;
导入android.bluetooth.BluetoothSocket;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.io.IOException;
导入java.util.UUID;
公共类newConnection扩展了活动{
私有静态最终整数请求_ENABLE_BT=1;
ListView listDevicesFound;
按钮式btnScanDevice;
文本视图状态蓝牙;
蓝牙适配器;
ArrayAdapter btArrayAdapter;
//通用UUID
私有静态最终UUID myUUID=UUID.fromString(“00001101-0000-1000-8000-00805f9b34fb”);
//蓝牙设备MAC地址
私有静态字符串地址=“20:00:06:08:10:40”;
ThreadConnectBTDevice myThreadConnectBTDevice;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.newconnection);
btnScanDevice=(按钮)findViewById(R.id.scandevice);
stateBluetooth=(TextView)findViewById(R.id.bluetoothstate);
bluetoothAdapter=bluetoothAdapter.getDefaultAdapter();
listDevicesFound=(ListView)findViewById(R.id.devicesfound);
btArrayAdapter=newarrayadapter(newConnection.this,android.R.layout.simple\u list\u item\u 1);
listDevicesFound.setAdapter(btArrayAdapter);
listDevicesFound.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
BluetoothDevice=(BluetoothDevice)父级.getItemAtPosition(位置);
Toast.makeText(newConnection.this,“名称:”+device.getName()+“\n”
+地址:“+device.getAddress()+”\n
+绑定状态:“+device.getBondState()+”\n
+“蓝牙类:”+设备。getBluetoothClass()+“\n”
+类:“+device.getClass(),Toast.LENGTH_LONG.show();
myThreadConnectBTDevice=新的ThreadConnectBTDevice(设备);
myThreadConnectBTDevice.start();
}
});
CheckBlueToothState();
btnScanDevice.setOnClickListener(btnscandeviceonConClickListener);
registerReceiver(ActionFoundReceiver,
新的IntentFilter(BluetoothDevice.ACTION_FOUND));
}
私有类ThreadConnectBTDevice扩展线程{
私有BluetoothSocket BluetoothSocket=null;
私有BluetoothDevice设备=bluetoothAdapter.getRemoteDevice(地址);
公共线程连接设备(蓝牙设备){
试一试{
bluetoothsocket=device.createrFComSocketToServiceRecord(myUUID);
stateBluetooth.setText(“蓝牙插座:“+bluetoothsocket”);
}捕获(IOE异常){
e、 printStackTrace();
}
bluetoothAdapter.cancelDiscovery();
试一试{
bluetoothsocket.connect();
statebooth.setText(“已建立连接!”);
}捕获(IOE异常){
试一试{
bluetoothsocket.close();
}捕获(IOEE异常){
stateBooth.setText(“连接失败时无法关闭套接字。”+ee.getMessage());
}
}
}
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
未注册接收人(ActionFoundReceiver);
}
私有void CheckBlueToothState(){
if(bluetoothAdapter==null){
stateBluetooth.setText(“蓝牙不支持”);
}否则{
if(bluetoothAdapter.isEnabled()){
if(bluetoothAdapter.isDiscovering()){
statebooth.setText(“蓝牙当前正在设备发现过程中。”);
}否则{
stateBluetooth.setText(“蓝牙已启用”);
btnScanDevice.setEnabled(true);
}
}否则{
statebooth.setText(“蓝牙未启用!”);
Intent enablebintent=新意图(BluetoothAdapter.ACTION\u REQUEST\u ENABLE);
startActivityForResult(启用BTIntent、请求\启用\ BT);
}
}
}
private Button.OnClickListener BTNSCandeviceonConClickListener
=新建按钮。OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
btArrayAdapter.clear();
bluetoothAdapter.startDiscovery();
}};
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
//TODO自动生成的方法存根
if(requestCode==请求启用){
CheckBlueToothState();
}
}
private final BroadcastReceiver ActionFoundReceiver=new BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
String action=intent.getAction();
如果(蓝色)
BluetoothDevice device = (BluetoothDevice)parent.getItemAtPosition(position);
String tmp = (String) parent.getItemAtPosition(position);
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(tmp.split("\n")[1]);