2014年11月9日星期日

简单trac安装与设定指南

简介

本文完整介绍了如何安装、配置、备份 Trac 0.12。但这篇教程仅为官方教程的一个子集,仅适用于使用以下特定平台、软件的环境,并且不能保证适用于高于的 Trac 0.12 版本:

  • 操作系统:Ubuntu Linux
  • 数据库:SQLite
  • 版本控制:Subversion
  • 服务器端:tracd (自带)

Trac 的 wiki、浏览代码变更、浏览及对比代码等等功能非常实用,可以大大提高开发效率,而且还具有众多第三方插件可以实现更多的功能。

2013年11月26日星期二

Bluetooth A2DP audio quality in depth

Summary

This post explains Bluetooth audio profile A2DP, and discuss audio quality of it in technical aspect.

1. Bluetooth A2DP profile

Let's begin with Bluetooth core specification, the most popular and widely supported one is Bluetooth 2.0/2.1 + EDR, which can transmit at 2.1Mbit/s at most. High speed feature is introduced since Bluetooth 3.0, its speed can go up to 24Mbit/s when transfering data through WiFi. The devices support this feature would be marked Bluetooth 3.0 + HS. So those support Bluetooth 3.0 or even 4.0 but without the "HS" logo will remain the same as their Bluetooth 2.1 peers. As for Bluetooth 4.0, it contains 3 subsets that are called classic Bluetooth, high speed Bluetooth and low energy Bluetooth, which is actually equals to 2.1 plus 3.0 + HS and low energy Bluetooth.

A2DP(Advanced Audio Distribution Profile) is a Bluetooth profile, which is supported by almost all Bluetooth speakers and headphones. It is the key that defines audio data bandwidth and audio quality.

2013年11月19日星期二

How to detect Android Cursor leak

Summary:This post tells the theory of detecting SQLite database Cursor leak of your Android app, alongside some common mistake examples. Some leaks are hardly noticable in the code until memory errors happen. This sort of method can be applied to other kinds of resources leak as well.

Cursor leak means that you have opened a Cursor object, which is usually associated with a portion of memory, but fail to close it before you lost referece to it. If it do happens and is repeated several hundreds of times, you would finally be unable to query SQLite database, and exception like this would appear. The log says 866 Cursors are opened and memory allocation of 2MB is failed.

2013年10月27日星期日

专题合集:深入Android媒体存储服务





Android 有一套媒体存储服务,进程名是 android.process.media,主要负责把磁盘中的文件信息保存到数据库当中,供其他 APP 使用以及 MTP 模式使用。这里包含了数据库管理、磁盘文件遍历扫描、多媒体文件解析等几个部分,下面文章分别覆盖了这些内容:

2013年10月23日星期三

深入Android媒体存储服务(二): 磁盘扫描流程

简介
本文是《深入Android媒体存储服务》系列第二篇,简要介绍媒体存储服务扫描文件的流程。文中介绍的是 Android 4.2。
Android 有一套媒体存储服务,进程名是 android.process.media,主要负责把磁盘中的文件信息保存到数据库当中,供其他 APP 使用以及 MTP 模式使用。因此如何保持数据库和磁盘文件保持一致非常关键,这个就是媒体存储服务中 MediaScanner 的工作。

媒体文件扫描流程



2013年10月19日星期六

使用Visa Gift Card无信用卡注册Google Play开发者帐号

大家都知道要注册 Google Play 开发者帐号比较困难,要求通过 Google Wallet 绑定信用卡,而且原则上不支持国内信用卡,因为选项里没有中国。网上有几个被广泛转载的教程,方法为以下两个:
  1. 国内双币信用卡。网上有人注册成功,有的不成功 Wallet 帐号还被封了。我用建行 Master 也是被封了,上传资料申诉也被拒绝。
  2. 财付通 AE 虚拟信用卡。网上有人注册成功,但目前财付通已暂停新用户注册此服务
总结起来,要符合要求的话需要有一张能够验证账单地址,且账单地址和你注册时填写一致的信用卡。由于不能选择中国,所以国内信用卡有可能无法通过,建议如果想尝试使用你的国内卡是新建个 Google 帐号,被封也没什么损失。

还有没其他方法呢?美国有一种预付费不能充值的 Visa 虚拟信用卡,叫 Visa Gift Card,接受 Visa 信用卡的商家都接受这种卡,基本上等同于一张美国信用卡。而且可以在网上注册账单地址,不用担心验证问题

2013年10月2日星期三

宾得Q10 EVA限量版微单 开箱实拍图集

宾得 Q10 是一款非常可爱的微单,有 120 种颜色搭配,今年四月还上市了 EVA 限量版。不解的是现在所谓的 1500 部限量版供货充足,难道是 EVA 量产机?
现在日本亚马逊上 EVA 限量版 29000 日元,普通版 25000 日元,并不比普通版贵多少。以下是开箱图集,点击可打开 2000px 大图:

TYPE01 初号机版