a) 代码在系统中的位置
status bar 的相关代码位于:frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar。
其中PhoneStatusBarPolicy类主要负责接收action动作。

frameworks\base\services\java\com\android\server

其他一些核心操作全部位于StatusBarManagerService类里面。


b) 在frameworks\base\core\res\res\values\config.xml中定义需要显示的Icon 的配置信息

c) 在frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarPolicy.java 中初始化

// Alarm clock
mService.setIcon("alarm_clock", R.drawable.stat_sys_alarm, 0, null);
mService.setIconVisibility("alarm_clock", false);

// Sync state
mService.setIcon("sync_active", R.drawable.stat_sys_sync, 0, null);
mService.setIcon("sync_failing", R.drawable.stat_sys_sync_error, 0, null);
mService.setIconVisibility("sync_active", false);
mService.setIconVisibility("sync_failing", false);

d) 在frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarPolicy.java 中注册相应的receiver 来接受intent

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_ALARM_CHANGED)) {
updateAlarm(intent);
}
else if (action.equals(Intent.ACTION_SYNC_STATE_CHANGED)) {
updateSyncState(intent);
}
else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) ||
action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
updateBluetooth(intent);
}
else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION) ||
action.equals(AudioManager.VIBRATE_SETTING_CHANGED_ACTION)) {
updateVolume();
}
else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
updateSimState(intent);
}
else if (action.equals(TtyIntent.TTY_ENABLED_CHANGE_ACTION)) {
updateTTY(intent);
}
// [SystemUI] Support "Headset icon". {
else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
updateHeadSet(intent);
}
// [SystemUI] Support "Headset icon". }
}
};

更多相关文章

  1. Android浸入式
  2. 安卓基础学习(android studio)
  3. Android(安卓)获取当前时间及时间戳的互换
  4. Fresco源码解析 - 创建一个ImagePipeline(一)
  5. android 卸载程序、清除数据、停止服务用法
  6. android 通话记录插入 短信插入 联系人插入
  7. 使用git工具获取android源代码
  8. 多个项目Module全局配置
  9. android ListView向上滑动隐藏标题,下拉显示标题栏

随机推荐

  1. Android Monkey Test
  2. [置顶] android 开发问题集(一):SDK更新后
  3. android 数据话持久化——SQLite
  4. Android Bluetooth 相关说明
  5. Eclipse ADT 创建Android项目----工程目
  6. Android(安卓)SDK 2.3与Eclipse最新版开
  7. Android之父Andy Rubin访谈录
  8. Android Studio 混淆jar包
  9. Android下Activity全屏显示实现方法
  10. Android(安卓)apk 学习笔记 --- Android(