当前位置: 首页 > news >正文

招聘网站官网普洱市住房和城乡建设局网站

招聘网站官网,普洱市住房和城乡建设局网站,怎么用自己的电脑建设网站,网站后台代码【android 蓝牙开发——传统蓝牙】 【android 蓝牙开发——BLE#xff08;低功耗#xff09;蓝牙 2021-10-09更新】 总结一下蓝牙开发的基本使用以及蓝牙耳机的断开和链接。 所以需权限#xff1a; uses-permission android:nameandroid.permission.ACCESS_FIN…【android 蓝牙开发——传统蓝牙】 【android 蓝牙开发——BLE低功耗蓝牙 2021-10-09更新】 总结一下蓝牙开发的基本使用以及蓝牙耳机的断开和链接。 所以需权限 uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION /uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION /uses-permission android:nameandroid.permission.BLUETOOTH /uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN / !-- Android12 的蓝牙权限 如果您的应用与已配对的蓝牙设备通信或者获取当前手机蓝牙是否打开 --uses-permission android:nameandroid.permission.BLUETOOTH_CONNECT / !-- Android12 的蓝牙权限 如果您的应用查找蓝牙设备如蓝牙低功耗 (BLE) 外围设备 --uses-permission android:nameandroid.permission.BLUETOOTH_SCAN / !-- Android12 的蓝牙权限 如果您的应用使当前设备可被其他蓝牙设备检测到 --uses-permission android:nameandroid.permission.BLUETOOTH_ADVERTISE /注意这里需要位置权限。 开启权限 ActivityResultLauncherIntent bluetoothOpenLaunch;private void startBluetooth() {bluetoothOpenLaunch registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallbackActivityResult() {Overridepublic void onActivityResult(ActivityResult result) {System.out.println(MainActivity.onActivityResult result.getResultCode());if (Activity.RESULT_OK result.getResultCode()) {getPermission();}}});Intent intent new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);if (Build.VERSION.SDK_INT Build.VERSION_CODES.S) {ArrayListString arrayListOf new ArrayList();arrayListOf.add(Manifest.permission.BLUETOOTH_CONNECT);PermissionUtils.permission(String.valueOf(arrayListOf)).callback(new PermissionUtils.SimpleCallback() {Overridepublic void onGranted() {System.out.println(MainActivity.onGranted);bluetoothOpenLaunch.launch(intent);}Overridepublic void onDenied() {System.out.println(MainActivity.onDenied);ToastUtils.showLong(请开启蓝牙权限);}}).request();} else {bluetoothOpenLaunch.launch(intent);}}private void getPermission() {ArrayListString arrayListOf new ArrayList();if (Build.VERSION.SDK_INT Build.VERSION_CODES.S) {arrayListOf.add(Manifest.permission.BLUETOOTH_SCAN);arrayListOf.add(Manifest.permission.BLUETOOTH_CONNECT);arrayListOf.add(Manifest.permission.BLUETOOTH_ADVERTISE);}arrayListOf.add(Manifest.permission.BLUETOOTH);arrayListOf.add(Manifest.permission.BLUETOOTH_ADMIN);arrayListOf.add(Manifest.permission.ACCESS_FINE_LOCATION);arrayListOf.add(Manifest.permission.ACCESS_COARSE_LOCATION);PermissionUtils.permission(String.valueOf(arrayListOf)).callback(new PermissionUtils.SimpleCallback() {Overridepublic void onGranted() {ToastUtils.showLong(蓝牙相关权限已成功授权);BluetoothManager blueManager (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);//mBluetoothAdapter BluetoothAdapter.getDefaultAdapter()mBluetoothAdapter blueManager.getAdapter();}Overridepublic void onDenied() {ToastUtils.showLong(请开启蓝牙权限);}}).request();}监听蓝牙连接配对等相关广播建议直接采用以下方式也有其他方法搜索低功耗蓝牙的方式 startLeScan //注册BoradcasrReceiverprivate void registerReceiver() {IntentFilter discoveryFilter new IntentFilter();discoveryFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);discoveryFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);discoveryFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);discoveryFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);discoveryFilter.addAction(BluetoothDevice.ACTION_PAIRING_REQUEST);discoveryFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);discoveryFilter.addAction(BluetoothDevice.ACTION_FOUND);registerReceiver(discoveryReceiver, discoveryFilter);}//蓝牙搜索广播的接收器SuppressLint(MissingPermission)private BroadcastReceiver discoveryReceiver new BroadcastReceiver() {String pin 0000; //此处为你要连接的蓝牙设备的初始密钥一般为 1234 或 0000Overridepublic void onReceive(Context context, Intent intent) {String action intent.getAction();BluetoothDevice bluetoothDevice intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); //获取设备,发现远程蓝牙设备if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {Log.i(TAG, onReceive: 开始搜索);} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {Log.i(TAG, onReceive: 搜索结束);} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {// //获取扫描到的设备String name bluetoothDevice.getName();String address bluetoothDevice.getAddress();Log.i(TAG, onReceive: name name address address);/*if (bluetoothDevice.getBondState() BluetoothDevice.BOND_BONDED) {Log.i(TAG, 已配对 onReceive: name name address address);} else {}*///已经配对boolean isExist false;for (DeviceBean device : bluetoothDevices) {if (device.getAddress().equals(address)) {isExist true;}}if (!isExist) {bluetoothDevices.add(new DeviceBean(name, address));mAdapter.notifyDataSetChanged();}} else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {//Log.i(TAG, onReceive: 绑定状态改变);int state intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR);Log.i(TAG, onReceive: 绑定状态改变 state state);if (state 12) {Log.i(TAG, onReceive: 绑定成功 );ToastUtils.showLong(绑定成功);String name bluetoothDevice.getName();String address bluetoothDevice.getAddress();boolean isExist false;for (DeviceBean device : pairedDevices) {if (device.getAddress().equals(address)) {isExist true;}}if (!isExist) {/*for (DeviceBean device : pairedDevices) {device.setStatus(false);}*/DeviceBean deviceBean new DeviceBean(name, address);deviceBean.setStatus(true);pairedDevices.add(0, deviceBean);mDevicePairedAdapter.notifyDataSetChanged();} else {for (DeviceBean device : pairedDevices) {if (device.getAddress().equals(address)) {device.setStatus(true);mDevicePairedAdapter.notifyDataSetChanged();break;}}}}} else if (BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {//Log.i(TAG, onReceive: 连接状态改变);int state intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE, BluetoothAdapter.ERROR);String name bluetoothDevice.getName();String address bluetoothDevice.getAddress();Log.i(TAG, onReceive: 连接状态改变 state state);switch (state) {case 0://断开成功for (DeviceBean device : pairedDevices) {if (device.getAddress().equals(address)) {device.setStatus(false);mDevicePairedAdapter.notifyDataSetChanged();break;}}break;//case 1: break;case 2://连接成功Log.i(TAG, onReceive: 连接成功 address address);ToastUtils.showLong(连接成功);for (DeviceBean device : pairedDevices) {if (device.getAddress().equals(address)) {device.setStatus(true);mDevicePairedAdapter.notifyDataSetChanged();break;}}break;default:break;}} else if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(action)) {Log.i(TAG, onReceive: 配对);try {// bluetoothDevice.setPairingConfirmation(true);// abortBroadcast();// bluetoothDevice.setPin(pin.getBytes());//1:/* ClsUtils.setPairingConfirmation(bluetoothDevice.getClass(),bluetoothDevice,true);//2:如果没有将广播终止则会出现一个一闪而过的配对框。abortBroadcast();//3.调用setPin方法进行配对..boolean ret ClsUtils.setPin(bluetoothDevice.getClass(), bluetoothDevice, pin);System.out.println(ConnectingDevicesActivity.onReceive retret);*/} catch (Exception e) {throw new RuntimeException(e);}} else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {Log.i(TAG, onReceive: 蓝牙开关状态改变);int state intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);switch (state) {case BluetoothAdapter.STATE_OFF:break;case BluetoothAdapter.STATE_ON:break;}} else {Log.i(TAG, onReceive: else action action);}}}; 我们也可以获取已配对蓝牙列表 private void initData() {SetBluetoothDevice bondedDevices mBluetoothAdapter.getBondedDevices();if (bondedDevices ! null bondedDevices.size() 0) {for (BluetoothDevice bondedDevice : bondedDevices) {System.out.println(ConnectingDevicesActivity.initData name bondedDevice.getName());DeviceBean deviceBean new DeviceBean(bondedDevice.getName(), bondedDevice.getAddress());pairedDevices.add(deviceBean);}mDevicePairedAdapter.notifyDataSetChanged();}}蓝牙耳机断开和连接的具体方法 public boolean isDisconnected false;/*** 断开蓝牙设备连接** param bluetoothDevice BluetoothDevice*/public void disconnect(BluetoothDevice bluetoothDevice) {currentBluetoothDevice bluetoothDevice;//获取A2DP代理对象mBluetoothAdapter.getProfileProxy(this, disconnectProfileServiceListener, BluetoothProfile.HEADSET);//获取HEADSET代理对象mBluetoothAdapter.getProfileProxy(this, disconnectProfileServiceListener, BluetoothProfile.A2DP);}private final BluetoothProfile.ServiceListener disconnectProfileServiceListener new BluetoothProfile.ServiceListener() {Overridepublic void onServiceDisconnected(int profile) {System.out.println(ConnectingDevicesActivity.onServiceDisconnected profileprofile);}Overridepublic void onServiceConnected(int profile, BluetoothProfile proxy) {try {if (profile BluetoothProfile.HEADSET) {//使用HEADSET的协议断开蓝牙设备使用了反射技术调用断开的方法BluetoothHeadset bluetoothHeadset (BluetoothHeadset) proxy;boolean isDisConnect false;try {Method connect null;if (isDisconnected) {connect bluetoothHeadset.getClass().getDeclaredMethod(disconnect, BluetoothDevice.class); //disconnect connect} else {connect bluetoothHeadset.getClass().getDeclaredMethod(connect, BluetoothDevice.class); //disconnect connect}connect.setAccessible(true);isDisConnect (boolean) connect.invoke(bluetoothHeadset, currentBluetoothDevice);if (isDisconnected) {Log.d(TAG, isDisConnect: (isDisConnect ? 断开通话成功 : 断开通话失败) currentBluetoothDevice.getName());} else {Log.d(TAG, isDisConnect: (isDisConnect ? 链接通话成功 : 链接通话失败) currentBluetoothDevice.getName());}} catch (Exception e) {e.printStackTrace();}}if (profile BluetoothProfile.A2DP) {//使用A2DP的协议断开蓝牙设备使用了反射技术调用断开的方法BluetoothA2dp bluetoothA2dp (BluetoothA2dp) proxy;boolean isDisConnect false;try {Method connect null;if (isDisconnected) {connect bluetoothA2dp.getClass().getDeclaredMethod(disconnect, BluetoothDevice.class);} else {connect bluetoothA2dp.getClass().getDeclaredMethod(connect, BluetoothDevice.class);}connect.setAccessible(true);isDisConnect (boolean) connect.invoke(bluetoothA2dp, currentBluetoothDevice);if (isDisconnected) {Log.d(TAG, isDisConnect: (isDisConnect ? 断开音频成功 : 断开音频失败) currentBluetoothDevice.getName());} else {Log.d(TAG, isDisConnect: (isDisConnect ? 链接音频成功 : 链接音频失败) currentBluetoothDevice.getName());}} catch (Exception e) {e.printStackTrace();}if (isDisConnect) {for (DeviceBean device : pairedDevices) {if (device.getAddress().equals(currentBluetoothDevice.getAddress())) {device.setStatus(!isDisconnected);mDevicePairedAdapter.notifyDataSetChanged();break;}}}}} catch (Exception e) {e.printStackTrace();}}};源码
http://www.hkea.cn/news/14335540/

相关文章:

  • 网站收录在哪里可以查看wordpress缩略图裁剪
  • 网站建设和网页设计的区别做三个月网站 广告收入
  • 苏州学做网站绍兴seo淄博公司
  • 开发网站的经济可行性无锡免费网站制作
  • 哪个门户网站做推广好wap网站开发实例
  • 绍兴seo网站推广哈尔滨h5建站
  • vs做网站标签输出语言游戏打金工作室加盟
  • 广州网匠营销型网站建设公司合肥做网站123cms
  • 广告公司网站主页设计网站自己做自己的品牌好做
  • 如何做网站域名解析房地产网站建设方案
  • 外综服务平台哪里做网站百度资源平台
  • 石家庄市网站制作深圳代理注册公司哪家好
  • 购物网站设计的意义电商企业网页设计
  • 蔚县网站建设wl17581淘客免费网站建设
  • 北京建站公司排名首推万维科技培训机构不退钱最怕什么举报
  • 那些影视解析网站怎么做的flat wordpress
  • asp手机网站开发教程做宣传图片的网站
  • lamp 网站建设论文mysql优化 wordpress
  • 做网站哪里最便宜网站 搜索 关键字 description
  • 分析不同网站的优缺点网站开发授权书
  • 网站建设php文件放哪里网站系统方案设计
  • 南宁企业网站排名优化黄村做网站哪家好
  • 新网站建设一般多少钱合肥的电商网站设计
  • 做视频网站需要哪些条件做网站一般怎么收费的
  • 校园二手市场网站建设方案服装定制品牌排行榜前十名
  • 网站业务怎么做的什么是网络营销产品
  • 遵化市城乡建设规划局网站网站数据库在空间吗
  • 虹口北京网站建设做网站 你的出路在哪里
  • 网站的配色方案深圳制作网站搜行者seo
  • 英文网站建设需求百度分享wordpress