- 博客(33)
- 资源 (16)
- 收藏
- 关注
原创 Android 5.0 L版本搜索框实现浅析
在Android 5.0中增加了设置选项搜索功能。当你进入到设置菜单后,可以点击右上角的放大镜图标,它会在每个设置界面中出现,你可以在里面寻找想要设置的内容。虽然不能做到百分之百准确,但是至少还是提供了一些方便。 下文简单介绍了在我们搜索输入第一个字符开始,搜索功能执行的流程。 在SettingsActivity被创建时,SettingsSearchIndexables
2015-04-10 11:57:19
924
原创 音乐播放随机算法
常见的音乐随机播放算法主要有两种:一是Shuffle算法;二是Random算法。一 Shuffle算法Shuffle算法和排序算法正好相反,是从有序到乱序的一个过程,俗称洗牌算法。它将播放列表中的歌曲顺序打乱,变成一个和原来歌曲顺序没有任何关系的乱序的播放列表,之后进行歌曲的播放,并支持当用户点击“上一首”时,能够回到刚刚播放的那一首歌曲。二 Random算法Random算法是
2015-01-14 11:34:59
1089
原创 Bluetooth tethering不能用问题
在项目调试过程中,发现有些手机的Bluetooth tethering用不了,不管是用做客户端还是服务端都一样用不了。 locat抓到的log显示如下: I/PPPOEService( 887): NetdCallbackReceiver onEvent 600600 Iface added bt-panD/BT_DUN ( 2007): Ignoring event PLATFOR
2014-12-18 17:26:50
1854
转载 socket阻塞与非阻塞,同步与异步、I/O模型
socket阻塞与非阻塞,同步与异步1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B
2014-08-21 10:12:40
501
原创 About Bluetooth LE
Bluetooth LEu Version 4.0 LE(Low Energy)of the Bluetooth Core Specification was adopted by the Bluetooth SIG on June 30,2010u Specifically optimized for the lowest power consumption possibleu As
2014-08-21 10:10:11
1139
原创 Linux进程间通信-----使用数据报套接字实现两个进程之间的通信
服务端首先服务器应用程序用系统调用socket来创建一个套接字,它是系统分配给该服务器进程的类似文件描述符的资源,它不能与其他的进程共享。接下来,服务器进程会给套接字起个名字(监听),我们使用系统调用bind来给套接字命名。然后服务器进程就开始等待客户连接到这个套接字。
2014-08-21 10:05:28
1728
转载 Linux进程间通信——使用信号
一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产
2014-07-30 11:12:58
452
转载 Linux进程间通信——使用消息队列
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。
2014-07-29 10:41:40
802
原创 9615 wifi热点调试记录----热点连接
上一篇文章提到能成功开启热点,接下来就是调试热点连接了。扫描到热点后进行连接,客户端连接不上,提示鉴权问题。9615打印出以下错误的log:
2014-07-14 15:37:35
5954
原创 9615 wifi热点调试记录----开启热点
确保硬件能正常工作的情况下,给wifi模块上电的第一步就加载驱动:#insmod /usr/lib/modules/3.0.21+/kernel/drivers/net/wireless/ar6000.ko。 按理说如果驱动加载成功的话,会出来例如wlan0,eth0字样的网络设备名,有了网络设备名才可以继续下面的操作。但是在加载完驱动后,用#ifconfig -a查看网卡信息,没有相应的网
2014-07-14 15:21:53
2038
转载 使用/dev/random生成随机数
很多库例程产生的“随机”数是准备用于仿真、游戏等等;它们在被用于密钥生成一类的安全函数时是不够随机的。其问题在于这些库例程使用的算法的未来值可以被攻击者轻易地推导出来(虽然看起来它们可能是随机的)。对于安全函数,需要的随机值应该是基于量子效应之类的确实无法预测的值。Linux内核(1.3.30以上)包括了一个随机数发生器/dev/random,对于很多安全目的是足够的。 /dev/ra
2014-07-10 16:13:17
4463
原创 cocos2dx创建android独立工程及eclipse编译
Step1. 成功安装JDK + Eclipse + CDT + ADT + Android SDK + phython在windows环境变量中添加ndk系统变量Step2. 下载cocos2d-x,并解压Step3.创建cocos2d-x test_project项目。如果不想安装phython则可以直接用cocos2d-x自带的例子D:\c
2014-03-11 16:53:41
752
1
原创 Android4.1删除大量联系人时UI没反应或者黑屏问题的处理
Android4.1联系人模块在删除大量联系人时,反应比较慢,删一段时间后,没删除完成界面自动返回,或者出现黑屏,还有可能提示“Unfortunately,Contacts has stopped.”。对于这个问题的处理,修改文件packages/apps/Contacts/src/com/android/contacts/editor/MultiPickContactActivity.java
2013-09-25 13:56:06
1438
转载 android 语言为英语时,屏蔽如CAPTAIN, COL, CPT, DR, GEN, GENERAL, LCDR, LT, LTC等字符的处理
1. 进入contacts app,新建一个联系人;2. 在联系人姓名栏输入如下类似字段(目前已知):Class 1: common_name_prefixes1LT , 1ST , 2LT, 2ND, 3RD, ADMIRAL, CAPT, CAPTAIN, COL, CPT, DR, GEN, GENERAL, LCDR, LT, LTC, LTG, LTJG, MAJ, MA
2013-09-25 10:20:25
989
原创 Android在状态栏增加耳机拔插图标
Android 4.1在拔插耳机时,状态栏没有提示图标。最近做了这个新的需求,步骤如下:1、在\frameworks\base\packages\SystemUI\res\drawable-Xdpi下增加一个耳机图片stat_sys_headset.png。drawable-Xdpi中的X根据手机的分辨率来确定,我的手机用的是drawable-hdpi;2、在\frameworks\bas
2013-05-27 15:17:29
3621
转载 Android DRM解析
简而言之,DRM系统提供一套机制对用户使用手机上的媒体内容(如ringtong, mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利。建议读者可以阅读OMA DRM 的规范,以便更好的了解代码。相关代码主要位于下列目录:frameworks/base/media/java/android/drm/mobile1frameworks/base/me
2013-05-22 11:38:34
1110
转载 OMA DRM V1.0学习笔记
OMA中关于DRM的定义主要是为了给内容提供商提供一种控制媒体对象使用的方式,包括对DRM Message的预览、保护文件、防止非法拷贝、超级传送(一种合法的拷贝方式)。在DRM的范畴内,为了保证媒体对象的合法使用,一旦对象被下载,就被DRM Agent(通常是运行在移动终端上,实现DRM控制)接管了。DRM系统允许内容提供商给不同的媒体对象添加不同的版权对
2013-05-22 11:37:41
864
转载 android的wake_lock介绍
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁. 如果没有锁了或者超时了, 内核就会启动休眠的那套机制来进入休眠.(一).内核维护了:1).两个链表,active_wake_locks[WAKE_LOCK_TYPE_COUNT]
2013-05-22 11:35:48
633
原创 Differences between Protocol and Profile in Bluetooth
蓝牙中提到的协议栈(Protocol)和Profile容易混淆,现总结如下:Protocol :蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作。互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈。但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层。蓝牙的核心协议由基带,链路管理,逻辑链路控制与适应协议和服务搜索协议等4部分组成.(1)Ba
2013-05-22 11:26:59
3241
原创 Android Bluetooth Address
蓝牙地址的NV项是447项,蓝牙地址一般从NV读取,所以连接上QXDM,修改NV447项就可以修改蓝牙的MAC地址。Android修改NV 447项之后,发现修改不起作用。原来Android的蓝牙地址可以从/persist/.bt_nv.bin读,也可以从NV447读,关键就看一个 vendor/.../bt/hci_qcomm_init/Android.mk的设置 如果要从nv447读, 则
2013-05-20 17:29:22
13065
原创 Android private IP leak
Android 手机作为热点时,客户端请求上网的过程中出现私有IP(192.168.x.x)泄露到公有网络的问题,就是在抓到的数据包中,有一段时间作为热点的手机用私有IP去请求网络数据。查找问题原因,做以下记录。 NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有
2013-04-03 15:15:15
1336
原创 Setup an Exchange account
Android 4.1在设置菜单里有一个Add account菜单,里面可以建立各种账户,前面一段时间测试Exchange account时出了些问题,记录下来已做备份。 Exchange account最先提出的问题是建立不成功。我申请了一个gmail.com账户,但是这个账户建立时候会失败,而用同一个gmail账户去Add account-----Email,建立这个账户是可以成
2013-03-12 16:32:44
1397
原创 About Android OTA system update
OTA升级是Android系统提供的标准软件升级方式。它功能强大,可以无损失升级系统,主要通过网络[例如WIFI、3G]自动下载OTA升级包、自动升级,但是也支持通过下载OTA升级包到SD卡升级。一、服务器OTA升级搭建OTA服务器是比较基本的,我们需要把更新软件放到服务器供用户下载更新,但是做一个完整的OTA服务器却非常复杂,因为这要涉及到下载遵循的标准,软件的管理,下载的计费,安全认证
2013-03-12 15:18:50
2149
原创 BT测试进入信令模式
Bluetooth进行FCC测试,需要先进入信令模式。Android4.0以下版本,在system/bin目录下没有hci_qcomm_init文件,在system/xbin目录下没有hcitool。进入测试模式之前,我们需要把这两个文件push到对应目录。然后进入adb shell,执行hcitool cmd。在4.0如果按照此步骤执行,执行完后能进入测试模式,测试完一项之后重启手机,查看blu
2013-02-22 16:02:20
3504
原创 蓝牙知识介绍
这篇文章介绍主要就蓝牙的一些基本知识---起源,发展历程,协议栈和蓝牙的一些简单应用,对蓝牙未来的发展做个简单介绍。一、蓝牙的起源公元940-985年,哈洛德.布美塔特(Harald Blatand),后人称Harald Bluetooth,统一了整个丹麦。他的名字“Blatand”可能取自两个古老的丹麦词语。“bla”意思是黑皮肤的,而“tan”是伟人的含义。和许多君王一样 ,哈洛德四处
2013-02-22 14:03:47
6453
原创 CTS Verifier:Wi-Fi Direct Test
Android4.1.2 CTS Verifier 中Wi-Fi Direct Test的测试方法:1、GROUP FORMATIONGO Negotiation Responder Test主要是为GO Negotiation Requester Test设计的,作为Responder测试,这个很容易过,就不多说了。GO Negotiation Requester Test中有两个测试项
2013-02-20 16:08:13
5699
原创 Wi-Fi CERTIFIED---EAP-TLS认证错误
一个合格的Wi-Fi产品,应该经过Wi-Fi认证,因为认证能确保无线电脑设备之间具有经过测试及证实的互操作性;这项认证让消费者和企业了解贴有Wi-Fi标志的无线局域网产品都通过严格的互操作性认证要求,因此能够放心购买产品。Android4.1.2项目在进行认证时,测试手机能否连接到加密方式为 802.1xEAP的AP时,测试失败了,返回 DUT cannot import the server c
2013-01-22 17:37:39
3180
原创 framework中新增字符串资源
Android4.0在framework中添加字符串资源的做法:直接在strings.xml中增加字符串资源后编译。但是移植到Android4.1时,在strings.xml里新增一个字符串资源后,代码中引用这个字符串ID,编译时候提示编译有错误,找不到这个字符串资源。在编译之前先做make update-api之后再编译也是没有效果的,依然会提示错误。 在strings.xm
2013-01-19 10:37:54
2327
原创 连接蓝牙耳机过程
首先BluetoothAudioGateway 会在一个线程中收到来自蓝牙耳机的RFCOMM 连接(MSG_INCOMING_HEADSET_CONNECTION),然后发送消息给BluetoothHeadsetService。如果一个设备支持headset和handfree,先发送了headset的消息,再发送handfree。手机主动连接过程处理:在配对上蓝牙耳机之后,收到BOND
2013-01-18 16:03:14
2149
原创 建立通话,如何连接蓝牙耳机SCO
1)通话之前,ACL是连接好的。在PoneApp里用了bluetoothhandfree这个类.在onCreate方法中,定义了bluetoothhandfree的对象,并把CM的信息传给了bluetoothhandfree类里。if (BluetoothAdapter.getDefaultAdapter() != null) { // Start Bluet
2013-01-18 16:01:29
2919
原创 Bluetooth OPP Profile
用这个profile之前,要确保oppservice启动,在在BluetoothOppProvider的public Uri insert(Uri uri, ContentValues values) 方法中去启动。OPP可用来发送文件,也可用接收文件,这篇日志记录简单的opp发送文件和接收文件的过程。手机发送文件,其他模块调用ChooserActivity,创建出共享的dialog。选择
2013-01-18 15:59:39
2122
原创 wifi hotspot连接设备数限制
wifi做为hotspot时,没有测试过能连接几个客户端。如果要对个数做限制,最好有个专门的宏能修改控制,但是找代码没找到这样的宏,问过高通也没给明确答复,所以只能自己写代码来控制。最开始做wifi的时候我记得当手机打开wifi去连接一个热点时,只有在路由器端看到此设备分配到了IP地址才算是成功了。所以找了下wifi连接的log,在分配IP之前,路由器会先做授权。当手机打开hotspot时,其他设
2013-01-18 15:44:28
5449
2
原创 开启wifi错误
最近遇到一个wifi问题,同一个手机,由eng版本升级到user版本后,去打开wifi,wifi一直处于正在打开状态,打开不了。打印log显示以下错误:E/WifiStateMachine( 452): Failed to start supplicant!D/StateMachine( 452): handleMessage: XD/StateMachine( 452): ha
2013-01-18 14:40:01
4704
9
cocos2dx plist大图分割成小图片脚本
2014-08-08
轻松搞定XML。pdf
2010-05-16
用C模拟实现COM机制
2010-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人