Android Bluetooth蓝牙客户端发起对服务端连接建立请求过程(高版本Android兼容)
2018-01-04 00:00
232 查看
Android Bluetooth蓝牙客户端发起对服务端连接建立请求过程(高版本Android兼容)
本例代码是蓝牙客户端代码,只完成连接建立请求,假定蓝牙服务端设备名是:Android-Phone。兼容高版本Android系统。低版本则无需运行时权限申请。
本例代码是蓝牙客户端代码,只完成连接建立请求,假定蓝牙服务端设备名是:Android-Phone。兼容高版本Android系统。低版本则无需运行时权限申请。
package zhangphil.client; import java.util.UUID; import android.Manifest; 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.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; public class MainActivity extends Activity { private BluetoothAdapter mBluetoothAdapter; private final int PERMISSION_REQUEST_COARSE_LOCATION = 0xb01; private String TAG = "zhangphil"; private String MY_UUID = "00001101-0000-1000-8000-00805F9B34FB"; // 广播接收发现蓝牙设备 private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (device != null) { String name = device.getName(); Log.d(TAG, "发现设备:" + name); if (TextUtils.equals(name, "Android-Phone")) { Log.d(TAG, "发现目标设备,开始线程连接!"); // 蓝牙搜索是非常消耗系统资源开销的过程. // 一旦发现了目标感兴趣的设备,可以考虑关闭扫描。 mBluetoothAdapter.cancelDiscovery(); new ClientThread(device).start(); } } } } }; private class ClientThread extends Thread { private BluetoothDevice device; public ClientThread(BluetoothDevice device) { this.device = device; } @Override public void run() { BluetoothSocket socket; try { socket = device.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID)); Log.d(TAG, "连接服务端..."); socket.connect(); Log.d(TAG, "连接建立."); } catch (Exception e) { e.printStackTrace(); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } } mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); // 注册广播接收器。接收蓝牙发现讯息 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(mReceiver, filter); if (mBluetoothAdapter.startDiscovery()) { Log.d(TAG, "启动蓝牙扫描设备..."); } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mReceiver); } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_COARSE_LOCATION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { } break; } } }
相关文章推荐
- Android Bluetooth蓝牙客户端发起对服务端连接建立请求过程(高版本Android兼容)
- android客户端给服务端发post请求
- 服务与客户端建立连接的过程
- android客户端通过json连接servlet服务端
- live555学习之RTSP连接建立以及请求消息处理过程
- Android---网络交互之客户端请求服务端资源
- Android 使用Socket实现服务器与手机客户端的长连接五:使用队列封装请求
- SVN版本服务器搭配全过程详解(含服务端、客户端)
- Android客户端 和 pc服务器 建立socket连接并发送数据
- Android客户端请求服务端资源(HttpURLConnection和输入流实现)
- android客户端通过json连接servlet服务端
- Android Retrofit Multipart图片上传至webapi,客户端发送请求,服务端却收到两个请求的原因
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互
- live555_RTSP连接建立以及请求消息处理过程
- SVN 版本服务器搭配全过程详解(含服务端、客户端)
- python 批量执行脚本(服务端和客户端建立TCP连接)
- SVN 版本服务器搭配全过程详解(含服务端、客户端)
- VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(二)——“请求”“交互”与传输数据(服务器端)
- live555学习之RTSP连接建立以及请求消息处理过程