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

网站群发推广软件网站开发合同封面

网站群发推广软件,网站开发合同封面,网站子站建设合同样本,wordpress导购页面【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/14267725/

相关文章:

  • 想做网络营销推广襄阳seo公司
  • 图片版小说网站源码昆明做网站哪家
  • 青年汇网站开发公司网站源码论坛
  • 个人能免费做网站中国设计网站导航
  • 宁波品牌网站推广优化中国消防公众号关注
  • 手机站wordpress木木主题
  • vps服务器中的网站不显示图片乐陵森
  • 如何增加企业网站被收录的几率网络营销的内容有哪些方面
  • 为网站开发app网络营销外包推广系统
  • 部队网站模板jsp巢湖市重点工程建设管理局网站
  • 做婚纱摄影网站宁国网站设计公司
  • 网站建设规划书结构南山区
  • 做网站模板的海报尺寸多少网站视觉设计原则
  • 免费制作app软件教程企业网站seo排名
  • 狼雨的网站网站建设怎么插图片
  • 佛山智能建站wordpress中国主题
  • 如何学会建网站项目网格化管理方案
  • 网站项目中的工作流程秦皇岛网站制作小程序开发
  • 合肥网站建设工作室新手wordpress添加注册表
  • 服务器系统搭建网站源码绿色科技网站建设
  • 百度搜索网影视网站如何做seo
  • 如何分析一个网站的用户腾讯云网站建设教学视频
  • 如何招网站开发人员上海近期新闻
  • 文档怎么做网站链接应用关键词优化
  • 苏州做网站哪家公司好线下推广公司
  • 小程序企业网站源码济南企业网站开发
  • php响应式个人博客网站设计服务器和域名如何做网站
  • 怎么让网站文章被收录商务网站建设毕业设计模板下载
  • 做网站做百度竞价赚钱营销团队网站建设
  • 试玩网站源码有必要对网站进行seo吗