- 浏览: 241103 次
- 性别:
- 来自: 广州
-
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
http://www.cyqdata.com/android/article-detail-53225#
如何实现Android蓝牙通信?一般通过使用蓝牙虚拟串口,可以通过配置非常简单地实现,很多外置蓝牙GPS都用这种做法。
然而Android却不支持,因此不得不得使用第二种方式:蓝牙socket。
本示例不使用C++开发,借助于第三方.NET组件inthehand来实现。
手机端的初始化代码。其中的具体含义可参照http://android.tgbus.com/Android/tutorial/201103/346657.shtml。
private PrintStream mPrintStream = null;
private BufferedReader mBufferedReader = null;
BluetoothAdapter myBluetoothAdapter = null;
BluetoothServerSocket mBThServer = null;
BluetoothSocket mBTHSocket = null;
myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
myBluetoothAdapter.enable();//open bth
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//使得蓝牙处于可发现模式,持续时间150s
discoverableIntent.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 150);
下面是PC上的初始化核心代码:PC是作为客户端出现的。它需要通过搜索获取手机的蓝牙MAC地址,实现通信。GUID又名UUID,是标记硬件地址的一种方法。
/// <summary>
/// 打开端口
/// </summary>
/// <param name="Name">端口名称</param>
/// <returns>成功否</returns>
public bool OpenPort(string Name)
{
InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.Connectable;
InTheHand.Net.Sockets.BluetoothClient cli = new InTheHand.Net.Sockets.BluetoothClient();
InTheHand.Net.Sockets.BluetoothDeviceInfo[] devices = cli.DiscoverDevices();
foreach (InTheHand.Net.Sockets.BluetoothDeviceInfo device in devices)//设备搜寻
{
device.Update();
device.Refresh();
MessageBox.Show("设备已找到");
break;
}
BluetoothDeviceInfo bd = new BluetoothDeviceInfo(devices[0].DeviceAddress);
bluetoothClient = new BluetoothClient();
Guid mGUID = Guid.Parse("fa87c0d0-afac-11de-8a39-0800200c9a66");
bluetoothClient.Connect(devices[0].DeviceAddress, mGUID);//客户端对地址实现连接,这是一个阻塞线程,需要服务器端的回应
ReceiveThread = new Thread(ReceiveMethod);
ReceiveThread.Start();
return true;
}
下面是手机接受PC端连接请求的方法:
1 if (connected)
2 {
3 return;
4 }
5 try
6 {
7 mBThServer = myBluetoothAdapter
8 .listenUsingRfcommWithServiceRecord(NAME_SECURE,
9 MY_UUID_SECURE);
10 } catch (IOException e)
11 {
12 // TODO Auto-generated catch block
13 e.printStackTrace();
14 }
15
16 try
17 {
18 mBTHSocket = mBThServer.accept();
19 } catch (IOException e)
20 {
21 // TODO Auto-generated catch block
22 e.printStackTrace();
23 }
24 try
25 {
26 mBufferedReader = new BufferedReader(new InputStreamReader(
27 mBTHSocket.getInputStream()));
28 } catch (IOException e1)
29 {
30 // TODO Auto-generated catch block
31 e1.printStackTrace();
32 }// 取得输入、输出流
33 try
34 {
35 mPrintStream = new PrintStream(
36 mBTHSocket.getOutputStream(), true);
37 connected = true;
38 } catch (IOException e)
39 {
40 // TODO Auto-generated catch block
41 e.printStackTrace();
42 }
要通过手机发送数据,执行以下代码即可:
mPrintStream.write(buff);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}// 发送给服务器
mPrintStream.flush();
PC端的接受代码:
while (isConnecting)
{
try
{
Stream peerStream = bluetoothClient.GetStream();
peerStream.Read(buffer, 0, PACKETLENGTH);
//dataprocess();
}
catch (Exception ex)
{
isConnecting = false;
MessageBox.Show(ex.ToString());
}
以下有几个需要注意事项:
1:inthehand.net.personal是PC端上一定要用得到的库,但注意这个库函数的版本,版本弄错了是很浪费时间的。
2:手机设备的蓝牙硬件权限要打开,否则就没法运行。
如何实现Android蓝牙通信?一般通过使用蓝牙虚拟串口,可以通过配置非常简单地实现,很多外置蓝牙GPS都用这种做法。
然而Android却不支持,因此不得不得使用第二种方式:蓝牙socket。
本示例不使用C++开发,借助于第三方.NET组件inthehand来实现。
手机端的初始化代码。其中的具体含义可参照http://android.tgbus.com/Android/tutorial/201103/346657.shtml。
private PrintStream mPrintStream = null;
private BufferedReader mBufferedReader = null;
BluetoothAdapter myBluetoothAdapter = null;
BluetoothServerSocket mBThServer = null;
BluetoothSocket mBTHSocket = null;
myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
myBluetoothAdapter.enable();//open bth
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//使得蓝牙处于可发现模式,持续时间150s
discoverableIntent.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 150);
下面是PC上的初始化核心代码:PC是作为客户端出现的。它需要通过搜索获取手机的蓝牙MAC地址,实现通信。GUID又名UUID,是标记硬件地址的一种方法。
/// <summary>
/// 打开端口
/// </summary>
/// <param name="Name">端口名称</param>
/// <returns>成功否</returns>
public bool OpenPort(string Name)
{
InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio.Mode = InTheHand.Net.Bluetooth.RadioMode.Connectable;
InTheHand.Net.Sockets.BluetoothClient cli = new InTheHand.Net.Sockets.BluetoothClient();
InTheHand.Net.Sockets.BluetoothDeviceInfo[] devices = cli.DiscoverDevices();
foreach (InTheHand.Net.Sockets.BluetoothDeviceInfo device in devices)//设备搜寻
{
device.Update();
device.Refresh();
MessageBox.Show("设备已找到");
break;
}
BluetoothDeviceInfo bd = new BluetoothDeviceInfo(devices[0].DeviceAddress);
bluetoothClient = new BluetoothClient();
Guid mGUID = Guid.Parse("fa87c0d0-afac-11de-8a39-0800200c9a66");
bluetoothClient.Connect(devices[0].DeviceAddress, mGUID);//客户端对地址实现连接,这是一个阻塞线程,需要服务器端的回应
ReceiveThread = new Thread(ReceiveMethod);
ReceiveThread.Start();
return true;
}
下面是手机接受PC端连接请求的方法:
1 if (connected)
2 {
3 return;
4 }
5 try
6 {
7 mBThServer = myBluetoothAdapter
8 .listenUsingRfcommWithServiceRecord(NAME_SECURE,
9 MY_UUID_SECURE);
10 } catch (IOException e)
11 {
12 // TODO Auto-generated catch block
13 e.printStackTrace();
14 }
15
16 try
17 {
18 mBTHSocket = mBThServer.accept();
19 } catch (IOException e)
20 {
21 // TODO Auto-generated catch block
22 e.printStackTrace();
23 }
24 try
25 {
26 mBufferedReader = new BufferedReader(new InputStreamReader(
27 mBTHSocket.getInputStream()));
28 } catch (IOException e1)
29 {
30 // TODO Auto-generated catch block
31 e1.printStackTrace();
32 }// 取得输入、输出流
33 try
34 {
35 mPrintStream = new PrintStream(
36 mBTHSocket.getOutputStream(), true);
37 connected = true;
38 } catch (IOException e)
39 {
40 // TODO Auto-generated catch block
41 e.printStackTrace();
42 }
要通过手机发送数据,执行以下代码即可:
mPrintStream.write(buff);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}// 发送给服务器
mPrintStream.flush();
PC端的接受代码:
while (isConnecting)
{
try
{
Stream peerStream = bluetoothClient.GetStream();
peerStream.Read(buffer, 0, PACKETLENGTH);
//dataprocess();
}
catch (Exception ex)
{
isConnecting = false;
MessageBox.Show(ex.ToString());
}
以下有几个需要注意事项:
1:inthehand.net.personal是PC端上一定要用得到的库,但注意这个库函数的版本,版本弄错了是很浪费时间的。
2:手机设备的蓝牙硬件权限要打开,否则就没法运行。
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1107本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 973在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 952http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 896android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1168http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 957http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1193http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 935Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2674import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2827Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1352我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1415MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1857一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1109创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1843Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1295Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1215http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1046android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1244在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2108最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
总之,“基于蓝牙Socket通讯的聊天室”是一个结合了蓝牙通信、Socket编程和Android应用开发的综合项目。它不仅涉及到硬件层面的蓝牙连接,还涵盖了软件层面的网络编程和用户界面设计,对于提升开发者在移动设备间的...
在Android或Java开发中,实现蓝牙Socket通信通常需要以下步骤: 1. **初始化蓝牙适配器**:获取系统的蓝牙适配器,并检查蓝牙功能是否可用。 2. **搜索蓝牙设备**:遍历附近的蓝牙设备,并根据需要进行设备匹配。 3....
5. **蓝牙服务和UUID**:蓝牙通信通常基于特定的服务,每个服务有一个唯一的UUID。`BluetoothGatt`是用于GATT(Generic Attribute Profile)服务的接口,适用于BLE(Bluetooth Low Energy)设备。对于经典蓝牙,一般...
综上所述,这个范例涵盖了Android蓝牙通信的基础,对于想要学习如何在Android应用中使用蓝牙功能的开发者来说非常有价值。通过深入理解这些知识点,你可以创建自己的蓝牙应用,实现设备之间的数据交换。
Android通过socket套接字实现网络连接,通过ip地址和ip端口实现访问服务器,从而实现客户端和服务器的连接,然后实现两者数据的互连
这个"Android蓝牙socket应用编程-心电图-动态折线图demo"涵盖了几个关键的知识点,让我们逐一深入探讨。 首先,**蓝牙协议**是实现设备间无线通信的基础。Android支持蓝牙低功耗(Bluetooth Low Energy, BLE)和...
在Android平台上,实现设备间的通信可以通过多种方式,如Wi-Fi直连、Wi-Fi热点、USB、NFC等,但这里...通过深入理解和实践这个示例,开发者可以掌握Android蓝牙通信的核心技术,为开发自己的蓝牙应用打下坚实的基础。
蓝牙通信在Android手机间的应用是移动设备之间进行无线数据传输的一种常见方式。通过蓝牙技术,两部Android手机可以实现文件共享、数据同步、游戏交互等多种功能。本文将深入探讨如何在Android平台上实现蓝牙通信,...
【C#与Android之间的蓝牙通信】是移动设备间交互的重要技术之一,特别是在物联网(IoT)和嵌入式系统中广泛应用。本示例是通过C#编写的应用程序与Android设备进行蓝牙连接,实现数据传输,如图片、语音和文字等。这种...
在Android平台上进行蓝牙通信是一项常见的...总的来说,构建Android蓝牙通信系统涉及多个步骤,包括设备发现、连接建立、数据传输和错误处理。通过客户端和服务端的协同工作,可以在Android设备间实现可靠的蓝牙通信。
在Android平台上进行应用程序开发时,Android Studio是Google官方推荐的...通过深入研究和理解这个BTClient Demo,开发者可以掌握Android蓝牙通信的基本原理和实践技巧,为自己的应用添加蓝牙通信功能打下坚实基础。
Android蓝牙开发涉及的主要API是BluetoothAdapter和BluetoothSocket。BluetoothAdapter负责管理设备的蓝牙功能,包括开启、关闭蓝牙,搜索其他蓝牙设备等。而BluetoothSocket则用于建立和管理蓝牙连接,进行数据的...
总的来说,"基于Android的手机蓝牙通信软件"项目涵盖了蓝牙设备的发现、连接建立、数据传输和异常处理等多个方面,对于理解Android蓝牙编程具有很好的实践意义。开发者不仅需要熟悉Android的蓝牙API,还要掌握网络...
本文将基于"Android蓝牙通信简单实例"这个话题,详细解释如何实现蓝牙的开启、搜索、配对、连接以及数据传输。 首先,Android的蓝牙功能主要通过`BluetoothAdapter`类来操作。`BluetoothAdapter.getDefaultAdapter...
"基于Android蓝牙无线通信系统的实现" 以下是基于Android蓝牙无线通信系统的实现中所涉及到的知识点: 一、Android蓝牙无线通信系统的基本概念 * 蓝牙技术是近距离无线通信技术,能够在短距离内进行数据交换 * ...
在Android Studio中实现手机蓝牙串口通信是一项常见的任务,尤其对于开发物联网(IoT)应用或者需要设备间无线数据传输的项目来说。本项目提供的"android_studio手机蓝牙串口通信源代码"就是一个很好的起点,它能帮助...
在Android平台上开发串口上位机程序,集成WiFi和蓝牙通信功能是一项常见的需求,尤其在物联网(IoT)和嵌入式系统中。这个程序设计允许Android设备作为客户端,通过WiFi或蓝牙与服务器端模块进行数据交互。下面将详细...
总的来说,"android蓝牙通信demo"是一个展示如何在Android应用中使用蓝牙进行数据传输的实例,它涵盖了蓝牙设备的搜索、连接、数据发送和接收等核心步骤。通过学习和实践这个Demo,开发者能够掌握Android蓝牙通信的...
通过这个项目,开发者可以深入理解Android蓝牙通信的原理和实践,为构建其他蓝牙应用场景如智能家居、物联网设备控制等打下基础。同时,项目也提供了良好的示例代码,有助于初学者快速上手蓝牙编程。
在搜索到目标设备后,通过`createRfcommSocketToServiceRecord()`方法创建一个RFCOMM(串行端口协议)socket,这是蓝牙通信的标准协议。 客户端的角色是发起连接请求的一方。在找到服务端设备后,使用`...