![Android安卓的蓝牙数据传输_第1页](http://file4.renrendoc.com/view/38c2bd8a99c46a8638692da3b1b9c11b/38c2bd8a99c46a8638692da3b1b9c11b1.gif)
![Android安卓的蓝牙数据传输_第2页](http://file4.renrendoc.com/view/38c2bd8a99c46a8638692da3b1b9c11b/38c2bd8a99c46a8638692da3b1b9c11b2.gif)
![Android安卓的蓝牙数据传输_第3页](http://file4.renrendoc.com/view/38c2bd8a99c46a8638692da3b1b9c11b/38c2bd8a99c46a8638692da3b1b9c11b3.gif)
![Android安卓的蓝牙数据传输_第4页](http://file4.renrendoc.com/view/38c2bd8a99c46a8638692da3b1b9c11b/38c2bd8a99c46a8638692da3b1b9c11b4.gif)
![Android安卓的蓝牙数据传输_第5页](http://file4.renrendoc.com/view/38c2bd8a99c46a8638692da3b1b9c11b/38c2bd8a99c46a8638692da3b1b9c11b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.8.想要开发一个通过蓝牙传输数据的安卓应用程序,理所当然你需要从安卓开发者的蓝牙页面开始,那里面详尽描述了所有必需的步骤,包括设备搜寻、配对、客户端/服务器套接字和RFCOMM通道等。嘿嘿别急,在开始讨论套接字和线程编程之前还需要先执行一个基础的蓝牙操作,让我们来考虑一个取巧的做法,基于安卓的一个最重要的特性:设备的默认蓝牙应用提供的由一个给定应用发送用户到另一个应用。这样做将由安卓系统会替我们完成所有底层工作。importandroid.bluetooth.BluetoothAdapter;//...//函数中代码//检查设备是否支持蓝牙<!--EndFragment-->BluetoothAdapterbtAdapter=BluetoothAdapter.getDefaultAdapter();2.if(btAdapter==null){//设备不支持蓝牙//告诉用户我们无能为力}以上是我们需要执行的第一次检查。完成之后,让我们看看它如何用我们的应用启动蓝牙。在过去的一篇关于手机短信编程的文章里,我们谈到关于隐式意图(ImplicitIntent)允许我们指定希望系统处理的动作。然后安卓会显示一个单选列表,列出所有能够完成我们要求的应用。下面是一段示例代码://启动Android选择器Intentintent=newIntent();intent.setAction(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file_to_transfer));//...startActivity(intent);在这段代码中,我们要求安卓系统发送一个文本文件。然后系统会显示所有已安装能够处理这一意图的活动列表,如下图所示:我们可以看到,这个基础蓝牙应用在这个列表的最上端。我们可以点击它,当然也可以让用户选择其他活动去完成传送。我想,如果我们增加一点用户友好体验,可以自动启动那个蓝牙应用,而不是简单地丢出一张列表甩在用户脸上,把它和其他不必要的应用鱼龙混杂在一起让用户玩找茬……要怎么做呢?一个办法是使用安卓的PackageManager,如下面代码所示://打开对应的列表PackageManagerpm=getPackageManager();ListappsList=pm.queryIntentActivities(intent,0);4.if(appsList.size()>0{6.//处理}PackageManger中的queryintentActivities()方法返回一个列表,其中内容正是我们前面看到的那张图中的所有选项,用迭代器遍历这个列表每个Resolveinf。对象里封装着我们需要的信息://选择蓝牙StringpackageName=null;StringclassName=null;4.booleanfound=false;5.for(ResolveInfoinfo:appsList){packageName=info.activityInfo.packageName;if(packageName.equals("com.android.bluetooth")){className=info.activityI;found=true;11.break;//找到,结束查找}}if(!found){Toast.makeText(this,R.string.blu_notfound_inlist,Toast.LENGTH_SHORT).show();//退出}这段代码之后,我们拥有了自动调用蓝牙活动的必要信息://设置启动蓝牙intentintent.setClassName(packageName,className);startActivity(intent);我们所做的是使用包和其对应的类(在前面检索到的)。我们会对上面的代码很好奇,可能不知道“com.android.bluetooth”包的类名。如果我们将其打印出来会看到这些:“com.broadcom.bt.app.opp.OppLauncherActivity“OPP代表对象推送模式,是允许无线共享文件的系统组件。看起来功德圆满了,但为了上述所有代码真正能够使用,蓝牙不仅仅需要设备支持也要由用户在设置里启用。那么我们想要做的第一件事情之一,就是要求用户启用蓝牙一段时间(有多长?我们认为必要的那么长,在这里是300秒):importandroid.bluetooth.BluetoothAdapter;//...3.//设备可被发现持续时间inalintDISCOVER_DURATION=300;2.//请求码<spanstyle="font-family:Calibri;"〉(requestcode),</span〉<spanstyle="font-family:宋体;"〉必须大于0</span〉<!--EndFragment--〉privatestaticfinalintREQUEST_BLU=1;//...publicvoidenableBlu(){//启动设备搜索——<spanstyle="font-family:Calibri;"〉</span〉<spanstyle="font-family:宋体;"〉这会自动启用蓝牙</span〉<!--EndFragment--〉Intentdiscoveryintent=newIntent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoveryIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,DISCOVER_DURATION);startActivityForResult(discoveryIntent,REQUEST_BLU);}一旦我们指定我们希望-从我们的活动得到一个返回值,调用startActivityForResult()用户会看到下面的对话框:现在每当活动结束后会返回请求码,即我们已送出的第二参数:REQUEST_BLU,同时返回数据和我们的主活动通过onActivityResult()方法返回的结果码。我们知道请求码,因此必须核对。至于结果代码?很简单:如果用户回答“否”,上述要求的权限(或如果出现一个错误),结果码将会是RESULT_CANCELED。相反地如果用户接受,蓝牙文档指出结果码等于这设备处于可被发现状态的(即DISCOVER_DURATION,即300)的持续时间。处理上述蓝牙对话框的代码如下://startActivityForResult执行完成...protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(resultCode==DISCOVER_DURATION&&requestCode==REQUEST_BLU){
7.8.//这里编写你的代码9.}10.else{//取消或出错Toast.makeText(this,R.string.blu_cancelled,Toast.LENGTH_SHORT).show();}1.<uses-permissionandroid:name="android.permission.BLUETOOTH"/><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"/>
好了,一切准备妥当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国鲜胶原蛋白数据监测研究报告
- 《词语梦想的价值》课件
- 【语文】《祝福》《林教头风雪山神庙》联读课件++2024-2025学年统编版高中语文必修下册
- 《HAZOP分析方法》课件
- 《办公自动化cha》课件
- 风险与收益课件图解
- 《劝学论证思路》课件
- 《银行业分析报告》课件
- 《求职面试模板》课件
- 《张唯美的动物摄影》课件
- 2025年湖南交通职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 江苏省南通市2025届高三第一次调研测试数学试题(南通一模)(含解析)
- 企业社会责任法律问题-深度研究
- 梅大高速塌方灾害调查评估报告及安全警示学习教育
- 福建省部分地市2025届高中毕业班第一次质量检测 生物试卷(含答案)
- 幼儿园2025年春季学期保教工作计划
- 2025云南中烟再造烟叶限责任公司招聘高频重点提升(共500题)附带答案详解
- DB13-T 6033-2024 半导体器件低浓度氢效应试验方法
- 《保利公司简介》课件
- 中药硬膏热贴敷治疗
- 医保药店员工培训管理制度
评论
0/150
提交评论