android典型应用之访问网络
android 典型应用之访问网络
1. android 网络
android 访问网络需要设置权限,java 提供了很好的封装
2. 例程
功能
从网上下载文本文件,并使用 textview 控件显示其内容
可从此处下载可独立运行的代码
[http://download.csdn.net/source/2650779
](http://download.csdn.net/source/2650779)
权限
在 AndroidManifest.xml 中需要加入访问网络的权限
_ < _ _ uses-permission _ _ android:name ="
android.permission.INTERNET" / >
_
核心代码及说明
_ package com.android.mynet;
import android.app.Activity;
import android.os.Bundle;
import java.io.;
import java.net.;
import org.apache.http.util.ByteArrayBuf ...
android开机动画
android 开机动画
#移动开发 #Android
1. 介绍
android 开机画面由三部分组成,第一部分在 bootloader
启动时显示,第二部分在启动 kernel 时显示,第三部分在系统启动时(
bootanimation)显示(动画)
2. bootloader 开机图片
一般使用 rle 格式图片,不同的 android
系统不同此图片可能放在不同位置,以下实例均以 G1 为例,G1 放在
splash 分区中
制作 rle 格式开机图片
将图片转成 320x480,256 色,保存成不带 Alpha 通道的 png
格式
使用 convert 工具将 splash.png 转换成8位色的 splash.raw
convert splash.png -depth 8 rgb:splash.raw
确认 splash.raw 大小为 460800 字节
使用 android 工具 rgb2565 改变图像格式
out/host/linux-x86/bin/rgb2565 < splash.raw > splash.raw565
确认 splas ...
android的包管理
android 的包管理
#移动开发 #Android
1. 说明
包管理(Package
manager)非常重要,它关系着软件包的安装,卸载,查看和使用,它是运行在后台的一个服务,名叫
PackageManagerService,包括对软件包的解包,验证,安装等
2. 系统软件包管理信息存储在哪
/data/system/packages.xml
通过它可以看到系统安装的所有软件包,以及软件包的信息
3. 包管理相关源码在哪
frameworks/base/services/java/com/android/server/PackageManagerService.java
4. 系统自带的软件能升级吗(即安装在系统分区 system
中的包,如电话,短信) 可以升级,如果升级 /system/app
目录中的包,PackageManagerServer.java
对此情况进行处理,被升级的包出现
package.xml 的 updated-package 字段中,新的包信息会写在 package
字段中,卸载新包后,原包会恢复到
package 字段中。启动时新的包会优先地被启动 ...
Android的传感器
Android 的传感器
#移动开发 #Android
1. sensor
sensor 译做感应器或传感器,android 架构支持多种
sensor,手机硬件不一定支持每一种
2. android 系统支持的 sensor,以 froyo 为例(详见 SensorManager.java
中的定义)
重力
STANDARD_GRAVITY
加速度:XYZ 三个方向上的加速度
SENSOR_ACCELEROMETER
温度:周围温度
SENSOR_TEMPERATURE
磁场:XYZ 三轴上的磁场
SENSOR_MAGNETIC_FIELD
光线:周围亮度,用于调节对应的屏幕亮度
SENSOR_LIGHT
接近:相应传感器与物体的距离,如在接电话时,判断耳朵与手机的距离,耳朵触屏被忽略,适里黑屏
SENSOR_PROXIMITY
角度:XYZ 轴的角度
SENSOR_ORIENTATION
SENSOR_ORIENTATION_RAW
其它
与具体应用相关,比如照相模块中实现的 CAMERA SENSOR
3. 如何访问 sensor
应用通过 SensorManager 访问各 ...
Android的开机流程
Android 的开机流程
#移动开发 #Android
y
1. 系统引导 bootloader
源码:bootable/bootloader/*
说明:加电后,CPU 将先执行 bootloader
程序,此处有三种选择
开机按 Camera+Power 启动到 fastboot,即命令或 SD
卡烧写模式,不加载内核及文件系统,此处可以进行工厂模式的烧写
开机按 Home+Power 启动到 recovery 模式,加载
recovery.img,recovery.img
包含内核,基本的文件系统,用于工程模式的烧写
开机按 Power,正常启动系统,加载 boot.img,boot.img
包含内核,基本文件系统,用于正常启动手机(以下只分析正常启动的情况)
2. 内核 kernel
源码:kernel/*
说明:kernel 由 bootloader 加载
3. 文件系统及应用 init
源码:system/core/init/*
配置文件:system/rootdir/init.rc,
说明:init 是一个由内核启动的用户级进程,它按照 init.r ...
android系统自带的Service原理与使用
android 系统自带的
Service 原理与使用
#移动开发 #Android
1. 说明
android 的后台运行在很多 service,它们在系统启动时被 SystemServer
开启,支持系统的正常工作,比如
MountService 监听是否有 SD 卡安装及移除,ClipboardService
提供剪切板功能,
PackageManagerService
提供软件包的安装移除及查看等等,应用程序可以通过系统提供的 Manager
接口来访问这些
Service 提供的数据,以下将说明他们的工具流程
2. 举例说明基本流程
以 android 系统支持 sensor(传感器)实例来说明框架层的 service 和
manager 是如何配合工作的
什么是 sensor
sensor 是传感器, 比如控制横竖屏切换利用的就是重力传感器 (gsensor), 还有
accelerator sensor 可取得
x, y, z 三个轴上的加速度 (应用如平衡球, 小猴吃香蕉等)
应用程序调用(以下为关键代码)
sensorManager=(SensorManager ...
Android的键盘事件处理
Android 的键盘事件处理
#移动开发 #Android
1. 基本流程
内核处理按键,通过设备文件的方式提供给 framework 层
framework 层的 KeyInputQueue.java
启动线程从设备文件中读出键码,然后把读出的键码按 kl
文件转成相应键值
(JNI 调用 EventHub.cpp),最后写入事件队列
framework 层的 WindowManagerService.java
启动线程从事件队列中读出键值,然后根据当前 focus
分发给相应窗口
UI 通过 KeyCharacterMap.java 处理 kcm 规则将用户基本按键与功能键
(Shift, Alt 等)
组合,得出最终按键
2. 两个配置文件
通常更换一种新的硬件,可能其键盘布局及键码与标准版本不同,不用更改代码,只要修改以下配置文件即可(如果增加新的未定义功能的按键,则需要修改代码)
xxx.kl
位置
development/emulator/keymaps/.kl (1.6 版本模拟器使用)
sdk/emulator/keymaps/.kl (2.2 版本 ...
android的图像识别
android 的图像识别
#移动开发 #Android
1. 什么是 opencv
简单的说这是基于图像动态捕捉处理、人脸识别、机器人视觉处理、图像信息认知录入等多为一体计算机视觉库
2. 安装
下载 ndk
[http://bbs.weiphone.com/read-htm-tid-521406.html
](http://bbs.weiphone.com/read-htm-tid-521406.html)
安装 ndk
_ $ tar xvjf OpenCV-2.1.0.tar.bz2
$ cd android-ndk-1.6_r1
$ export NDKROOT=pwd
$./build/host-setup.sh _
下载 opencv
[http://github.com/billmccord/OpenCV-Android/downloads
](http://github.com/billmccord/OpenCV-Android/downloads)
编译 opencv
_ $ tar xvzf bill*
$ cd app
$ ln -s bill* ...
android的文字识别OCR
android 的文字识别 OCR
#移动开发 #Android
1. 功能: 光学字符识别 (OCR,Optical Character Recognition)
是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程
2. 典型应用: 名片扫描
3. android 源码实现: external/tesseract/*
4. 编译: _ $ cd external/tesseract/
$ mm _
生成 libocr.so,push 系统 /system/lib/
中,它也可以放在软件的安装包里
5. 例程下载:
在此下载
[http://code.google.com/p/mezzofanti/
](http://code.google.com/p/mezzofanti/)
直接下载 apk 是能用的, 在源码中编译程序运行就退出,是由于可能
libocr.so 未安装, 把它 push
到系统中即可
_ $ adb push libocr.so /data/data/com.itwizard.mezzofanti/lib/ _
主要借鉴 OCR ...
android之安装使用NDK
android 之安装使用 NDK
#移动开发 #Android
1. 为什么需要 NDK
NDK 不能做界面,只能做功能支持的库。 NDK 与不使用 NDK,直接使用 JNI
相比,它能把库打包,并且很方便的安装。 NDK 使得没有源码的 eclipse
的环境编译 C/C++ 库变得非常方便。 NDK 通常是用来编译和安装 C/C++
库的,常用做库的移植,很多软件会以此方式提供源码。
2. 下载
[http://bbs.weiphone.com/read-htm-tid-521406.html
](http://bbs.weiphone.com/read-htm-tid-521406.html)
3. 安装 NDK
_ $ tar xvjf OpenCV-2.1.0.tar.bz2
$ cd android-ndk-1.6_r1
$ export NDKROOT=pwd
$./build/host-setup.sh _
4. 试用:编译其测试程序
_ $ _ _ make APP=hello-jni _ __
此时生成 out/apps/hello-jni/libhello-jn ...