`
wanchong998
  • 浏览: 235627 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

J2me蓝牙打印开发

    博客分类:
  • J2me
阅读更多
Java代码
  1. Stringurl=servRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
  2. StreamConnectionconn=(StreamConnection)Connector.open(url);
  3. DataOutputStreamdos=conn.openDataOutputStream();
  4. 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

先看下面的问题

JavaEye初级会员nj_first 写道
最近要写一个功能,将手机中的信息在蓝牙打印机上输出。可有不甚了解,在手机上我如何识别一蓝牙设备是
打印机,还是其他什么设备。

..........

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)应用 (这个文章的原文地址我没找到)

防止那个网页丢失我转载下

J2ME开发无线蓝牙(Bluetooth)应用
越来越多的移动手机开始支持java应用,但是你知道吗? 很多其它设备也可以运行java 2微型版(J2EE)的应用。

应用于无线蓝牙技术标准的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开发 J2ME开发 J2ME开发

    "J2ME开发.pdf"可能包含J2ME的详细教程或者最佳实践,涵盖从基础语法到高级特性的讲解,包括UI设计(如Form和Canvas类)、数据持久化(RecordStore)、网络编程(HttpConnection和Socket)以及事件处理等。...

    J2ME蓝牙编程 J2ME蓝牙编程

    在实际开发中,例如,你可以创建一个简单的应用,让两台手机通过蓝牙互相发送文本消息。首先,设备搜索并建立连接,然后通过`DataOutputStream`写入消息,`DataInputStream`读取消息。 ### 9. 蓝牙API挑战 尽管JSR...

    在J2ME中开发蓝牙无线软件

    ### 在J2ME中开发蓝牙无线软件的知识点详解 #### 一、引言 随着移动通信技术的发展,越来越多的移动设备开始支持Java软件。其中,Java 2 Micro Edition (J2ME) 因其轻量级特性而在移动设备上特别受欢迎。特别是针对...

    J2ME移动开发平台搭建步骤.rar_J2ME 蓝牙_j2me_java平台_开发平台

    这些IDE都支持J2ME开发插件,如NetBeans的Mobile and Embedded或者Eclipse的WTK(Wireless Toolkit)插件。这里以NetBeans为例,下载并安装NetBeans IDE,然后在插件管理器中搜索并安装Mobile and Embedded ...

    j2me 手机蓝牙聊天系统

    【J2ME手机蓝牙聊天系统】是一个利用Java 2 Micro Edition (J2ME) 技术实现的移动设备间通信的应用。J2ME是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如手机和PDA。在这个系统中,用户可以通过手机的...

    j2me 蓝牙游戏 多人贪吃蛇

    【标题】"j2me 蓝牙游戏 多人贪吃蛇"揭示了这是一个基于Java 2 Micro Edition (J2ME) 平台开发的蓝牙联机游戏,游戏的主题是多人同时参与的贪吃蛇游戏。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统的...

    《J2ME手机游戏开发技术详解》

    《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》《J2ME手机游戏开发技术详解》...

    J2ME蓝牙编程.pdf

    J2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdfJ2ME蓝牙编程.pdf

    很不错的蓝牙开发Demo/j2me蓝牙_客户端_服务端_类.rar

    这个名为"j2me蓝牙_客户端_服务端_类.rar"的压缩包文件包含了一个基于Java ME(J2ME)平台的蓝牙开发示例,涵盖了客户端、服务端以及相关的类。下面我们将深入探讨这些知识点。 首先,Java ME(Java 2 Micro ...

    J2ME蓝牙版飞机大战游戏

    在这种情况下,游戏可能使用了MIDP (Mobile Information Device Profile) 和 CLDC (Connected Limited Device Configuration),它们是J2ME开发移动应用的常见组合。 游戏的核心是蓝牙通信。蓝牙是一种短距离无线...

    J2ME手机游戏开发毕业论文

    J2ME游戏通常以JAR文件形式发布,可以通过WAP、蓝牙或红外线等方式在设备间传输。然而,由于不同设备间的差异,确保游戏在多平台上运行良好是一项挑战,需要对设备特性有深入了解。 **七、J2ME的局限与未来** 尽管...

    精通J2me嵌入式开发-环境配置.pdf

    ### 知识点详解:精通J2me嵌入式开发 - 环境配置 #### 一、J2ME概述 ...以上内容涵盖了从J2ME开发环境的搭建到基本应用的创建和测试的全过程,对于初学者来说,是踏入J2ME嵌入式开发领域的良好起点。

    J2me手机游戏开发环境配置.pdf

    J2ME 手机游戏开发环境配置 本文档为 J2ME 手机游戏开发环境配置指南,旨在帮助开发者快速搭建 J2ME 手机游戏开发环境,涵盖了从软件下载、环境安装到环境配置和 Helloworld 代码测试的所有步骤。 一、软件下载 ...

    j2me手机游戏开发技术详解

    本章介绍了如何使用JBuilder2005和Eclipse搭建J2ME开发环境。 #### 高级用户界面 **4.1 高级用户界面设计概述** **4.1.1 MIDP用户界面概述** MIDP提供了基本的用户界面组件,用于构建应用程序的界面。 **4.1.2 ...

    j2me手机游戏开发基础

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于开发小型设备,如手机、智能手表等嵌入式系统的应用程序。在本文中,我们将深入探讨J2ME手机游戏开发的基础知识。 首先,开发环境的配置至关重要。...

    J2ME蓝牙实战入门.doc

    《J2ME蓝牙实战入门》文档主要介绍了如何利用Java Micro Edition (J2ME)平台中的JSR82规范来开发蓝牙应用。JSR82,全称为Java APIs for Bluetooth Wireless Technology,提供了一套API,使得开发者能够在支持蓝牙的...

    demo.rar_DEMO_j2me 蓝牙

    标题中的“demo.rar_DEMO_j2me 蓝牙”表明这是一个关于Java ME(J2ME)平台上的蓝牙应用示例。J2ME是Java的一种轻量级版本,主要用于移动设备和嵌入式系统,例如早期的智能手机和平板电脑。这个压缩包可能包含了用于...

    基于J2ME蓝牙的手机与计算机通信系统设计(毕业论文)

    《基于J2ME蓝牙的手机与计算机通信系统设计》这篇毕业论文主要探讨了如何利用Java Micro Edition(J2ME)平台实现手机与计算机之间的无线通信,尤其是通过蓝牙技术进行数据交换。本文将深入解析该系统的设计原理、...

    J2ME手机游戏开发详解

    J2ME手机游戏开发详解--快速入门难点剖析商业案例光盘源码。本书是一本介绍J2ME无线开发的实训教程,面向具有基本J2ME无线开发基础的开发人员。本书通过7个典型的例子,从不同的方面分别介绍了J2ME游戏开发的实用...

Global site tag (gtag.js) - Google Analytics