ant管理安卓项目

无论是Android Studio还是命令行创建的安卓项目,都会有一个build.xml文件。因此可以用ant进行编译和安装

编译debug版本,生成的apk文件存放在bin目录下

安装debug版本到连接的手机或者模拟器

 

 

git

本地有一个git repository,将其唯一的分支master推送到服务器上。

假定已经在服务器上设置好了git专用的用户git,所在组也是git。

首先以root用户远程登录服务器,在服务器上新建并配置一个新的repository

 

树莓派显示屏、触摸屏相关

分辨率设置

hdmi显示屏

设置hdmi_group和hdmi_mode,参考 http://weblogs.asp.net/bleroy/getting-your-raspberry-pi-to-output-the-right-resolution

边框设置

有些屏幕接上之后,你可能会发现有些显示区域超出屏幕边界,看不到显示的内容。或者屏幕边上有部分是黑的,没有用来显示。者可以通过修改/boot/config.txt来调节边框

 横屏/竖屏

树莓派默认横屏显示,需要改成竖屏就要进行旋转显示设置。设置display_rotate,旋转的角度是设置的值乘以90

 触摸屏

触摸屏的设置和显示屏是分开的,参考 https://www.raspberrypi.org/forums/viewtopic.php?p=425962#p425962  以及  https://www.raspberrypi.org/forums/viewtopic.php?p=426246#p426246。修改/usr/share/X11/xorg.conf.d/10-evdev.conf,根据需要设置InvertY和SwapAxes选项。InvertY将Y轴的触摸方向对掉,比如原来手向上的时候鼠标指针向下,手向下鼠标指针向上,就可以通过设置InvertY为True解决。SwapAxes将X轴和Y轴的触摸对掉,比如手原来横向移动的时候指针在垂直方向移动,手垂直方向移动的时候指针在水平方向移动,这就需要将SwapAxes设置为True

树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)

 

本文使用的读卡器

RFID-RC522A

1. 配置树莓派

首先需要运行raspi-config,开启树莓派的spi接口,因为RFID-RC522A读卡器与树莓派之间是通过spi协议进行通信的

https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md

2. 软件安装

下载并安装SPI-Py

3. 连接树莓派与读卡器

读卡器输出端子 树莓派 Pin # 树莓派 Pin name
SDA 24 GPIO8
SCK 23 GPIO11
MOSI 19 GPIO10
MISO 21 GPIO9
IRQ None None
GND Any Any Ground
RST 22 GPIO25
3.3V 1 3V3

4. 运行测试程序

MFRC522-python 包含了几个对使用读卡器读写IC卡的例子。

测试程序需要以root用户运行,否则权限不够

Read.py读取Sector 8,如果你修改测试程序,让它读取Sector 0的数据,会发现每个Sector是16字节的数据,并且Sector 0的前面四个字节就是这张卡的UID

 

参考资料:http://www.instructables.com/id/Attendance-system-using-Raspberry-Pi-and-NFC-Tag-r/?ALLSTEPS

raspbian(树莓派)系统编译安装linphone 3.8.2

我之前的一篇文章有写过如何在ubuntu下安装linphone 3.7.0。这里讨论如何在raspbian上安装3.8.2版本,虽然操作系统和linphone版本不一样,但大部分安装步骤还是差不多的,这里只列出不同部分

基础软件包

多了libsrtp-dev

belle-sip

polarssl

没有libpolarssl5,安装libpolarssl-dev就行了

belle-sip

git checkout tags/1.4.1

ZRTPCPP

raspbian系统中g++是4.6.3版本,编译ZRTPCPP的时候会报错:cc1plus error unrecognized command line option -std=c++11。需要将g++升级为4.8.2版本,我升级的方式是通过aptitude安装g++-4.8,然后手动更新/usr/bin/g++ 以及 /usr/bin/gcc synbolic link

git checkout tags/V4.3.1

BZRTP

安装linphone之前还得安装BZRTP,直接安装master分支最新版本没问题

Linphone

git checkout tags/3.8.2

需要加-Wno-error选项,否则会出现类似”‘reverse_and_down_scale_32bytes_neon’ defined but not used [-Wunused-function]“的报错。(ubuntu编译3.8.2不需要,树莓派上编译需要指定)

同时configure的时候去掉”enable-zrtp”选项,否则会出现如下报错(安装aptitude里面的libsrtp-dev和github最新版的libsrtp都没有用)

configure: Could not find libsrtp headers or lib, cryto transport disabled.
checking for LIBBZRTP… yes
configure: error: “ZRTP requires SRTP”
configure: error: ./configure failed for mediastreamer2

 

树莓派

树莓派使用文档

https://www.raspberrypi.org/documentation/usage/

测试程序

https://www.raspberrypi.org/documentation/usage/demos/README.md

视频

  1. 摄像头模块安装和启用摄像头模块:

    https://www.raspberrypi.org/documentation/usage/camera/README.md

  2. 命令行工具获取(摄像头模块的)视频、图片。包括保存成视频、图片文件,以及预览视频:
    https://www.raspberrypi.org/documentation/raspbian/applications/camera.md预览摄像头视频:raspivid -t 60000其中-t 60000表示预览60秒。文档中提到可以使用-o选项指定输出设备,比如可以指定将捕获的视频存储成文件,或者直接输出到terminal中》直接输出到terminal中会占用较大的CPU和内存资源,一个是预览的视频会比较卡,而且会出现内存占用过多导致程序异常退出或者卡死
  3. web camera

    https://www.raspberrypi.org/documentation/usage/webcams/README.md

    安装用于读取摄像头图片的工具fswebcam
    sudo apt-get install fswebcam
    读取摄像头的一帧并保存成图片
    fswebcam image.jpg指定分辨率
    fswebcam -r 1280×720 image2.jpg移除图片中的时间条
    fswebcam -r 1280×720 –no-banner image3.jpg

  4. omxplayer 播放视频文件:

    https://www.raspberrypi.org/documentation/usage/video/README.md

音频

  1. aplay或者mplayer播放音频文件。aplay audio-file-name, mplayer audio-file-name
  2. 列出usb音频设备,可以列出带音频的usb摄像头:
    arecord -l**** List of CAPTURE Hardware Devices ****
    card 1: PCH [HDA Intel PCH], device 0: ALC280 Analog [ALC280 Analog]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 2: CAMERA [USB2.0 PC CAMERA], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 3: Webcam [FULL HD 1080P Webcam], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
  3. 录音:

    https://www.raspberrypi.org/forums/viewtopic.php?p=599739#p599739

    arecord -d 10 -f cd -t wav -D hw:1,0 foobar.wav录音之前,得先打开alsamixer,将Playback的Front Mic Boost和Rear Mic Boost调到最低,Front Mic和Rear Mic静音(或调到最低);将Capture的Front Mic Boost和Rear Mic Boost调到最低。否则会出现很大的杂音。

    -d 10表示录制10秒
    -D hw:1,0表示录制的音频设备,这里的1和0分别对应前面arecord -l输出中的card和subdevice #

二维码/条形码扫描工具zxing

第一次开发安卓app,需要在app里面扫描二维码。google一下,发现安卓里面用得比较多的是zxing。实际上,zxing并不只是用于安卓。其核心代码主要就是两个功能,一个是将条码、二维码等decode成文字;再就是将文字encode生成一张二维码图片。在这个核心代码基础之上,才是面向用户的各种应用程序,比如:

  • 安卓应用程序,能够用智能手机的摄像头拍摄二维码图片,包括自动对焦;然后调用核心代码将拍摄的图片decode成文字
  • javase桌面应用,直接将一张二维码图片文件的路径作为参数传递,由核心代码将其decode成文字。
  • web应用,用浏览器将二维码图片传递到服务器,由服务器调用核心代码将其decode之后返回给用户

在zxing项目的README页面可以看到,它主要由以下几个模块组成。
阅读全文

GT-N7100刷机再探

变砖故障一:开不了机

症状:可以进入odin模式(可能又叫刷机模式、挖煤模式,通过开机的时候按音量减+HOME+电源键进入),但是不能开机,开机过程中显示固件已经损坏,并且提示可以尝试用KIES修复。不过,在这种状态下KIES是连接不上手机的,因此无能为力

解决方法:使用Odin工具刷N7100固件

刷固件步骤描述如下:

  1. 下载Odin3 v3.10原版.exe,并运行。
  2. 下载固件压缩包,KIES_HOME_N7100ZCALK5_N7100CHNALK5.zip,并解压。
  3. 手机开机,在卡住(提示固件损坏)的状态下,对运行的Odin进行如下设置:
    Odin-刷固件
    也就是说,确保”Auto Reboot”和”F. Reset Time”已经勾选,点击AP选择前面解压的固件zip中的KIES_HOME_N7100ZCALK5_N7100CHNALK5_447762_REV04_user_low_ship.tar.md5文件。然后点击”Start”开始刷固件。刷的过程在Odin上和手机上都能看到进度。固件版本应该是有要求的,我下载的是KIES_HOME_N7100ZCALK5_N7100CHNALK5.zip,这个固件刷了两次都能成功,只不过有几次是刷的过程中卡住(用电脑A),后面两次刷成功是用了另一台电脑;如果你出现刷的时候卡住,可以试着重新刷。

固件刷完后,手机就可以正常开机了。

故障二:未在网络上注册

 解决方法:

步骤:

  1. 刷cwm-root-note2.tar
  2. 刷ZCDMB1_xydd_meihua.zip
  3. 恢复EFS

git submodule

更新一个submodule的url

用例:

方法:

  1. 更新.gitmodules文件,修改对应submodule的url。

    这个文件中的submodule信息,是在git submodule add的时候写入的,并且在git submodule init的时候会读取这个文件并写入到.git/config文件中。之后的git submodule update命令从.git/config文件中读取信息以便从git服务器拉取更新。

  2. 运行git submodule sync,这会更新.git/config文件。