Android Studio For Experts

自动完成 auto completion ctrl + space 选择后按 tab 可以覆盖原理的方法。 shift + ctrl + space 更加聪明的补全方式 selection extend selection alt + ↑ intention alt + enter 对于构造函数,可以自动生成private 变量并赋值,增加变量可自动添加。 在 instanceCheck 中可以自动生成 cast 代码 suppress templates fori list.for 自动生成循环 logi logd loge 打印 logt 生成 TAG logm 方法开头用 logr 方法结尾用 command + n 弹出Generate 布局 tools:showIn="@layout/fragment_sign_in" 可以包含另一个布局来预览 tools 关键字可以用在不同的参数上,用上后该参数只会在预览中有效。 public.xml 可以暴露想暴露的属性给 ide 格式为 <resources> <public name="ccl_app_name" type="string"/> </resources> ctrl + tab Switcher...

November 26, 2015

向android frameworks 添加自定义系统服务

以添加控制LED的服务为例子简述 android 系统服务的编写。 ##分析 首先需要知道的是android 之所以能够提供系统服务,是因为进程间通信,系统服务一直在后台运行。当程序想使用这些服务的时候,只要申请使用就可以了。android使用自己的Binder实现了这种进程间通行。 我想实现一个控制LED的系统服务,但是不需要过度了解 Binder, 只需要在系统服务的框架中添加相应的代码就可以了。 ##实现 ###定义接口 aidl文件定义了服务端提供的接口 :::java //ILEDManager.aidl package android.app; interface ILEDManager { void setWifiLED(boolean flag); void setApLED(boolean flag); } 定义好好需要在编译文件添加文件。 :::java //Android.mk core/java/android/app/ILEDManager.aidl \ ###接口实现代码 定义了接口后,就需要实现服务端逻辑了。 :::java //LEDManagerService.java package com.android.server; import android.util.Slog; import android.os.IBinder; import android.os.Binder; import android.content.Context; import android.app.LEDManager; import android.app.ILEDManager; public class LEDManagerService extends ILEDManager.Stub{ private static final String TAG = "LEDManagerService"; private LightsService mLightsService; private Context mContext; private final LightsService.Light mWifiLight; private final LightsService....

September 25, 2013