自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 视频与图像开发——摄像头访问

Android从5.0开始(API 21)推出了全新的摄像头访问接口:Camera2,相较与Camera1,使用复杂度提高了,但是同时相应的拍照和录像性能也更好了。理论上说,从5.0往后,Camera1仍然能用,但说实话既然推出了新的API,肯定会有适配性方面的问题。 本人的亲身经历是——开始时做MTK 4.4平台的智能设备开发,产品的视频通话(视频通话用过linphone和webrtc的框架,由

2017-12-27 17:23:24 1804

原创 PhoneStateListener回调接口和Connectivity广播监听实际比较

平台:展讯8761;android版本:7.0PhoneStateListener设置监听的方法(当然这里传subid的方法是系统隐藏的):public void setPhoneListen(boolean isOpen) { try { if (mPhoneStateListener == null) { int subid

2017-12-26 18:06:02 1057

原创 WiFi和热点开发——tcp连接查看实时日志

本人从事多年的Android智能设备开发,做过手机、MiFi、智能门锁等产品,除了手机之外,其他的产品在后期的维护及版本迭代过程中,经常需要通过分析查看设备的日志来定位问题,比如智能门锁,遇到故障时,经常就抱着一台笔记本,打开设备的usb调试开关后,用usb线连接设备进行问题重现和日志分析。当然,获取日志的方式是多种多样的,也可以通过网络上传。但总免不了需要现场查看,现场查看就有个问题,笔记本并不是

2017-12-26 17:23:40 2652

原创 低功耗蓝牙(BLE)开发——如何妥善处理包大小(MTU)限制

最近出于项目需要,花了几天时间,研究了一下低功耗蓝牙(BLE)的开发,为了让有需要的小伙伴们少走弯路,现将我所遇到的问题分享出来。 刚开始,我被低功耗蓝牙(BLE)的基础概念所困扰,想当然的以为低功耗蓝牙仅仅是传统蓝牙的升级版本,只要传统蓝牙能做的,低功耗蓝牙理应可以做到。这从一开始就陷入误区了。此外,也想当然地把低功耗蓝牙外设和中心的概念直接往C/S模式硬套,认为低功耗蓝牙的外设就是client

2017-12-26 16:44:19 22369

原创 WiFi和热点开发

WIFI的有关操作,系统提供了完备的API,供第三方app调用; 比如,开启和关闭wifi,获取wifi的状态,获取已保存的配置信息:getConfiguredNetworks(),获取当前连接的网络信息:getConnectionInfo() 等。 搜索网络:startScan() 搜索完成后,会收到WifiManager.SCAN_RESULTS_AVAILABLE_ACTION类型的广播,

2017-12-12 18:01:03 499

原创 音频开发——录音与播放、音量调节

Android提供了两个API用于实现录音功能: android.media.AudioRecord和android.media.MediaRecorder,对比如下: API 应用场景 优点 缺点 AudioRecord 边录边播实时处理 可以用代码实现各种音频的封装 输出PCM语音数据,若保存成音频文件,不能被播放器识别的,必须开发者编写代码实现数据编码以及压缩。

2017-12-12 16:20:29 2202

原创 功耗问题研究——定时唤醒机制实际效果

实验设备android版本:7.0android开发的小伙伴们使用频度最高的Handler和Message,在系统进入深度休眠之后,是无法正确执行的,因此有些时候小伙伴们可能会疑惑为什么我明明由Handler发出了一个定时任务(Message或Runnable),但为什么没有执行呢?但是过度的担心休眠问题,而全程持有wacklock,也是没有必要的。因为实际情况下,系统有很多机会被唤醒,比如来电、短

2017-12-12 14:50:30 896

原创 功耗问题研究

简单列举如下研究及优化功耗的方法: 1. 通过稳压电源给设备供电,观测瞬时电流,输出电流变化曲线;设备关闭屏幕、键盘灯、wifi和热点、蓝牙等所有外设,进入深度休眠以后(CPU停止供电后),电流可低至5-7mA;开启热点而没有终端接入,CPU休眠后电流可低至60-70mA;若有接入但未使用网络,通常不会休眠,电流维持200mA-300mA范围;若有连接且持续使用网络,则电流达到300mA-400

2017-12-12 13:11:10 438

原创 蓝牙开发经验小结——自动文件传输(OBEX)

场景:控制端——普通手机;被控制端——XX设备(无屏幕、无法用户操作、有系统权限) 网上关于文件传输实现的文章较少,没有发现满足我需求的资料,于是我索性深入到系统源码里头,研究了系统蓝牙(com.android.bluetooth不同的平台包名可能有差异)是如何实现文件收发的,然后再设计出自己的实现方案。

2017-12-05 16:32:29 5852

原创 蓝牙开发经验小结——蓝牙通讯

场景:控制端——普通手机;被控制端——XX设备(无屏幕、无法用户操作、有系统权限) 蓝牙通讯过程:蓝牙开启——找到设备——配对——建立蓝牙socket连接——通讯协议;然后,再搭建你的业务逻辑。

2017-12-05 15:43:17 1207

原创 蓝牙开发经验小结——自动配对

场景:控制端——普通手机;被控制端——XX设备(无屏幕、无法用户操作、有系统权限)。蓝牙开启后查找设备有两种方式:搜索和指定mac。用搜索功能查找蓝牙设备,涉及“可见性”的概念,蓝牙对外可见(即能被别的蓝牙设备搜索到)最多可设置为300s(即5分钟),而指定mac的方式则没有时间限制,只要蓝牙开启就可以找到设备。

2017-12-05 14:56:41 4739

原创 Activity生命周期与启动模式基础知识备忘录

Activity生命周期:onCreate:创建Activity,通常需要调用setContentView加载界面布局资源;onRestart:重新启动,Activity从不可见到可见,onPause和onStop被执行了,又回到这个Activity;onStart:正在被启动,已经可见,但没有出现在前台;onResume:已经可见,出现在前台可与用户交互;onPause:正在

2017-05-18 13:53:50 381

原创 Intent和IntentFilter基础知识备忘录

Intent和IntentFilter匹配的过程,是一种系统行为(机制),可以理解为寻找到那些可以处理某个Intent的Activity、BroadcastReceiver或者Service,把Intent交给它(或它们)处理的过程。而匹配的核心,其实就是这些组件(Activity、BroadcastReceiver、Service)中声明的IntentFilter可以与Intent匹配。

2017-05-16 13:52:55 557

原创 PackageManagerService——掌管APP的安装、卸载和查询

1、vold.decrypt系统属性可以指定android设备是否加密,如果加密(即该属性值为1或者“trigger_restart_min_framework”),onlyCore设置为true,那么PackageManagerService将只会扫描系统库;2、SystemServer判断系统是否初次启动,是调用了PKMS的isFirstBoot()函数,由于PKMS启动后会生成一

2017-05-15 16:33:52 677

原创 Android通信框架与Modem状态未同步——实际项目经验分享

背景知识:    Android为了屏蔽各Modem厂商之间的差异,并未直接使用AT指令,而是定义了通用接口——RIL命令来控制Modem(当然,RIL命令与AT指令之间存在某种不固定的映射关系,因厂商而异)。各Modem厂商则负责提供对应于RIL命令的Vender RIL。RIL是Modem的HAL(硬件抽象),是android系统与Modem之间的通信桥梁,为AP提供了控制Modem的无线

2017-05-05 17:53:07 3238

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除