- 浏览: 235627 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
lliiqiang:
打开多个页面就没有办法同时提交了。
jsp 表单防止重复提交(简单版) -
mponeno:
check,只是判断空的,应该没什么所谓,用StringUti ...
java判断文件是否为图片 已图片后缀名为依据 -
puqingluochen:
源码能打包发给我吗,谢谢了。
Extjs Grid 编辑 新增 删除 保存 (爽) -
java麦克斯泰:
getJSONString()
这个方法都没调用 不是完整 ...
extjs tree异步加载 完整版 -
yehoubin:
你好,我的虚拟机上的是Mac OS X leopard的,可以 ...
iPad 和 iPhone Simulator Mac.OS.X.Leopard
- Stringurl=servRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
- StreamConnectionconn=(StreamConnection)Connector.open(url);
- DataOutputStreamdos=conn.openDataOutputStream();
- dos.writeUTF("XXXXXXXXXXXXX");
String url = servRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
StreamConnection conn = (StreamConnection)Connector.open(url);
DataOutputStream dos = conn.openDataOutputStream();
dos.writeUTF("XXXXXXXXXXXXX");
手机这边的Connetor.open()里面应该怎样写才可以跟其通讯?
J2ME里面,如果是客户端使用蓝牙,是通过一个预定义的接口DiscoveryListener实现的,要经过很多步骤才到Connector.open(url)这一步。这一步连接的实际是选定设备的选定服务。先说说接口。
这个接口涉及到4个函数需要实现。
第一个
deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
在每次发现了一个设备的时候会自动调用
第二个
inquiryCompleted(int discType)
在设备搜索已经结束的时候会自动调用
第三个
servicesDiscovered(int transID, ServiceRecord[] servRecord)
当选定好设备之后,想要搜索该设备提供的服务时,每寻找到一个服务,该方法就会自动调用
第四个
serviceSearchCompleted(int transID, int respCode)
当对该设备的服务搜寻完毕时会自动调用
除了DiscoveryListener接口之外,客户端连接还有几个类比较重要,第一是连接代理DiscoveryAgent,命令设备开始搜索周围设备的startInquiry(),命令开始搜索选定设备服务的searchService()都是通过它。第二是本地设备也就是这个客户端自己LocalDevice,连接代理就是通过它获得的。第三是RemoteDevice,就是具有蓝牙功能的周边设备。第四是SeviceRecord,就是设备所提供的服务,最后要连接的就是它。
当接口的那些方法都实现了之后,就可以通过ServiceRecord的getConnectionURL()获取连接,再通过(StreamConnection)Connector.open(url)打开连接,进行通话。
这里要提三个类,关于设备管理的,这3个类用来支持设备管理:
设备类: DeviceClass
一个DeviceClass对象代表一个设备的设备类(CoD),例如一个打印机或者一部电话。CoD包括一个主类,一个辅的类,和服务类型或服务类
本地设备类: LocalDevice
LocalDevice类标识了本地蓝牙设备。蓝牙应用程序和LocalDevice之间的关系是典型的一对一关系
远端设备类: RemoteDevice
一个RemoteDevice的实例代表了一个远端蓝牙设备。在一个蓝牙客户端应用程序可以进行服务,消费之前,它必须发送一个设备请求来发现远端设备。典型的蓝牙应用程序和远端设备之间的关系是一对多
关于UUID
先看下面的问题
打印机,还是其他什么设备。
..........
private UUID[] uuidSet;
private static final UUID ECHO_SERVER_UUID = new UUID(
"F0E0D0C0B0A000908070605040302010", false);
uuidSet = new UUID[2];
//标志我们的响应服务的UUID集合
uuidSet[0] = new UUID(0x1101);
uuidSet[1] = ECHO_SERVER_UUID;
..............
transIDs[i] = discoveryAgent.searchServices(null, uuidSet,
rd, this);
那个UUID数组什么意义。
UUID~就解释下他先
UUID是用户唯一ID标示,根据用户的唯一标示创建链接.
在蓝牙中,每个服务和服务属性都唯一地由"全球唯一标识符" (UUID)来校验。正如它的名字所暗示的,每一个这样的标识符都要在时空上保证唯一。UUID类可表现为短整形(16或32位)和长整形(128位)UUID。他提供了分别利用String和16位或32位数值来创建类的构造函数,提供了一个可以比较两个UUID(如果两个都是128位)的方法,还有一个可以转换一个UUID为一个字符串的方法。UUID实例是不可改变的(immutable),只有被UUID标示的服务可以被发现。
在Linux下你用一个命令uuidgen -t可以生成一个UUID值;在Windows下则执行命令uuidgen 。UUID看起来就像如下的这个形式:2d266186-01fb-47c2-8d9f-10b8ec891363。当使用生成的UUID去创建一个UUID对象,你可以去掉连字符。
关于如何识别一蓝牙设备是打印机,还是其他什么设备.可以参考相应API,设备管理的类里提供了相应的方法.至于更详细的部分,以及服务器怎样提供蓝牙服务等等,最好还是仔细看看J2ME提供的例程,这些例程在WTK安装目录下的apps里可以找到。
以下附上J2ME蓝牙开发的一点资料 J2ME开发无线蓝牙(Bluetooth)应用 (这个文章的原文地址我没找到)
防止那个网页丢失我转载下
应用于无线蓝牙技术标准的java APIs(JABWT),由JSR 82 规范定义,支持快速开发便捷、安全及用途广泛的蓝牙应用。无线设备生产商已对JABWT规范做出反应,他们宣布移动手机和其它产品将支持JABWT应用。
本文我们首先介绍在移动设备上进行java开发的基本原理,然后描述如何为蓝牙通讯编写java应用。
Java 蓝牙 API
Java蓝牙 API依赖java通用连接框架,一直一来这成为java 蓝牙API应用的一个局限。但是,人们建议将GCF加入到J2SE中。Java蓝牙API使得访问更多的系统成为可能。
Java蓝牙API定义了两个包:一个是Java蓝牙API的核心javax.bluetooth,另一个是用于对象交换协议的javax.obex(OBEX)。
根据JSR 82 规范,所有潜在蓝牙系统都必须支持蓝牙控制中心(BCC),该控制中心是一个控制面板,它的作用类似于可以让用户或OEM给堆栈中的某些配置参数定义具体值得应用程序,特别是,它将应用于堆栈初始化中。
任何蓝牙应用都有以下这些组件:堆栈初始化组件,设备管理组件,设备发现组件,服务发现组件和通讯组件。
堆栈初始化
在开始无线通讯之前,你需要以销售商预订的方式初始化蓝牙设备。(具体的堆栈初始化步骤超出了蓝牙API规范的范围。)
在一篇关于java与蓝牙技术起步的java.net文章中,Bruce Hopkins(java与蓝牙技术的作者)向我们介绍了在Atinav java蓝牙开发平台上是如何通过一系列设置完成初始化工作的。在JSR 82规范不包含这些调用,这一点很重要,因为其它的JSR82实现可能包括其它的初始化堆栈的方式。
设备管理
JSR82规范介绍了用于设备管理的两个类:LocalDevice 和 RemoteDevice。
LocalDevice 允许你请求获得蓝牙设备的静态信息。它依靠javax.bluetooth.DeviceClass类来获得设备类型和它所提供的服务类型。
RemoteDevice可用来获得蓝牙邻近区的设备信息(例如,某个远程蓝牙设备的地址)。它可以代表一台远程设备(例如,一台在可到达范围内的设备),并提供相应的方法来获得关于这台设备的有关信息,包括它的蓝牙地址和名称。
每个蓝牙设备有一个唯一的硬件地址,像计算机的MAC地址一样。你可以设定设备发现的级别,通过调用LocalDevice 对象中的setDiscoverable()方法可以使得其它蓝牙设备发现当前设备
设备发现
无线设备需要一种机制来允许它们发现其它的设备并访问它们的功能。核心蓝牙API的DiscoveryAgent 类和DiscoveryListener接口提供了需要的发现服务。有三种方式获得可访问设备列表。DiscoveryAgent.startInquiry()方法可将设备设置为查询模式,为了充分利用这种模式,应用必须要指定一个事件监听器来对与查询相关的事件作出反应。当查询完成或取消时,会调用DiscoveryListener.inquiryCompleted()方法。
如果一台设备不想等待发现其它的设备,可以使用DiscoveryAgent.retrieveDevices()方法来获得一个已经存在的列表。该方法或者返回一个在前面的查询中发现的设备列表,或者返回一个预知的设备列表,这些设备是由本地设备提前告诉蓝牙控制中心的它经常联系的设备。返回那种列表取决于传递的参数。最简单的一种方式,当检测到一台新的蓝牙设备时,对象需要使用DiscoveryAgent通过DiscoveryListener接口通知你。
服务发现
服务发现允许你发现附近的服务,而不管哪一台设备提供的该服务。DiscoveryAgent提供的方法可以用来发现蓝牙服务设备上的服务,并初始化服务发现事务。在服务可以被发现以前,必须首先在蓝牙服务设备上注册或广播该服务。服务设备负责完成很多任务,包括创建描述所提供的服务的服务记录,接受来自客户端的连接,向服务设备的服务发现数据库(SDDB)添加新的服务记录。总之,它的工作类似于web服务器。
通讯
两台设备必须共享通用的通讯协议才能通讯。为了应用能够访问更多的蓝牙服务,蓝牙java API提供了这样一个机制,它允许连接到使用RFCOMM, L2CAP, 或 OBEX协议的任何服务。如果服务使用了位于上面协议之上其它的协议(例如TCP/IP),只有在应用中利用CLDC通用连接框架实现额外的协议,才可以访问该服务。
用于服务记录的URL包括数字和符号,大体是这样的结构:
btspp://508031205080110F1B1B1D1C100:8。它的意思是客户应该使用蓝牙串口框架来建立到地址为508031205080110F1B1B1D1C100的设备的8号服务。设备地址和计算机的物理地址相似
发表评论
-
点阵字库在J2ME中的实现
2010-02-05 14:05 1169点阵字库在J2ME中的实现 关于点阵字库在J ... -
J2ME移植到ophone
2009-11-12 09:10 1043中国拥有世界最庞大的电信客户群,仅移动用户就达7亿,3G在中国 ... -
手机编程关于socket实例代码
2009-11-13 23:39 1195最近有很多网友也许是刚刚接触socket 这个套接字 协议通讯 ... -
KXML:J2ME中的XML语法分析利器
2009-11-19 15:19 1458Enhydra的KXML是一个只占 ... -
用J2ME实现简单电子邮件发送功能
2009-11-21 12:56 1039在GCF中并没有提供给我们能够发送电子邮件的API,J2ME的 ... -
J2ME 下的 Base64的编码与解码
2009-11-23 12:05 1253以前以为用J2EE里面的rt.jar 就能成功的引入到j2me ... -
五十音图
2009-11-27 11:34 1385日语的每个假名代表一 ... -
WM 注册表 常用设置
2010-01-21 17:36 35701、注册表内容 大致上可以分为四组 HKEY_CLASSES_ ... -
iPad 和 iPhone Simulator Mac.OS.X.Leopard
2010-01-29 17:13 14483这两天玩了玩 XP 系统 通过vmware 装个 Mac. ... -
J2ME开发模拟器KEmulator简介及使用
2010-01-17 16:23 3822j2me开发中少不了每天跟 ... -
J2ME 使用的字体 Font 类
2009-12-23 10:01 1296在J2ME手机编程中使用字体 在J2ME手机编程中,可以 ... -
J2ME 发短信 实例
2009-12-21 20:17 1955package com.wanchong.duanxin; ... -
j2me中的文件操作包JSR75入门讲解
2009-12-13 15:38 2172JSR 75(PDA Optional Packages fo ... -
J2ME 文件下载实例 jar包为例
2009-12-13 14:56 3344package com.wanchong; /** * 作者 ... -
J2ME 文件操作
2009-12-13 12:04 1707package com.dw.contactadapter.b ... -
J2ME 图片下载实例 简洁明了
2009-12-13 11:43 1357package com.wanchong; /** * 作者 ... -
J2ME文件上传实例(FileConnector链接文件系统,非RMS)
2009-12-13 11:36 1392客户端: import java.io.InputStre ... -
汉诺塔程序的j2me实现(触摸屏)
2009-09-05 01:01 1404汉诺塔程序的j2me实现(触摸屏) import javax ... -
手机触摸屏程序开发
2009-08-09 17:32 1879使用J2ME技术实现手机触摸屏开发的方法: 首先的修改调试 ... -
Socket模拟Http协议
2009-05-20 14:55 1515接收数据方法: /**/ /// <summ ...
相关推荐
"J2ME开发.pdf"可能包含J2ME的详细教程或者最佳实践,涵盖从基础语法到高级特性的讲解,包括UI设计(如Form和Canvas类)、数据持久化(RecordStore)、网络编程(HttpConnection和Socket)以及事件处理等。...
在实际开发中,例如,你可以创建一个简单的应用,让两台手机通过蓝牙互相发送文本消息。首先,设备搜索并建立连接,然后通过`DataOutputStream`写入消息,`DataInputStream`读取消息。 ### 9. 蓝牙API挑战 尽管JSR...
### 在J2ME中开发蓝牙无线软件的知识点详解 #### 一、引言 随着移动通信技术的发展,越来越多的移动设备开始支持Java软件。其中,Java 2 Micro Edition (J2ME) 因其轻量级特性而在移动设备上特别受欢迎。特别是针对...
这些IDE都支持J2ME开发插件,如NetBeans的Mobile and Embedded或者Eclipse的WTK(Wireless Toolkit)插件。这里以NetBeans为例,下载并安装NetBeans IDE,然后在插件管理器中搜索并安装Mobile and Embedded ...
【J2ME手机蓝牙聊天系统】是一个利用Java 2 Micro Edition (J2ME) 技术实现的移动设备间通信的应用。J2ME是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如手机和PDA。在这个系统中,用户可以通过手机的...
【标题】"j2me 蓝牙游戏 多人贪吃蛇"揭示了这是一个基于Java 2 Micro Edition (J2ME) 平台开发的蓝牙联机游戏,游戏的主题是多人同时参与的贪吃蛇游戏。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统的...
《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》...
J2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdf
这个名为"j2me蓝牙_客户端_服务端_类.rar"的压缩包文件包含了一个基于Java ME(J2ME)平台的蓝牙开发示例,涵盖了客户端、服务端以及相关的类。下面我们将深入探讨这些知识点。 首先,Java ME(Java 2 Micro ...
在这种情况下,游戏可能使用了MIDP (Mobile Information Device Profile) 和 CLDC (Connected Limited Device Configuration),它们是J2ME开发移动应用的常见组合。 游戏的核心是蓝牙通信。蓝牙是一种短距离无线...
J2ME游戏通常以JAR文件形式发布,可以通过WAP、蓝牙或红外线等方式在设备间传输。然而,由于不同设备间的差异,确保游戏在多平台上运行良好是一项挑战,需要对设备特性有深入了解。 **七、J2ME的局限与未来** 尽管...
### 知识点详解:精通J2me嵌入式开发 - 环境配置 #### 一、J2ME概述 ...以上内容涵盖了从J2ME开发环境的搭建到基本应用的创建和测试的全过程,对于初学者来说,是踏入J2ME嵌入式开发领域的良好起点。
J2ME 手机游戏开发环境配置 本文档为 J2ME 手机游戏开发环境配置指南,旨在帮助开发者快速搭建 J2ME 手机游戏开发环境,涵盖了从软件下载、环境安装到环境配置和 Helloworld 代码测试的所有步骤。 一、软件下载 ...
本章介绍了如何使用JBuilder2005和Eclipse搭建J2ME开发环境。 #### 高级用户界面 **4.1 高级用户界面设计概述** **4.1.1 MIDP用户界面概述** MIDP提供了基本的用户界面组件,用于构建应用程序的界面。 **4.1.2 ...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于开发小型设备,如手机、智能手表等嵌入式系统的应用程序。在本文中,我们将深入探讨J2ME手机游戏开发的基础知识。 首先,开发环境的配置至关重要。...
《J2ME蓝牙实战入门》文档主要介绍了如何利用Java Micro Edition (J2ME)平台中的JSR82规范来开发蓝牙应用。JSR82,全称为Java APIs for Bluetooth Wireless Technology,提供了一套API,使得开发者能够在支持蓝牙的...
标题中的“demo.rar_DEMO_j2me 蓝牙”表明这是一个关于Java ME(J2ME)平台上的蓝牙应用示例。J2ME是Java的一种轻量级版本,主要用于移动设备和嵌入式系统,例如早期的智能手机和平板电脑。这个压缩包可能包含了用于...
《基于J2ME蓝牙的手机与计算机通信系统设计》这篇毕业论文主要探讨了如何利用Java Micro Edition(J2ME)平台实现手机与计算机之间的无线通信,尤其是通过蓝牙技术进行数据交换。本文将深入解析该系统的设计原理、...
J2ME手机游戏开发详解--快速入门难点剖析商业案例光盘源码。本书是一本介绍J2ME无线开发的实训教程,面向具有基本J2ME无线开发基础的开发人员。本书通过7个典型的例子,从不同的方面分别介绍了J2ME游戏开发的实用...