- 浏览: 1504613 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
注册Recevier
IntentFilter audioStateFilter = new IntentFilter(); audioStateFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); audioStateFilter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); mReceiver = new VoiceDialerBroadcastReceiver(); registerReceiver(mReceiver, audioStateFilter);
取消Receiver
unregisterReceiver(mReceiver);
Receiver的实现
private class VoiceDialerBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1); if (false) Log.d(TAG, "HEADSET STATE -> " + state); if (state == BluetoothProfile.STATE_CONNECTED) { if (device == null) { return; } mBluetoothDevice = device; updateBluetoothParameters(true); } else if (state == BluetoothProfile.STATE_DISCONNECTED) { mBluetoothDevice = null; updateBluetoothParameters(false); } } else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) { int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1); int prevState = intent.getIntExtra(BluetoothProfile.EXTRA_PREVIOUS_STATE, -1); if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED && mWaitingForScoConnection) { // SCO channel has just become available. mWaitingForScoConnection = false; if (mWaitingForTts) { // still waiting for the TTS to be set up. } else { // we now have SCO connection and TTS, so we can start. mHandler.postDelayed(new GreetingRunnable(), FIRST_UTTERANCE_DELAY); } } else if (prevState == BluetoothHeadset.STATE_AUDIO_CONNECTED) { if (!mWaitingForScoConnection) { // apparently our connection to the headset has dropped. // we won't be able to continue voicedialing. if (false) Log.d(TAG, "lost sco connection"); mHandler.post(new ErrorRunnable( R.string.headset_connection_lost)); exitActivity(); } } } } }
蓝牙语音识别
mBluetoothHeadset.startVoiceRecognition(mBluetoothDevice); mBluetoothHeadset.stopVoiceRecognition(mBluetoothDevice);
mAdapter = BluetoothAdapter.getDefaultAdapter(); if (BluetoothHeadset.isBluetoothVoiceDialingEnabled(this) && mAdapter != null) { if (!mAdapter.getProfileProxy(this, mBluetoothHeadsetServiceListener, BluetoothProfile.HEADSET)) { Log.e(TAG, "Getting Headset Proxy failed"); } } mAdapter.closeProfileProxy(BluetoothProfile.HEADSET, mBluetoothHeadset);
private BluetoothProfile.ServiceListener mBluetoothHeadsetServiceListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (false) Log.d(TAG, "onServiceConnected"); mBluetoothHeadset = (BluetoothHeadset) proxy; List<BluetoothDevice> deviceList = mBluetoothHeadset.getConnectedDevices(); if (deviceList.size() > 0) { mBluetoothDevice = deviceList.get(0); int state = mBluetoothHeadset.getConnectionState(mBluetoothDevice); if (false) Log.d(TAG, "headset status " + state); // We are already connnected to a headset if (state == BluetoothHeadset.STATE_CONNECTED) { updateBluetoothParameters(true); return; } } updateBluetoothParameters(false); } public void onServiceDisconnected(int profile) { mBluetoothHeadset = null; } };
Detect the connection status of a paired Bluetooth headset to the phone. In Android 3.0 (API level 11) "BluetoothHeadset" class has "isAudioConnected()" method.
adapter = BluetoothAdapter.getDefaultAdapter(); adapter.getProfileProxy(context, mProfileListener, BluetoothProfile.HEADSET); private BluetoothProfile.ServiceListener mProfileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { mBluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { mBluetoothHeadset = null; } } };
Use mBluetoothHeadset to call the functions on BluetoothHeadset.java
Note: Audio Connection is different from Connection.
BluetoothProfile.ServiceListener b = new BlueToothListener(); boolean profileProxy = BluetoothAdapter.getDefaultAdapter() .getProfileProxy(Handler.bot, b, BluetoothProfile.HEADSET); public class BlueToothListener implements ServiceListener { public static BluetoothHeadset headset; public static BluetoothDevice bluetoothDevice; @Override public void onServiceDisconnected(int profile) {// dont care headset = null; } @Override public void onServiceConnected(int profile, BluetoothProfile proxy) {// dont care try { Debugger.test("BluetoothProfile onServiceConnected "+proxy); if (proxy instanceof BluetoothHeadset) headset = ((BluetoothHeadset) proxy); else// getProfileProxy(Handler.bot, b, BluetoothProfile.HEADSET); return;// ^^ => NEVER List<BluetoothDevice> connectedDevices = proxy .getConnectedDevices(); for (BluetoothDevice device : connectedDevices) { Debugger.log("BluetoothDevice found :" + device); bluetoothDevice = device; int connectionState = headset.getConnectionState(bluetoothDevice); Debugger.log("BluetoothHeadset connectionState "+connectionState);//2 == OK boolean startVoiceRecognition = headset .startVoiceRecognition(device); if (startVoiceRecognition) { Debugger .log("BluetoothHeadset init Listener OK"); return; } else Notify.popup("Bluetooth headset can't start speech recognition"); } } catch (Exception e) { // } } } }
.
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1490http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7576http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2637AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1185http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1691使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1260Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 984A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1307SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1198kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1027http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1044http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1678http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1158http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2347Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6049JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1226最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1298本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3185http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20867http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2010MyCar Recorder DailyRoads
相关推荐
《蓝牙炖锅CODE--V1.5:基于HC89F0421串口通信蓝牙模块详解》 在现代智能家居领域,蓝牙技术的应用日益广泛,尤其在智能厨房电器方面,蓝牙炖锅CODE--V1.5正是这样一个创新实例。这款设备通过采用HC89F0421串口通信...
1. **小程序API接口**:小程序为开发者提供了丰富的API接口,其中包括用于蓝牙操作的相关接口。这些接口允许小程序连接、扫描、管理和传输数据到蓝牙设备。例如,`wx.startBluetoothDevicesDiscovery()`用于启动蓝牙...
2. **蓝牙接口**:源码可能与特定的蓝牙库或API接口相关,例如`bluetooth_connection.h`或`ble_manager.java`,用于建立和管理蓝牙连接。 3. **测试用例**:为了验证校准效果,可能有多个测试用例文件,如`test_...
MIT App Inventor 蓝牙连接教程 MIT App Inventor 是一个基于 Blocks 编程语言的可视化开发平台,能够帮助用户快速开发移动应用程序。下面是使用 MIT App Inventor 实现蓝牙连接的详细教程。 一、硬件准备 在本...
MTK蓝牙通信模块可能包括了驱动程序、API接口、协议栈以及相关的应用程序示例,使得开发者能够轻松地将蓝牙功能集成到他们的MTK平台上。 在MTK蓝牙通信中,几个核心概念包括: 1. **蓝牙协议栈**:这是蓝牙通信的...
文件“蓝牙常用服务uuid及返回值”很可能包含了一些预定义服务的UUID以及在与这些服务交互时可能遇到的GATT状态码。这些信息对开发者来说是非常有价值的参考资源,可以用来快速定位问题,优化设备间的通信流程。 ...
DL.CODE是一款由DATALOGIC得利捷公司推出的高效、专业的配置软件,主要用于管理与配置其一系列产品。这款软件的最新版本为1.11.4,通过DL.CODE 1.11.4_Setup.exe安装文件,用户可以轻松地在自己的设备上安装并开始...
本主题探讨的是如何利用H5与蓝牙打印机进行交互,实现小票的无线打印功能。这一技术常用于餐饮、零售等需要快速、便捷打印服务的场景。 首先,我们要了解H5是如何连接蓝牙设备的。在H5中,我们通常借助Web ...
BluetoothKit是一款功能强大的Android蓝牙通信框架,支持经典蓝牙和低功耗蓝牙设备混合扫描,提供了一系列简单易用的接口用于低功耗蓝牙设备的连接,数据读写,通知等。 特点 一、支持经典蓝牙和BLE蓝牙...
CSR 蓝牙模块 Firmware 描述 CSR 蓝牙模块的 Firmware 描述是指蓝牙模块的固件描述,主要是各个模块功能的简单描述。以下是对蓝牙模块 CSR Firmware 的详细介绍。 蓝牙模块 Firmware 的种类可以分为四种:HCI ...
4. **Access Code**:每个基带信息包的开头部分,分为CAC(Common Access Code)、DAC(Directed Access Code)和IAC(Individual Access Code)。它们用于同步和识别信息包。 5. **ACK (Acknowledgement)**:确认...
3. **软件开发环境**:设置TI的IAR Embedded Workbench或CCS(Code Composer Studio)集成开发环境,以及蓝牙协议栈(SimpleLink SDK)的安装和配置。 4. **蓝牙配置和编程**:学习如何通过BLE API(Bluetooth Low ...
这个模块允许用户通过蓝牙设备(如智能手机或游戏手柄)与无人机进行交互,实现起飞、降落、前进、后退、左转、右转等基本飞行操作,甚至可能包含更复杂的动作如翻滚、悬停等。下面将详细讲解这个知识点。 首先,...
在教程的最后部分,可能还会涉及一些实际应用案例,例如如何利用蓝牙4.0 BLE实现智能家居控制、健康监护和运动监测等。案例中可能会展示如何通过编程实现特定功能,以及如何将这些功能集成到实际的硬件设备中。 总...
蓝牙4.0是蓝牙技术的一个重要版本,它引入了BLE标准,极大地降低了功耗,同时保持了与传统蓝牙的兼容性。BLE主要针对那些需要长时间电池寿命且数据传输需求相对较低的设备,如健康监测器、运动追踪器、智能家居设备...
至于文件名为“QR”的条目,这可能是指QR码数据或者与生成和打印QR码相关的代码文件。QR码(Quick Response Code)是一种二维条码,可以存储网址、文本、联系人信息等大量数据。生成QR码的库有很多,如Android的...
在"BM83 Example Code V1.0.1"中,我们可以找到一系列关于如何与BM83蓝牙模块交互的示例代码。这些代码通常包含了初始化模块、设置连接参数、建立和管理多个连接、收发数据等功能,对于开发者来说是非常宝贵的参考...
在Android平台上,蓝牙技术是设备间通信的重要方式,特别是在物联网(IoT)设备和移动设备交互的场景中。本文将详细解析如何实现Android蓝牙...通过深入理解这些概念和实践,可以更好地实现Android蓝牙设备的发现与连接。
在Android系统中,蓝牙(Bluetooth)是一个至关重要的无线通信技术,允许设备之间进行数据交换和通信。Android源代码中的蓝牙部分提供了对蓝牙功能的...同时,这对于解决蓝牙相关的bug、调试和性能优化也具有重要价值。