除了购买专用的蓝牙抓包工具外,还有一个办法就是用 Android 手机。当然,在进行下一步之前,你需要: 1、执行 adb shell 连接到手机,然后执行 cat /etc/bluetooth/bt_stack_log.conf 命令,看其中的内容,你手机将捕获的日志放到什么地方了,如果放到 SD 卡根目录,那么,
月度归档: 2015 年 12 月
[技巧] 使用虚拟串口来仿真测试串口通讯
好吧,现在许多软件仍然是通过串口通讯的方式来与底层的硬件通讯。不论是真串口,还是 USB->COM 出来的串口,总之是串口进行通讯。 我们做软件开发时,要与设备通讯,但是,如果硬件设备没有或者还在研发中怎么办?那就只能通过各种方式来模拟。 这里我知道的有两个选择: 1、使用虚拟机软件,无论是 VirtualBox
[代码] 调用ExitWindows 关闭系统
这个实际上有很多现成的代码了,这个代码是我自己改写的 Delphi 版的代码,可以在 Delphi/C++ Builder 中使用,已测试可以正常工作。 type TShutdownAction = (saLogoff, saReboot, saPoweroff); function Shutdown(Action:
[FMX] 在 Delphi/C++ Builder 中开发低功耗蓝牙设备
从蓝牙4.0开始定义了不同类型的蓝牙协议,原来的蓝牙协议改称为经典蓝牙(Classic Bluetooth),新的低功耗版本被称为BLE(Bluetooth Low Energy)。 要在 Delphi 或 C++ Builder 中使用低功能蓝牙,需要做以下步骤: 1、在你的工程中放一个 TBlueToothLE 组
[FMX] 低功耗蓝牙开发知识:服务名称及ID
//基础ID 服务名称:Base GUID 服务编码:{00000000-0000-1000-8000-00805F9B34FB} // GATT 配置 服务名称:GAP 服务编码:{00001800-0000-1000-8000-00805F9B34FB} 服务名称:GATT 服务编码:{00001801-0000-
[技巧] 让一个后台 TTabSheet 上的控件切换到前台并获得焦点
实际上,这个函数并不只能完成上面的功能,它是让一个控件获得焦点,当它在后台的 TTabSheet 页面上时,会将所在的 TabSheet 设置为活动页面,然后再切换获得焦点。当然,如果它本身不能获得焦点,那么,会让其父获得焦点,依次类推。 代码如下: function ForceFocus(ACtrl: TWinCon
[Java] 在JSP中读取POST的JSON数据
jsp是开发bs的利器。在jsp中我们可以很方便的使用JSON来开发一个数据接口。 今天我想实现的例子是: 接收客户端(浏览器、APP)通过POST方式提交的JSON数据。 解析接收到数据,如果存在”username”则返回用户名,否则返回一个错误。 我使用java-ee作为开发环境,项目结构如
密码保护:[译]RAD Studio 移动开发(西雅图版)- 使用 Tab 组件来显示页(iOS 和 Android)
无法提供摘要。这是一篇受保护的文章。
[专题] Delphi/C++ Builder 移动开发教程
本文翻译自 Delphi/C++ Builder 英文帮助,翻译采用中英文混排。如果中文看的有歧义,请参考英文原文理解。 英文原版在线访问 前言 在Mac(iOS)上配置你的开发环境 配置你 Windows PC上的开发环境(iOS) 配置你 Windows PC上的开发环境(Android) 创建一个移动平台应用程序
密码保护:[译]RAD Studio 移动开发(西雅图版)- 使用浏览器组件(iOS 和 Android)
无法提供摘要。这是一篇受保护的文章。
[QMacros] 更新:新增内置的参数化宏定义支持
【更新说明】 新版本的 QMacros 新增宏定义的参数化支持,通过支持参数化,从而让非固定值的宏能够根据参数做出适当的变化,为应用的开发提供更好的支持。 下面是一个参数化宏替换的例子: procedure TForm1.Button1Click(Sender: TObject); var AMgr: TQMacroM
[QMacros] 一个参数化宏替换的示例代码
【注】 QMacros 已经内置了参数化的支持,请大家参考 :[QMacros] 更新:新增内置的参数化宏定义支持 下面的代码是给群里的一位朋友写的 QMacros 的一个简单的示例,通过参数控制宏替换时的值的范围。但这个代码只是一个简单的示例,创建的 PRangeMacro 实例未在最后释放,请大家使用时,自行加上相
密码保护:[译]RAD Studio 移动开发(西雅图版)- 使用一个 MultiView 组件来显示信息的备选视图
无法提供摘要。这是一篇受保护的文章。
密码保护:[译]RAD Studio 移动开发(西雅图版)- 配置 Android 应用使用 Google 地图
无法提供摘要。这是一篇受保护的文章。
密码保护:[译]RAD Studio 移动开发(西雅图版)- 使用一个地图控件来操控地图( iOS 和 Android )
无法提供摘要。这是一篇受保护的文章。
[RVMedia] 在捕获视频时画面中叠加自绘内容
RVCamViewer 是 RVMedia 输出视频的对象,它提供了一个 OnPaint 事件,我们可以在其中控制要呈现给用户的内容。 下面的例子,我就在画面的右上角呈现了已经录制的时间,其中用到的 RollupTime 函数,请到 QString.pas 里找。 procedure TfrmVideoRecord.R
[FFMPEG] 使用 FFMPEG 将 MJPEG 格式转换为 H.264 格式的 MP4
这几天,用RVMedia的从摄像头抓取视频,但RVMedia 4.0.2 只支持录制成 MJPEG 格式,而 MJPEG 的格式是以JPEG 格式存贮的图片序列,只是在前面加上了一个 MIME 信息,其格式参考 http://blog.chinaunix.net/uid-22670933-id-1771591.html
[教程]枚举指定进程的所有窗口
实际上,这个的核心是用于一个 GetWindowThreadProcess 的 API 函数,通过它可以确定指定的窗口所隶属的进程。然后,结合 EnumWindows 就可以完成这一操作了。假设我们将所有的窗口句柄到一个 TList 中,我们大概的代码逻辑如下: function DoEnumProcessWnd(AW
[教程] 获取当前进程的父进程
有时候,我们创建了一个子进程,我们需要知道自己所隶属的父进程的ID。有几个办法,一个是调用微软未公开的 NtQueryInformationProcess 函数,另一个就是下面提供的一个函数,利用了公开的函数,运行需要包含 tlhelp32 单元。 function GetParentProcessId: Cardin
密码保护:[译]RAD Studio 移动开发(西雅图版)- 使用下拉列表框从列表中选择项目
无法提供摘要。这是一篇受保护的文章。