废话不多说,直接阐述:

  前段时间在搞一个android项目,其中有一个功能要求需要蓝牙可见性永久打开,但是开发过android蓝牙的程序员应该都知道,goole提供的api中没有设置蓝牙永久可见性的接口,但是在实际的项目中的确需要用到这个功能,所以这就难为到楼主了,楼主开始百度各种资料,查阅api,然后找到下边一种可以设置蓝牙可见性时间的函数:

Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoveryIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
startActivity(discoveryIntent);

这个可以在android api中查询到,里边是这样描述这个接口的:

意思大约则是这个常量作用是可以打开蓝牙,并且设置可见模式,默认的为了保护隐私,设置为不可见的,但是可以在intent中传入字段EXTRA_DISCOVERABLE_DURATION来请求可发现的持续时间。目前,默认持续时间为120秒,每个请求的最长持续时间为300秒。因此,这个方法最多一次只能显示300秒,如果想要永久打开可见性,可以开一个线程,然后每300秒后执行下上述的代码,但是执行这块代码的同时,会在app中向用户显示打开蓝牙可见性,这样的话用户体验则较差,那有没有其他的办法呢?在后台默默的打开,然后永久可见。答案当然是有的,这时候我们就要去看下BluetoothAdapter的源代码了。

   在源代码中,我们可以看到有这样一个函数:

  这个函数的功能就是设置蓝牙可见性持续的时间。    

  但是这个函数会发现在api文档中找不到,原因是goole将其隐藏掉了,但是这个函数仍然是可以调用的,调用的方式可能和普通的不一样,不能够直接调用,需要使用java的反射机制,二话不说上代码:

            //声明一个class类
       Class serviceManager = null;
try {
         //得到这个class的类
serviceManager = Class.forName("android.bluetooth.BluetoothAdapter");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
       //声明一个方法
Method method = null;
try {
         //得到指定的类中的方法
method = serviceManager.getMethod("setDiscoverableTimeout", String.class);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
         //调用这个方法
method.invoke(serviceManager.newInstance(), 30);//根据测试,发现这一函数的参数无论传递什么值,都是永久可见的
} catch (Exception e) {
e.printStackTrace();
}

android中通过代码来设置蓝牙永久可见性的更多相关文章

  1. 【原创】如何在Android中为TextView动态设置drawableLeft等

    如何在Android中为TextView动态设置drawableLeft等   两种方式:   方式1:手动设置固有边界 Drawable drawable = getResources().getD ...

  2. android中ColorStateList及StateListDrawable设置Selector

    写过android的代码相信大家对Selector并不陌生吧,下面来看看这段xml文件是如何定义的 <?xml version="1.0" encoding="ut ...

  3. Android中通过反射来设置Toast的显示时间

    这个Toast的显示在Android中的用途还是非常大的,同一时候我们也知道toast显示的时间是不可控的.我们仅仅能改动他的显示样式和显示的位置,尽管他提供了一个显示时间的设置方法.可是那是没有效果 ...

  4. Android中字体颜色的设置

    1.在Android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 public static final class color {     public static final ...

  5. android中在代码中设置margin属性

    1,不多说,小知识点,直接上代码 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(15, 15);// 创 ...

  6. android中对Bitmap图片设置任意角为圆角

    http://blog.csdn.net/l448288137/article/details/48276681 最近项目开发中使用到了圆角图片,网上找到的圆角图片控件大多比较死板,只可以全圆角.其中 ...

  7. 关于那些Android中不常用的设置属性

    很多在manifest中的属性我们经常遗忘了它们,或者经常看到但又不是很明白它的作用.那么在这里我就拿了一些属性简单的解释一下,防止以后碰到却不知道其中的意思.不是很全,以后会断断续续的补充吧 一.a ...

  8. Android开发 从代码里设置Drawable图片不显示的问题

    问题描述 我们从代码里获得Drawable在设置给View时会发现,图片不显示的问题.比如如下代码: Drawable drawable = getResources().getDrawable(R. ...

  9. Android中通过代码获取arrays.xml文件中的数据

    android工程res/valuse文件夹下的arrays.xml文件中用于放各种数组数据,比如字符串数组.整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用,下面针对这两种情况通过 ...

随机推荐

  1. gns3 接口说明 转

    Dynamips 支持的模块首先从C7200 开始Slot 0:C7200-IO-FE <------> 支持1 个Fastethernet 接口C7200-IO-2FE <---- ...

  2. iOS:创建静态库及其使用

    本篇来自转载,原创链接为:http://my.oschina.net/leejan97/blog/284193 摘要: 静态库文件可以有效的将功能封装和细节隐藏  ios 静态库 static lib ...

  3. 【转载】【Todo】Nodejs的优缺点

    Nodejs的优缺点,这里面讲的比较详细.有时间可以多看看别人的分析. https://www.zhihu.com/question/19653241 Node.js 的架构与 Django, Rai ...

  4. Yii2系列教程五:简单的用户权限管理

    上一篇文章讲了用户的注册,验证和登录,这一篇文章按照约定来说说Yii2之中的用户和权限控制. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做. 鉴于本教 ...

  5. What most young programmers need to learn

    In the past 7.5 years I have supervised over a dozen programming interns at Ronimo and have seen hun ...

  6. Android Exception 16(Error in ADT 23 Update)

    http://stackoverflow.com/questions/24445367/error-in-adt-23-update http://stackoverflow.com/question ...

  7. GCM与C2DM相比有什么不同

    eoe介绍:http://wiki.eoe.cn/page/Migration.html 官方地址:http://developer.android.com/google/gcm/c2dm.html

  8. 【Java】Java_10 常量与变量

    1.变量(variable) 1.1 我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定! 1.2 Java是一种强类型语言,每个变量都必须声明其 ...

  9. ros下基于百度语音的,语音识别和语音合成

    代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...

  10. Python实时语音识别控制

    代码地址如下:http://www.demodashi.com/demo/12946.html Python实时语音识别控制 概述 本文中的语音识别功能采用 百度语音识别库 ,首先利用 PyAudio ...