第一个功能的收获___DeepSleep(fastpowerOff)
来源:互联网 发布:淘宝客户端 编辑:程序博客网 时间:2024/05/16 08:36
1.android framework
1)framework下如何添加新的功能文件?
可以根据需要在core下添加
2)android主线程无法处理耗时的认为一般耗时的任务应该创建一个线程处理。
3)广播有2中注册方法:
a. 通过androidManifest.xml文件注册,
在XMl文件中注册一个广播类并且将这个广播接收的action也声明了。
然后在代码中实现这个类就可以了。
b. 在代码中调用
IntentFilter iFilter = new IntentFilter();iFilter.addAction(Intent.ACTION_BATTERY_CHANGED);mContext.registerReceiver(mChargerStatusReceiver, iFilter);
Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED);mContext.sendBroadcast(intent);
通过Intent.ACTION_BATTERY_CHANGED找到对应的广播接收端。
mContext.sendBroadcast(intent);通过Intent.ACTION_BATTERY_CHANGED找到对应的广播接收端。
mChargerStatusReceiver对象是一个继承与BroadcastReceiver类的子类对象。接收处理函数接在这个类里面。
4)启动一个第三方servcer,需要在androidManifest文件中声明这个服务然后启动,开启这个服务后,不要将耗时的任务放在服务的主线程中,应该另外的启动一个线程处理。
5)radio,airplanemode,wifi,bluetooth,NFC的相关处理,kerguard的唤醒
airplanemode,一般会有一个状态保存在setting的数据库中,每次重新启动手机,都会保持上次关机时候的飞行模式状态。因此如果想要改变飞行模式状态首先修改setting中的值,然后发送一个广播ACTION_AIRPLANE_MODE_CHANGED就可以了。wifi,BT ,NFC也是有状态保存在setting数据库中,但是这三个状态受到飞行模式的制约(如果开了飞行模式,这三个的状态都会是关闭的)。每次改变这3个状态他们保存在setting中的状态也会随之改变。radio开机就会启动,
6)各类由systemservice启动的服务,都可以通过getservice获得一个manager来使用对应service对外暴露的接口,manager通过binder通信调用service的函数。service中的包import只在server这个目录下有效,在其他目录下import server中的包文件无法找到,但是server可以import外部的包文件
2.JNI
如何在android的源码中添加一个新的JNI接口文件?
在JNI的目录下的android.mk文件中添加源文件的编译命令。
在jni/AndroidRuntime.cpp文件中添加代码
extern int register_android_internal_app_DeepSleep(JNIEnv *env);static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_internal_app_DeepSleep),};
在/jni/android_internal_app_DeepSleep.cpp添加文件(一般的写法例子)
#include "JNIHelp.h"#include "jni.h"#include "android_runtime/AndroidRuntime.h"#include <utils/misc.h>#include <stdio.h>#include <fcntl.h>static jboolean JNI_setDeepsleep(JNIEnv *env, jobject clazz, jboolean on){ return 0;}static jboolean JNI_getDeepsleep(JNIEnv *env, jobject clazz){ return ret;.}static JNINativeMethod method_table[] = { { "setDeepleep", "(Z)Z", (void*)JNI_setDeepsleep }, { "getDeepleep", "()Z", (void*)JNI_getDeepsleep },};int register_android_internal_app_DeepSleep(JNIEnv *env){ return AndroidRuntime::registerNativeMethods(env, "com/android/internal/app/DeepSleep", method_table, NELEM(method_table));}};
JNI 中的C++代码如何编写可以使得JAVA和JNI正常使用?
在java中声明和c++中完全一样的函数注意native关键字
- 第一个功能的收获___DeepSleep(fastpowerOff)
- 第一个项目的收获
- 我的第一个项目的收获
- 准备第二个项目,发第一个的收获!
- 第一个项目--学生管理系统的一点收获
- 完成第一个项目所得到的收获
- 修改选中第一个app收获
- 收获不止oracle,第一个优化案例
- 写完第一个博文的收获
- 在公司工作做第一个项目的收获,拿出来晒晒。
- 万事开头难,用HTML写的第一个界面,收获颇多
- 月末的3个收获
- 7个月的收获
- 2个月的收获
- SPI接口实现设计 JX第一个月收获
- 刚刚开始学java,我的第一个比较好一点的Java程序。ps:只要努力,就会有收获
- 我的第一个小程序-----身份信息查询功能
- 使用python来做第一个简单的功能测试
- Linux VSFTP服务器
- FP寄存器及frame pointer介绍
- Xcode中捕获iphone/ipad/ipod手机摄像头的实时视频数据
- dedecms(织梦)给栏目添加图标全攻略
- Apache移植及openssl实现SSL单/双向认证
- 第一个功能的收获___DeepSleep(fastpowerOff)
- jquery 中的 console.log(dataObj);
- php iframe ie6、7下session问题
- 记录点滴
- vector和set的区别
- HTML表单的复习
- NDK
- poj 2406 D3C 算法 后缀数组 连续重复子串
- ios 图片的网络下载和显示(可缓存)