温十蓝牙怎么开启蓝牙

蓝牙卡使用须知及机动车通行路线温馨提示_云南财经大学保卫处
您现在的位置:
蓝牙卡使用须知及机动车通行路线温馨提示
作者: | 发布日期:
各位车主:
&&&&& 为保证您正确使用机动车蓝牙设备,掌握机动车出入学校各大门路线规定,减少学校各园区机动车穿行或停放带来的无序和混乱,保障校园交通安全有序。
&&&&& 现特将《机动车蓝牙设备使用须知》和《校区机动车通行路线说明》发给您,请您仔细阅读掌握,便于车辆出行。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&二〇一三年十二月十二日
机动车蓝牙设备使用须知
1、蓝牙设备为电子设备,由两块3V纽扣电池供电;无须太阳能供电。
2、蓝牙设备粘贴在车内后视镜后面挡风玻璃处,激活后正常使用。严禁自行拆卸或移动位置,一旦拆下,即刻失效。需重新安装激活后才能使用。
3、安装蓝牙设备后,进出大门时请减速慢行,尽量保持直行,确保蓝牙设备与门禁蓝牙感应器之间的信号传输。信号感应后,门禁蓝牙感应器上蓝色指示灯亮,同时二根蓝色横线闪烁,道闸自动升起,方可出入。
4、由于门禁系统和蓝牙设备为新装设备,如有感应不灵敏或蓝牙设备失效,经门岗确认后可手动放行。同时,请车主及时与保卫处或康园物管中心联系,对设备进行调整或更换。
联系电话:保卫处:239965
&&&&&&&&&&&&&&&&&&&&保卫处值班室电话:815110
&&&&&&&&&&&&&&&&&&&&&&康园物管中心办公室:
&&&&&&&&&&&&&&&&&&&&&下班后请拨打康园值班电话:110049
校区机动车通行路线说明
为规范校园交通秩序,确保校园道路通畅和行车安全。根据《云南财经大学校园交通安全管理规定(试行)》的有关规定,对校区机动车通行路线作如下说明:
一、校区大门位置分布:
1、南院东门(靠盘龙江)、南院西门(靠龙泉路)、南院北门(靠云大步行街);
2、北院西门(靠龙泉路)、北院南门(靠云大小区);
3、康园北门(靠月牙潭公园)、康园南门(靠秋园);
4、春园:仅有一道大门;
5、西区:西区东门(靠昆瑞西路)、西区南门(靠德哥饭店)。
二、机动车通行路线
1、学校公车:除康园地下车库外,校区所有大门通行。
2、居住在康园小区的住户车辆:
(1)小区内有车位的(含租用)住户:学校教职员工车辆除西区外所有大门通行(康园车库大门仅限车位所在车库开门);同时在西区有住房的可加开西区;外来购房户仅限康园(含车库)、南院所有大门通行;
(2)小区内无车位的(含租用)住户:学校教职员工车辆除康园、西区外所有大门通行;同时在西区有住房的可加开西区;外来购房户仅限南院所有大门通行。
3、居住在校区内的住户车辆:
(1)学校教职员工车辆:居住在南院、北院、春园的教职员工除康园、西区外所有大门通行,同时在西区有住房的可加开西区;西区教职员工车辆除康园外所有大门通行;
(2)教职员工家属、外单位进校接送领导上下班以及外来购房户车辆:仅限住户居住区校园大门通行;
(3)校内经营商户车辆:仅限经营商铺所在校区大门通行。
4、居住在校外非校区的教职员工及家属车辆:学校教职员工车辆除康园、西区外所有大门通行;离退休人员家属车辆仅限南院通行。
如有特殊情况和开门需要,请与学校保卫处和康园物管中心联系。
联系电话:保卫处:239965
&&&&&&&&&&&&&& 保卫处值班室电话:815110
&&&&&&&&&&&&&&&&康园物管中心办公室:
&&&&&&&&&&&&&&&&下班后请拨打康园值班电话: &11004935992人阅读
Android的原生应用分析(20)
& & & & 4.2的蓝牙打开流程这一部分还是有些变化的,从界面上看蓝牙开关就是设置settings里那个switch开关,widget开关当然也可以,起点不同而已,后续的流程是一样的。先来看systemServer.java的代码,蓝牙服务开启的地方,最后一个else分支是我们关心的,前两个是模拟器的一个测试模式的。
if (SystemProperties.get(&ro.kernel.qemu&).equals(&1&)) {
Slog.i(TAG, &No Bluetooh Service (emulator)&);
} else if (factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL) {
Slog.i(TAG, &No Bluetooth Service (factory test)&);
Slog.i(TAG, &Bluetooth Manager Service&);
bluetooth = new BluetoothManagerService(context);
ServiceManager.addService(BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE, bluetooth);
& & & & &暂且看下bluetoothManagerService的构造方法,代码有点多,我们只看两个地方,&loadStoredNameAndAddress()是读取蓝牙打开默认名称的地方,isBluetoothPersistedStateOn()是判断是否已打开蓝牙的,如果已打开,后续操作要执行开启蓝牙的动作,前面那几行注册广播其中就有这个作用。
BluetoothManagerService(Context context) {
...一些变量声明初始化...
IntentFilter filter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
filter.addAction(Intent.ACTION_USER_SWITCHED);
registerForAirplaneMode(filter);
mContext.registerReceiver(mReceiver, filter);
loadStoredNameAndAddress();
if (isBluetoothPersistedStateOn()) {
mEnableExternal =
& & & & 回到界面开关那个看得着的地方,界面上开关就是BluetoothEnabler.java这个类了,而setBluetoothEnabled()则是具体开关动作。看下代码
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Show toast message if Bluetooth is not allowed in airplane mode
if (isChecked &&
!WirelessSettings.isRadioAllowed(mContext, Settings.Global.RADIO_BLUETOOTH)) {
Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
// Reset switch to off
buttonView.setChecked(false);
if (mLocalAdapter != null) {
mLocalAdapter.setBluetoothEnabled(isChecked);
mSwitch.setEnabled(false);
这里在判断是飞行模式不知道为什么没有return,如果是飞行模式会有提示toast弹出,既然这样源码为什么还要执行下面打开流程呢,也许是个bug?不细究这个了,继续看setBluetoothEnabled()方法做什么了,很明显mLocalAdapter(LocalBluetoothAdapter )只是个过渡,里面的&mAdapter(BluetoothAdapter)才是真正的主角,代码如下:
public void setBluetoothEnabled(boolean enabled) {
boolean success = enabled
? mAdapter.enable() : mAdapter.disable();
if (success) {
setBluetoothStateInt(enabled
? BluetoothAdapter.STATE_TURNING_ON
: BluetoothAdapter.STATE_TURNING_OFF);
}& & & & 在BluetoothAdapter.java里可以看到一个单例模式的应用,主要提供给其它程序调用蓝牙的一些方法用的,外部程序想调用蓝牙的方法就要先用这个
拿到BluetoothAdapter对象,代码也简单看下吧,里面是典型的binder应用。
public static synchronized BluetoothAdapter getDefaultAdapter() {
if (sAdapter == null) {
IBinder b = ServiceManager.getService(BLUETOOTH_MANAGER_SERVICE);
if (b != null) {
IBluetoothManager managerService = IBluetoothManager.Stub.asInterface(b);
sAdapter = new BluetoothAdapter(managerService);
Log.e(TAG, &Bluetooth binder is null&);
}& & & & 此时我们更关心mAdapter.enable()的后续操作,外部其它应用到getDefaultAdapter()也是调用enable(),注意,到了BluetoothAdapter我们已经在framework层了,顺着BluetoothAdapter.java的enable()调用先回到BluetoothManagerService.java的enable(),再进一步来到BluetoothManagerService.java中的handleEnable()
方法,后面要跳转到新类了,贴出来一起看下,这部分好像不同版本还有些出入,不过核心的启动service是一样的,不影响理解。
private void handleEnable(boolean persist, boolean quietMode) {
&synchronized(mConnection) {
& & if ((mBluetooth == null) && (!mBinding)) {
& & & & //Start bind timeout and bind
& & & & Message timeoutMsg=mHandler.obtainMessage(MESSAGE_TIMEOUT_BIND);
& & & & mHandler.sendMessageDelayed(timeoutMsg,TIMEOUT_BIND_MS);
& & & & mConnection.setGetNameAddressOnly(false);
& & & & Intent i = new Intent(IBluetooth.class.getName());
& & & & if (!mContext.bindService(i, mConnection,Context.BIND_AUTO_CREATE,
& & & & & & & & & & & & & & & & & UserHandle.USER_CURRENT)) {
& & & & & & mHandler.removeMessages(MESSAGE_TIMEOUT_BIND);
& & & & & & Log.e(TAG, &Fail to bind to: & + IBluetooth.class.getName());
& & & & } else {
& & & & & & mBinding =
& & }&& & & &下面跑到哪个service里去了呢,在log信息里可以看到&ActivityManager: Start proc com.android.bluetooth for service com.android.bluetooth/.btservice.AdapterService:&
这样的信息,那就是去AdapterService里看看,里面一共有三个enable(),跳转关系不复杂,我们直接看最后一个关键的。
public synchronized boolean enable(boolean quietMode) {
enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
&Need BLUETOOTH ADMIN permission&);
if (DBG)debugLog(&Enable called with quiet mode status =
& + mQuietmode);
mQuietmode
Message m =
mAdapterStateMachine.obtainMessage(AdapterState.USER_TURN_ON);
mAdapterStateMachine.sendMessage(m);
}&状态机来了,状态转换图,从一个状态接受命令跳到另一个状态,因为我们是在开启蓝牙,所以先去的内部类offstate.java里面找,在这个分支USER_TURN_ON看到mAdapterService.processStart();在这里面可以看到蓝牙遍历下所支持的profile,最后又发出个带AdapterState.STARTED标识的消息
处理在同文件下面的代码里
case STARTED:
if (DBG) Log.d(TAG,&CURRENT_STATE=PENDING, MESSAGE = STARTED, isTurningOn=& + isTurningOn + &, isTurningOff=& + isTurningOff);
//Remove start timeout
removeMessages(START_TIMEOUT);
boolean ret = mAdapterService.enableNative();
if (!ret) {
Log.e(TAG, &Error while turning Bluetooth On&);
notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
transitionTo(mOffState);
sendMessageDelayed(ENABLE_TIMEOUT, ENABLE_TIMEOUT_DELAY);
看到那个enableNative()函数调用了吧,又要用到JNI了,稍微回头看下前面的代码,我们先从应用界面开关BluetoothEnabler走到framework的BluetoothAdapter,又回到package的adapterService,现在又要去JNI的C++代码了,往常一般是packages --&framework--&下面一层,这次顺序有些颠倒了,不过这不能影响我们跟踪代码,最后
还是要到下面去的。一起往下看吧。
& & & & 根据android JNI的函数命名惯例很容易找到enableNative对应的C++函数在packages/apps/Bluetooth/jni/com_android_bluetooth_btservice_AdapterService.cpp里面
static jboolean enableNative(JNIEnv* env, jobject obj) {
ALOGV(&%s:&,__FUNCTION__);
jboolean result = JNI_FALSE;
if (!sBluetoothInterface)
int ret = sBluetoothInterface-&enable();
result = (ret == BT_STATUS_SUCCESS) ? JNI_TRUE : JNI_FALSE;
代码瞬间简洁了不少,看来更多的故事还在下面,sBluetoothInterface这是什么,直接关系到下一步去哪的问题,看下变量声明,原来是
Const bt_interface_t *sBluetoothInterface = NULL; 再去找在哪初始化,搜索external目录可以找到//////
static const bt_interface_t bluetoothInterface = {
sizeof(bt_interface_t),
.............
start_discovery,
cancel_discovery,
create_bond,
remove_bond,
cancel_bond,
...............
};原来在这里,说下怎么找到,直接跳转是不成了,看这个文件夹下的mk文件,那里面有libhardware目录是编译的时候要用到,这个多半在hardware目录里,在这里面很快可以看到bluetooth.h,那里面有最我们要找的结构体定义,头文件找到了,再找同名C文件就快了,好了继续吧看下enable()里是怎么实现的
static int enable( void )
ALOGI(&enable&);
/* sanity check */
if (interface_ready() == FALSE)
return BT_STATUS_NOT_READY;
return btif_enable_bluetooth();
}又是一个新函数,直接跳转,比起刚才的寻觅这太幸福了
bt_status_t btif_enable_bluetooth(void)
BTIF_TRACE_DEBUG0(&BTIF ENABLE BLUETOOTH&);
if (btif_core_state != BTIF_CORE_STATE_DISABLED)
ALOGD(&not disabled\n&);
return BT_STATUS_DONE;
btif_core_state = BTIF_CORE_STATE_ENABLING;
/* Create the GKI tasks and run them */
bte_main_enable(btif_local_bd_addr.address);
return BT_STATUS_SUCCESS;
}忘了写路径了 好在可以直接跳转,下面是/external/bluetooth/bluedroid/main/bte_main.c,有点长,暂时只关心set_power那部分就好了,
void bte_main_enable(uint8_t *local_addr)
APPL_TRACE_DEBUG1(&%s&, __FUNCTION__);
........................
#if (defined (BT_CLEAN_TURN_ON_DISABLED) && BT_CLEAN_TURN_ON_DISABLED == TRUE)
APPL_TRACE_DEBUG1(&%s
Not Turninig Off the BT before Turninig ON&, __FUNCTION__);
/* toggle chip power to ensure we will reset chip in case
a previous stack shutdown wasn't completed gracefully */
bt_hc_if-&set_power(BT_HC_CHIP_PWR_OFF);
bt_hc_if-&set_power(BT_HC_CHIP_PWR_ON);
bt_hc_if-&preload(NULL);
.............................
路径在这里/external/bluetooth/bluedroid/hci/src/bt_hci_bdroid.c,看看set_power里面有什么,快到头了
static void set_power(bt_hc_chip_power_state_t state)
BTHCDBG(&set_power %d&, state);
/* Calling vendor-specific part */
pwr_state = (state == BT_HC_CHIP_PWR_ON) ? BT_VND_PWR_ON : BT_VND_PWR_OFF;
if (bt_vnd_if)
bt_vnd_if-&op(BT_VND_OP_POWER_CTRL, &pwr_state);
ALOGE(&vendor lib is missing!&);
}& & & & 这下又有新东西了bt_vnd_if,这个是什么,bt_vendor_interface_t *bt_vnd_if=NULL;和刚才的bt_interface_t 一样,我们希望可以找到它的初始化,那样就可以继续跟踪了,不过看到下面的代码和注释,在源码中我们要绝望了。路径:/external/bluetooth/bluedroid/hci/include/bt_vendor_lib.h
/* Entry point of DLib --
Vendor library needs to implement the body of bt_vendor_interface_t
structure and uses the below name as the variable name. HCI library
will use this symbol name to get address of the object through the
dlsym call.
extern const bt_vendor_interface_t BLUETOOTH_VENDOR_LIB_INTERFACE;
bt_vendor_interface_t *bt_vnd_if=NULL;
&google定义好了接口,具体实现要看vendor厂商来做了,这后面怎么实现就看各家芯片商怎么写了,肯定各有不同,而且这一部分代码一般是不会公开,当然授权购买后除外了。所以在4.2的源码中我们只跟到这里了,那后面会做什么呢,加载驱动和上电这两项肯定要有了,打开蓝牙没这两步怎么行,类似下面的字符串
static const char* BT_DRIVER_MODULE_PATH =
&/system/lib/modules/mbt8xxx.ko&;
static const char* BT_DRIVER_MODULE_NAME =
static const char* BT_DRIVER_MODULE_INIT_ARG = & init_cfg=&;
static const char* BT_DRIVER_MODULE_INIT_CFG_PATH = &bt_init_cfg.conf&;
在有类似下面的动作,insmod加载驱动,rfkill控制上下电,具体厂商具体做法也不同。
ret = insmod(BT_DRIVER_MODULE_PATH, arg_buf);
ret = system(&/system/bin/rfkill block all&);& & & &写到这,关于4.2源码的蓝牙打开流程就算结束了,比起4.1之前的代码感觉没有以前的直观,对于vendor那部分的代码大家只能看各自厂商的代码了,一般蓝牙开启后才会上电,这样也比较符合逻辑和节省电量,是否上电可以连上手机用adb shell看sys/class/rfkill目录下的state状态值,有些厂商会把蓝牙和wifi的上电算在一起,这个也是要注意的,小心误判。最后呢,这次文章写得有点仓促,写错的或遗漏地方希望朋友指出来,非常感谢。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:275324次
积分:2842
积分:2842
排名:第8029名
原创:40篇
评论:226条
(1)(1)(1)(1)(4)(1)(3)(4)(4)(4)(4)(3)(4)(6)戴尔vostro1400蓝牙如何开启_百度知道
戴尔vostro1400蓝牙如何开启
以下方法能打开蓝牙使用:先查看是否内置蓝牙模块,打开“设备管理器”-----是否有Bluetooth设备。再到官方下载蓝牙驱动。然后在计算机图标上右键选择“管理”,然后选择“服务和应用程序”——“服务”——找到bluetooth&service,bluetooth&support&service,print&spooler服务,分别双击这些服务打开,将这三个服务设定为“启动”或“自动”即可。笔记本如果没有开启蓝牙开关默认是找不到蓝牙设备的,蓝牙开关和无线开关是一个快捷键,根据机型不同可以在F1-F12中找一下,例如宏碁v5-471g笔记本(win7)是按Fn+F3的,开启蓝牙后就可以找到蓝牙设备了。电脑打开这个路径控制面板\硬件和声音\设备和打印机,点添加设备,这时蓝牙就启动在搜索蓝牙设备的了,当显示有设备的时候就点击,按着步骤来就能连接上了。
其他类似问题
为您推荐:
提问者采纳
你有蓝牙模块的话,打开网络管理,管理无线网络就有相关管理
提问者评价
com/support/drivers/cn/zh/cnbsd1/DriversHome/,建议您安装蓝牙驱动尝试./support/drivers/cn/zh/cnbsd1/DriversHome/您好?c=cn&s=bsd&cs=cnbsd1&l=zh" target="_blank">http。您需要登陆戴尔官网进行驱动下载:戴尔vostro1400蓝牙开启:<a href="http://www://www.dell:以下方法供您参考
来自团队:
您可能关注的推广
戴尔vostro1400的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Win8.1蓝牙功能怎么使用?蓝牙功能开启方法-电脑新手-办公/数码-壹聚教程网Win8.1蓝牙功能怎么使用?蓝牙功能开启方法
Win8.1系统的蓝牙功能打开与关闭与win7是一样的,我今天在使用笔记本的蓝牙发现是关了,那么要如何开启呢,下面一聚教程小编三星笔记本为例子,希望文章对各位会带来帮助呀。
1. 我们直接在电脑桌面状态时按照下键盘上的【WIN】+【C】打开.1系统的超级按钮。
2. 然后我们再进入到了超级按钮中找到【设置】如图所示。
3. 然后在进入到超级按钮中我们找到【更改电脑设置】点击进入,如下图所示。
4. 然后我们再找到&电脑设置&下面的【电脑和设备】如下图所示。
5. 现在我们会看到有一个【蓝牙】按钮了,如下图所示。
6.现在你就可以像手机中的开关一样打开它就可以了bluetooth:
7. 此时蓝牙即被开启,如下图所示:
1. 利用setings来操作,按下键盘上的【Fn】+【F1】 。
2.然后会进入到系统的&Settings&界面,如下图所示:
3. 然后在家seting界面我们点击【网络】选项。
4. 然后进入到了&网络&我们在右边找到【无线】按钮,点击它如下图所示。
5. 然后在这里就可以打开蓝牙了哦:
6. 此时蓝牙即被开启,如下图所示:
1. 我们在电脑桌面找到&计算机&或&这台电脑&。
2. 然后右击它在弹出菜单点击【管理】如下图所示。
3. 然后在弹出的界面我们点击左边的【设备管理器】如下图所示。
4. 然后我们点击如下图所示:
5. 现在我右击它然后在弹出菜单点击【启用】即可。
上一页: &&&&&下一页:相关内容thinkpad e555蓝牙怎么开启_百度知道
thinkpad e555蓝牙怎么开启
提问者采纳
这时候开蓝牙才能搜索到蓝牙耳机设备名字;硬件和声音&#92这样也可以使用蓝牙哦。我用的宏碁v5-471g款的笔记本。蓝牙耳机连接操作,点添加设备,这时蓝牙就启动在搜索蓝牙设备的了,音质不错,头戴式,电脑打开这个路径控制面板&#92,轻盈戴着也舒服,续航能力也很强:如我的雷柏s500一定是要在关着时,长按电源键不放,直到绿灯快速闪动,点击就能配对上了;设备和打印机,蓝牙连接用雷柏S500蓝牙耳机,听歌感觉挺好
来自团队:
其他类似问题
为您推荐:
thinkpad的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 win10怎么开启蓝牙 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信