怎么操作App使用蓝牙串口App开发权限

app 通过蓝牙连接硬件是怎么实现的?难度大么
· 109 天前 · 708 次点击
具体场景:打开蓝牙、app 连接硬件 控制该硬件开关 再加个定时启动功能
没有接触过这类 如果有现成的 app 借鉴,请推荐一下 谢谢。
6 回复 &| &直到
20:52:06 +08:00
& &109 天前
连接蓝牙有现成的接口,就是通过 mac 地址进行连接,控制关了之后就没办法控制开了。。。。定时启动功能没写过就不知道了
我这里的源码是公司内部 jar 就不给你看了
& &109 天前 via iPhone
你的设备如果是低功耗蓝牙( ble )设备,iOS 和 Android 都有对应系统蓝牙库的。iOS 是通过 CoreBluetooth 库与设备交互,Android 在 4.3 以上版本才有支持 ble 的 API。交互过程可以简单叙述为:开启蓝牙扫描———在扫描结果中连接想要连接的设备———连接成功后发现设备端提供的蓝牙服务———通过服务的特征值(可以看做为蓝牙数据交互的管道,读 /写 /通知)来交互数据。定时启动逻辑是看硬件怎么做了。例子参考 github 中关于 ble 的一类,可搜索[CC2640/NRF51/NRF52/Dialog 与 App 端的交互]做进一步了解。
& &109 天前
@ 谢谢 如果开发 ios 和 Android 两个版本的话价格大概多少算合理呀?
& &108 天前 via iPhone
@ 不好意思,我不是做移动端的,所以预算我不清楚。只是从你的部分功能描述中觉得不难做。能找到做过类似的,效率会高点。
& &108 天前
各家做 BLE 芯片的公司都有。
建议找一下 Nordic 的 nRF Toolbox 看看,并参考其 android 代码。Nordic 的做得不错,也有再不断更新,尽管将没有完全抽象一层出来。
其他家的就是个早年 Android 老版本的的 demo,到了 Android 6,7,8 后的权限申请不一样了都不更新一些。
另外,有需求也可以联系我,收费。
& &108 天前
& · & 1696 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 19ms · UTC 03:43 · PVG 11:43 · LAX 20:43 · JFK 23:43? Do have faith in what you're doing.Android 6.0蓝牙权限问题 - 简书
Android 6.0蓝牙权限问题
基于公司业务,我们的app中有集成蓝牙功能,可以搜索、连接蓝牙;之前的各个版本都没有什么问题,最近却反馈说蓝牙一直在等待搜索,但是蓝牙列表却不弹出来,通过查找资料发现原来是在android 6.0之后要用蓝牙还需要添加一个模糊定位的权限android.permission.ACCESS_COARSE_LOCATION(GPS是精确定位);废话不说正文开始:
1、分析问题:
在android 6.0(targetSdkVersion小于23)之前,安装新的app时系统会提示应用将要获取某某权限,如果同意安装,系统会默认为应用授予所申请的所有权限,而不同意的话,就不能安装应用;所以如果你以前的APP设置的targetSdkVersion低于23,在运行时是不会崩溃的。而在android 6.0(targetSdkVersion&=23)之后,我们会直接安装,不过当app需要获取不恰当权限的时候我们再决定是确定还是拒绝。
我是一个习惯更新的人,我的targetSdkVersion现在已升至24,而在android 6.0之后用到蓝牙搜索的时候是需要开启模糊定位权限的,模糊定位是一个危险权限,故需要用到谷歌官方推荐的方法来解决;
2、android 6.0权限分类
android 6.0采用新的权限机制来保护用户的隐私,将权限分为Normal Permissions和Dangerous Permission;
Normal Permissions
Normal Permissions一般不涉及用户隐私,是不需要用户授权的,具体如下:
&pre&&code&ACCESS_LOCATION_EXTRA_COMMANDS&/code&
&code&ACCESS_NETWORK_STATE&/code&
&code&ACCESS_NOTIFICATION_POLICY&/code&
&code&ACCESS_WIFI_STATE&/code&
&code&BLUETOOTH&/code&
&code&BLUETOOTH_ADMIN&/code&
&code&BROADCAST_STICKY&/code&
&code&CHANGE_NETWORK_STATE&/code&
&code&CHANGE_WIFI_MULTICAST_STATE&/code&
&code&CHANGE_WIFI_STATE&/code&
&code&DISABLE_KEYGUARD&/code&
&code&EXPAND_STATUS_BAR&/code&
&code&GET_PACKAGE_SIZE&/code&
&code&INSTALL_SHORTCUT&/code&
&code&INTERNET&/code&
&code&KILL_BACKGROUND_PROCESSES&/code&
&code&MODIFY_AUDIO_SETTINGS&/code&
&code&NFC&/code&
&code&READ_SYNC_SETTINGS&/code&
&code&READ_SYNC_STATS&/code&
&code&RECEIVE_BOOT_COMPLETED&/code&
&code&REORDER_TASKS&/code&
&code&REQUEST_INSTALL_PACKAGES&/code&
&code&SET_ALARM&/code&
&code&SET_TIME_ZONE&/code&
&code&SET_WALLPAPER&/code&
&code&SET_WALLPAPER_HINTS&/code&
&code&TRANSMIT_IR&/code&
&code&UNINSTALL_SHORTCUT&/code&
&code&USE_FINGERPRINT&/code&
&code&VIBRATE&/code&
&code&WAKE_LOCK&/code&
&code&WRITE_SYNC_SETTINGS&/code&&/pre&
Dangerous Permissions
Dangerous Permissions涉及到用户隐私,在使用时需要用户实时授权才行;
&pre&&code&group:android.permission-group.CONTACTS&/code&
permission:android.permission.WRITE_CONTACTS&/code&
permission:android.permission.GET_ACCOUNTS&/code&
permission:android.permission.READ_CONTACTS&/code&
&code&group:android.permission-group.PHONE&/code&
permission:android.permission.READ_CALL_LOG&/code&
permission:android.permission.READ_PHONE_STATE&/code&
permission:android.permission.CALL_PHONE&/code&
permission:android.permission.WRITE_CALL_LOG&/code&
permission:android.permission.USE_SIP&/code&
permission:android.permission.PROCESS_OUTGOING_CALLS&/code&
permission:com.android.voicemail.permission.ADD_VOICEMAIL&/code&
&code&group:android.permission-group.CALENDAR&/code&
permission:android.permission.READ_CALENDAR&/code&
permission:android.permission.WRITE_CALENDAR&/code&
&code&group:android.permission-group.CAMERA&/code&
permission:android.permission.CAMERA&/code&
&code&group:android.permission-group.SENSORS&/code&
permission:android.permission.BODY_SENSORS&/code&
&code&group:android.permission-group.LOCATION&/code&
permission:android.permission.ACCESS_FINE_LOCATION&/code&
permission:android.permission.ACCESS_COARSE_LOCATION&/code&
&code&group:android.permission-group.STORAGE&/code&
permission:android.permission.READ_EXTERNAL_STORAGE&/code&
permission:android.permission.WRITE_EXTERNAL_STORAGE&/code&
&code&group:android.permission-group.MICROPHONE&/code&
permission:android.permission.RECORD_AUDIO&/code&
&code&group:android.permission-group.SMS&/code&
permission:android.permission.READ_SMS&/code&
permission:android.permission.RECEIVE_WAP_PUSH&/code&
permission:android.permission.RECEIVE_MMS&/code&
permission:android.permission.RECEIVE_SMS&/code&
permission:android.permission.SEND_SMS&/code&
permission:android.permission.READ_CELL_BROADCASTS&/code&&/pre&
3、模仿android官方demo处理蓝牙问题
在manifest文件中添加权限:
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
在代码中添加首次进入判断:
&pre&&code&
/**&/code&
* 校验蓝牙权限&/code&
private void checkBluetoothPermission() {&/code&
if (Build.VERSION.SDK_INT &= 23) {&/code&
//校验是否已具有模糊定位权限&/code&
if (ContextCompat.checkSelfPermission(TYMposActivity.this,&/code&
Manifest.permission.ACCESS_COARSE_LOCATION)&/code&
!= PackageManager.PERMISSION_GRANTED) {&/code&
ActivityCompat.requestPermissions(TYMposActivity.this,&/code&
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},&/code&
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);&/code&
} else {&/code&
//具有权限&/code&
connectBluetooth();&/code&
} else {&/code&
//系统不高于6.0直接执行&/code&
connectBluetooth();&/code&
}&/code&&/pre&
对返回值进行处理,类似于startActivityForResult方法:
&pre&&code&
@Override&/code&
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {&/code&
super.onRequestPermissionsResult(requestCode, permissions, grantResults);&/code&
doNext(requestCode, grantResults);&/code&
}&/code&&/pre&
&pre&&code&
private void doNext(int requestCode, int[] grantResults) {&/code&
if (requestCode == MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION) {&/code&
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {&/code&
//同意权限&/code&
connectBluetooth();&/code&
} else {&/code&
// 权限拒绝&/code&
// 下面的方法最好写一个跳转,可以直接跳转到权限设置页面,方便用户&/code&
denyPermission();&/code&
}&/code&&/pre&
4、机型问题
一般都会在最新升级到6.0的系统出现这些问题,其中MIUI8中的问题还是很多的,有时候请求授权会莫名其妙点击不了授权框;所以每次就只能再去到权限管理页面手动更改;
5、封装推荐
在查找资料时发现其实很早以前都有很多大神处理过类似问题,并且都写有博客和github的公开项目,此处本菜鸟写出也只是简单的笔记和参考;
写的不是很明白,如还有疑问可参考; 。其中包含有鸿洋大神自己的封装还是很方便使用的。
那些要动态权限(这么记比较危险的权限,获取硬件和用户信息权限) 不过现在as 中会主动提示加动态权限 calendar 时间(日历) camera 相机 contacts 联系人(读,写,获取通讯录) location (获取定位) microphone (麦克风即话筒) ...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
发热放入Android6.0带来了新的权限管理方式,根据提供的官方文档,再加上自己的理解,做了以下汇总仅供大家伙参考,不好勿喷。 一个新建的Android应用默认是没有权限的,这意味着它不能执行任何可能对用户体验有不利影响的操作或者访问设备数据。为了使用受保护的功能,你必须...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
安卓平台权限一直有被流氓应用随便利用诟病, android M的发布彻底解决了这一问题,取而代之的是,app不得不在运行时一个一个询问用户授予权限。 Android 6.0(api23)系统中,做了一些限制, 开发者在使用到每条权限时必须自己调用相关代码请求. 如果没有获得...
偶得潦墨趣,春色落云肪; 旭日寒山紫,曛光细叶黄。 描橘唇亦涩,点蕊指留香; 笔下凝丘壑,心随信马缰。
昨天我是歌手改名歌手,第一集开播。这一季比上一季有看头,我对林忆莲和袁娅维的表现最感兴趣。林志炫在以前的节目里唱过蒙娜丽莎的眼泪,我觉得很不错,直到有人分享了一个袁娅维的翻唱现场视频,太好听了,后来她的这首歌陪我度过了很多个跑步的夜晚。昨晚袁娅维的阿楚姑娘完全没发挥她的优势...
于我而言,谈论对一个人的喜爱程度,通常是内在>外在的。 内在是性格,才华,生活品位,人格魅力; 外在单指脸和身材。 我不评判哪部分更重要。只是有些人接触过一段时间后,就能让你从心里由衷的感慨: 虽然你很好看,但你是个傻逼。 眼睛会审美疲劳,而感受则会不断刷新。 也许会有那种...
在长沙难得的好天气里,我和女票约了一起出门逛逛。早上起床后认真打扮自己,洗面奶冰凉的触感十分提神,电动牙刷哒哒哒挺省劲。出门和女票一碰面,自然的拉住她的手,接过背包和单反,扫了一眼她的唇色,知道是前一段买的AMANI。在外边逛吃逛吃之后,我又一次感叹,这样的生活要是可以一直...
去哪里玩呢 全国貌似都是人从众 吃点啥呢 一看还真是五仁馅的 让我哭会,我想起了刚过去的中秋节 打开电脑 默默加起班来 很久打不过去的游戏 终于通关了 注定一个人过国庆 阅兵与否似乎跟我没啥关系 反正我家又不在北京 (说的好像自己在北京就能登上天安门一样) 寻寻觅觅,冷冷清...平板/笔记本
HiLink生态产品
终端云服务专区
为什么权限管理里面没有蓝牙设置?
&新学乍练&
来自:荣耀V8 KNT-UL10
每次打开需要调用蓝牙的软件,权限询问都会跳出来两次!!!
width:100%">
&登堂入室&
来自:浏览器
沙发,占个坐
width:100%">
&禁止访问&
来自:浏览器
提示: 作者被禁止或删除 内容自动屏蔽
width:100%">
&渐入佳境&
来自:浏览器
沙发,占个坐
width:100%">
&登堂入室&
来自:浏览器
沙发,占个坐
width:100%">
随手拍毕业季(上)P20pro随手拍p10镜头下的小生灵华为P20伴我新疆徒步行3清晨时光
花粉客户端
Make it Possible
Make your device special
华为云空间
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
关注花粉俱乐部
举报邮箱:
|关注花粉俱乐部:
增值电信业务经营许可证:苏B2-号|
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利android系统app打开蓝牙+设置可见性
BluetoothAdapter blue = BluetoothAdapter.getDefaultAdapter();
这两个方法足矣满足你的需求(需要system权限):
blue.enable();
//需要加延时(打开蓝牙过程需要时间)
Thread.sleep(1000);
}catch (Excetion e){
e.printStackTrace();
blue.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
blue.setDiscoverableTimeout(0);//0:蓝牙永久可见
**************************************************************************************************************************
操作数据库打开关闭蓝牙
# cd /data/data/com.android.providers.settings/databases
# sqlite3 settings.db
# select *
打开/关闭蓝牙:String
BLUETOOTH_ON = "bluetooth_on";
Settings.Global.putInt(mContext.getContentResolver(),Settings.Global.BLUETOOTH_ON,1);//0关闭蓝牙
获取蓝牙状态:
int State = Settings.Global.getInt(mContext.getContentResolver(),Settings.Global.BLUETOOTH_ON,0);//0关闭蓝牙
State = 0;蓝牙关闭状态
State = 1;蓝牙打开状态
没有更多推荐了,Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码:
&uses-permission android:name=”android.permission.INTERNET”&&/uses-permission&
同样的如果用到其它的权限,也需要作出声明,部分权限列表如下:
android.permission.ACCESS_CHECKIN_PROPERTIES
允许读写访问”properties”表在 checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change
values that get uploaded)
android.permission.ACCESS_COARSE_LOCATION
允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION
允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION
允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)
android.permission.ACCESS_NETWORK_STATE
允许程序访问有关GSM网络信息(Allows applications to access information about networks)
android.permission.ACCESS_SURFACE_FLINGER
允许程序使用SurfaceFlinger底层特性 (Allows an application to use SurfaceFlinger’s low level features)
android.permission.ACCESS_WIFI_STATE
允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE
允许程序发布系统级服务(Allows an application to publish system-level services).
android.permission.BATTERY_STATS
允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)
android.permission.BLUETOOTH
允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetooth devices)
ACCESS_CHECKIN_PROPERTIES
允许在登入数据库的时候读写其中的属性表,并上传改变的值ACCESS_COARSE_LOCATION
允许应用访问范围(如WIFI)性的定位ACCESS_FINE_LOCATION
允许应用访问精确(如GPS)性的定位ACCESS_LOCATION_EXTRA_COMMANDS
允许应访问额外的提供定位的指令ACCESS_MOCK_LOCATION
允许应用创建用于测试的模拟定位提供者ACCESS_NETWORK_STATE
允许应用访问网络上的信息ACCESS_SURFACE_FLINGER
允许应用使用低版本视图的特征ACCESS_WIFI_STATE
允许应用访问关羽Wi-Fi网络的信息ACCOUNT_MANAGER
允许应用进入帐户认证AUTHENTICATE_ACCOUNTS
允许应用为ACCOUNT_MANAGER扮演一个帐户认证系统 BATTERY_STATS
允许应用去统计电源信息BIND_APPWIDGET
允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据BIND_DEVICE_ADMIN
必须通过关机接收者的请求来确保只有系统能够与之交互BIND_INPUT_METHOD
必须通过InputMethodService的请求来确保只有系统能够与之绑定BIND_WALLPAPER
必须通过WallpaperService的请求来确保只有系统能够与之绑定BLUETOOTH
允许应用去连接蓝牙设备BLUETOOTH_ADMIN
允许应用找到与之连接的蓝牙设备BRICK
被请求废止设备(非常危险)BROADCAST_PACKAGE_REMOVED
允许应用发出一个程序包被移除的广播消息BROADCAST_SMS
允许应用发出一个收到短信的消息BROADCAST_STICKY
允许应用发出一个与intent相连的消息BROADCAST_WAP_PUSH
允许应用发出一个收到WAP PUSH的广播消息CALL_PHONE
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的拨打程序CALL_PRIVILEGED
允许应用启动一个用户确认电话被拨打而不通过拨打电话的用户界面的的任意号码的拨打,包括紧急号码.CAMERA
能够启动照相机设备的请求CHANGE_COMPONENT_ENABLED_STATE
允许应用去改变一个应用是否是激活状态CHANGE_CONFIGURATION
允许应用修改当前的配置,如本地设置CHANGE_NETWORK_STATE
允许应用改变网络的连接状态CHANGE_WIFI_MULTICAST_STATE
允许应用进入Wi-Fi的组播方式CHANGE_WIFI_STATE
允许应用改变Wi-Fi的连接状态CLEAR_APP_CACHE
允许应用清除所有安装在设备上的应用的缓存CLEAR_APP_USER_DATA
允许应用清除使用者的信息资料CONTROL_LOCATION_UPDATES
允许从广播设备来更新或不更新本地的消息DELETE_CACHE_FILES
允许应用删除掉缓存文件DELETE_PACKAGES
允许应用删除掉程序包DEVICE_POWER
允许低权限的访问电源管理项DIAGNOSTIC
允许应用诊断程序资源DISABLE_KEYGUARD
允许应用禁用键盘锁DUMP
允许应用从系统服务中恢复转储的信息EXPAND_STATUS_BAR
允许应用扩大或缩小状态栏FACTORY_TEST
如制造商测试的应用一样用终极权限用户运行FLASHLIGHT
允许访问手电筒FORCE_BACK
允许应用强制的返回操作而不论是不是最终的activityGET_ACCOUNTS
允许应用访问账目服务中的统计清单GET_PACKAGE_SIZE
允许应用查找出任何程序包使用的空间GET_TASKS
允许应用找到关于当前或最近运行的任务和在哪些acitivities里运行GLOBAL_SEARCH
这个权限可以被内容提供者用来允许使用全程搜索他们的数据HARDWARE_TEST
允许访问硬件及周边设备.INJECT_EVENTS
允许应用注入用户事件(键盘、触摸)到事件中然后提供给任意的窗口INSTALL_LOCATION_PROVIDER
允许应用安装一个位置提供商到位置管理器中INSTALL_PACKAGES
允许应用安装程序包.INTERNAL_SYSTEM_WINDOW
允许应用打开被部分系统用户接口使用的窗口INTERNET
允许应用打开网络套接口KILL_BACKGROUND_PROCESSES
允许应用去呼叫killBackgroundProcesses(String).方法MANAGE_ACCOUNTS
允许应用去管理帐户管理者中的重要清单MANAGE_APP_TOKENS
允许应用去管理(创建、销毁、顺序)在窗口管理者中的应用MASTER_CLEAR
 MODIFY_AUDIO_SETTINGS
允许应用修改全局音频设定MODIFY_PHONE_STATE
允许改变拨打电话的状态-电源等MOUNT_FORMAT_FILESYSTEMS
允许格式化可移除的存储仓库的文件系统MOUNT_UNMOUNT_FILESYSTEMS
允许装备或解除可移除的存储仓库的文件系统PERSISTENT_ACTIVITY
允许应用使它的activities更持久稳固PROCESS_OUTGOING_CALLS
允许应用监督、限定或终止呼出的电话READ_CALENDAR
允许应用读取用户的日历数据READ_CONTACTS
允许应用读取用户的联系人数据READ_FRAME_BUFFER
允许应用抓取屏幕和更多可获得的缓冲数据READ_HISTORY_BOOKMARKS
允许应用去读取(非写)用户浏览历史和书签READ_INPUT_STATE
允许应用去的当前键盘和控制的状态READ_LOGS
允许应用读取低级别的系统日志文件READ_OWNER_DATA
允许应用读取所有者的数据READ_PHONE_STATE
允许读取电话的状态READ_SMS
允许应用读取短信息.READ_SYNC_SETTINGS
允许应用读取同步的设置READ_SYNC_STATS
允许应用读取同步的统计数据REBOOT
重新启动设备的请求RECEIVE_BOOT_COMPLETED
允许应用接收在系统完成启动后发出的ACTION_BOOT_COMPLETED广播信息RECEIVE_MMS
允许应用去监听多媒体信息并记录和对起进行处理RECEIVE_SMS
允许应用去监听短消息并记录和对起进行处理RECEIVE_WAP_PUSH
允许应用监听WAP push信息RECORD_AUDIO
浏览 64345
浏览: 116941 次
来自: 北京
不错,谢谢!
在IE中不行啊
怎么属性没有遍历出来??
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 获取蓝牙数据的App 的文章

 

随机推荐