android的intent使用方法
android 的 intent 使用方法
#移动开发 #Android
android 的 intent 使用方法
1. 说明
Android 中提供了 Intent 机制来协助应用间或者应用程序内部的交互与通讯。
Intent 的两种基本用法:一种是显式的 Intent,即在构造 Intent
对象时就指定接收者,这种方式与普通的函数调用类似;另一种是隐式的
Intent,即 Intent 的发送者在构造 Intent
对象时,并不知道接收者是谁,只是指出接收者的一些特性(比如说启动音乐播放软件)
2. 使用方法
启动服务
关键函数
context.startService() 或 context.bindService()
示例
** Intent i = new Intent(this, MyTestService.class);
this.startService(i); // ** ** 启动 ** ** service **
发送广播
关键函数
context.sendBroadcast()
发送方
** String msg = “test”;
Inten ...
AndroidPrelink实现的源码分析
Android Prelink
实现的源码分析
1. 原理简介
Prelink
Prelink
即预链接技术是利用事先链接以代替运行时链接的技术,以加快共享库的加载速度,它不仅能加快程序启动时间,还可以减少部分内存开销(它能使
KDE 的启动时间减少
50%)。每次程序执行时,进行的链接动作都是一样的,链接相对来说开销很大,尤其是嵌入式系统。
普通 Linux 系统的 Prelink
Redhat 系统中 prelink 工具 (/etc/cron.dialy/prelink)
会修改可执行程序,把它与所需库的链接信息加入可执行程序。在程序运行时,使用
glibc(glibc > 2.3.1-r2) 中的 ld-
linux.so
来进行链接。用此方式,每次更新动态库后,使用它的程序都需要重新
prelink,因为新库中的符号信息,地址等很可能与原来不同了。
Android 的 Prelink
Android 源码中有一组 map 文件,其中定义了需要预连接的动态库,其 Prelink
信息以及对应的逻辑地址(4G
地址空间中位置),在动态库编译时,预处理程序 apr ...
MSN博客搬家工具
MSN 博客搬家工具
#工具 #编程语言/Java
1. 说明
最近 MSN 的博客即将关闭,而使用 MSN 上推荐的迁移到
workpress,又总是不成功。在网上下了几个工具,都是各个 blog
开发的,只能搬到特定的 blog 中去。让人十分郁闷。
后来试写了一段代码,先把从 MSN 博客备份到本地,挑了些技术文档搬到了
CSDN
,下面是程序的实现和说明,大家举一反三吧。用此方法也可以搬到其它的
blog。
编译好的程序可以下载,源码可以下载,大家可以直接使用或者修改加以完善。
2. 原理
使用 XML-RPC 协议,一个 XML-RPC 消息就是一个请求体为 xml 的
http-post
请求,被调用的方法在服务器端执行并将执行结果以 xml
格式编码后返回,可以通过此协议,读写 blog 上的文章,如 CSDN,
WORDPRESS,新浪等都支持,利用它可以方便地开发 blog 的客户端。
3. 程序说明
MSN 网页解析
1234567891011121314151617181920212223242526272829303132333435363738394041 ...
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
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. 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
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 版本 ...