当前位置: 首页 > wzjs >正文

自己建个网站做优化网络建站流程

自己建个网站做优化,网络建站流程,网站后台加什么后缀,长沙做php的网站建设[应用程序] (应用进程)│↓ 调用简单API [SoundManager] │ ├─ 代理模式门面模式(应用进程)│ ├─ 缓存数据 ←─ 装饰器模式(应用进程)│ └─ 转换异常 ←─ 适配器模式(应用进程)│↓ 通过Bind…
[应用程序] (应用进程)│↓ 调用简单API
[SoundManager] │   ├─ 代理模式+门面模式(应用进程)│   ├─ 缓存数据 ←─ 装饰器模式(应用进程)│   └─ 转换异常 ←─ 适配器模式(应用进程)│↓ 通过Binder跨进程调用
[Binder Proxy]// 自动生成的Binder代理类(运行在应用进程,但处理跨进程通信)│↓ IPC(跨进程通信)
[SoundManagerService] (SystemServer进程)// 实际服务实现(运行在系统进程)└─ Binder Stub // 自动生成的Stub类(系统进程接收端)






以 Sound 服务为例,展示 Android 系统中添加一个系统服务的完整流程:

1. 定义 AIDL 接口

frameworks/base/core/java/android/media/ 创建接口文件:

// ISoundManager.aidl
package android.media;/** @hide */
interface ISoundManager {void playSound(in String soundName);void setVolume(int volume);int getCurrentVolume();boolean isMuted();
}

2. 实现服务端代码

系统服务的服务端实现(如 ActivityManagerService)通常放在 frameworks/base/services/

frameworks/base/services/core/java/com/android/server/sound/中实现服务:

// SoundManagerService.java
package com.android.server.sound;import android.content.Context;
import android.media.ISoundManager;public class SoundManagerService extends ISoundManager.Stub {private final Context mContext;private int mCurrentVolume = 50;private boolean mMuted = false;public SoundManagerService(Context context) {mContext = context;}@Overridepublic void playSound(String soundName) {enforceSoundPermission();// 实际播放声音的实现}@Overridepublic void setVolume(int volume) {mCurrentVolume = Math.max(0, Math.min(100, volume));}@Overridepublic boolean isMuted() {return mMuted;}private void enforceSoundPermission() {mContext.enforceCallingPermission("android.permission.MANAGE_SOUND","Sound permission required");}
}

3. 在 SystemServer 中启动服务

修改 frameworks/base/services/java/com/android/server/SystemServer.java

// 在 startOtherServices() 方法中添加
traceBeginAndSlog("StartSoundManagerService");
mSystemServiceManager.startService(SoundManagerService.class);
traceEnd();

4. 创建客户端管理器类

面向app开发的接口在frameworks/base/core/java/

存放的是 Android 框架的公共基础代码,主要分为两类:

1.面向应用开发者:提供 App 可调用的 SDK API(如 android.app、android.content)。
2.面向系统内部:实现 Android 核心机制(如 Binder、权限管理),这些对 App 透明,但支撑 App 运行。

frameworks/base/core/java/android/media/ 中创建:

// SoundManager.java
package android.media;import android.content.Context;public class SoundManager {public static final String SERVICE = "sound";private static ISoundManager sService;private final Context mContext;public static SoundManager get(Context context) {if (sService == null) {IBinder b = ServiceManager.getService(SERVICE);sService = ISoundManager.Stub.asInterface(b);}return new SoundManager(context);}private SoundManager(Context context) {mContext = context;}public void playSound(String soundName) {try {sService.playSound(soundName);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}public int getCurrentVolume() {try {return sService.getCurrentVolume();} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}
}

5. 在 ContextImpl 中注册服务

修改 frameworks/base/core/java/android/app/ContextImpl.java

// 在 static {} 块中添加
registerService(SoundManager.SERVICE, new ServiceFetcher() {@Overridepublic Object createService(ContextImpl ctx) {return SoundManager.get(ctx);}
});

6. 添加权限声明

frameworks/base/core/res/AndroidManifest.xml 中添加:

<permission android:name="android.permission.MANAGE_SOUND"android:protectionLevel="signature" />

7. 更新系统配置

frameworks/base/core/res/res/values/config.xml 中添加:

<bool name="config_soundServiceEnabled">true</bool>

8. 编译和测试

编译系统并测试新服务:

bash
make -j8

9. 应用层调用示例

应用中使用 Sound 服务:

SoundManager soundManager = (SoundManager) getSystemService(Context.SOUND_SERVICE);
soundManager.playSound("notification");
int volume = soundManager.getCurrentVolume();
http://www.dtcms.com/wzjs/838460.html

相关文章:

  • 网站的推广和优化方案什么叫做网站建设
  • 网站建设优化之优化关键字网站遭攻击
  • 大连鼎信网站建设公司江苏建筑工程网
  • 手机网站 百度推广保险网站建设公司
  • 电商网站开发步骤前端代码 分享网站
  • 房屋租赁网站建设如何给客户定位慈溪网站优化
  • 山东网站制作策划成都网站开发建
  • 上海八号桥 网站建设深圳做app网站的公司名称
  • 做h5游戏的网站标准化信息网站建设与应用
  • 网站关键字如何选择网站关键词推广哪家好
  • 企业网站建设定位注意的问题贵港网站营销
  • 饰品交易网站怎么做长沙网站定制开发建设
  • 示范高校建设网站wordpress 二维码插件
  • 深一互联网站建设怎样有没有咨询求助做任务的网站
  • 淄博比较好的网站建设公司网站怎么留住用户
  • 网站域名分析wordpress 显示用户名
  • 如何找网站做推广杭州精品网站建设
  • 透明网站模板案例平台 网站
  • 做移动网站优化软件旅行社建设网站
  • 《网页设计与网站建设》大作业要求百度电脑版官方下载
  • 网站建设原创上海网站推广联盟
  • 企业网站推广的方式wordpress+sql+导入数据库备份
  • 苏州建设工程检测协会网站软件开发前景和发展
  • 潍坊网站建设服务商安阳网站建设_
  • 外包做一个网站一般费用管件网络销售怎么找客户
  • 做书的网站有哪些内容开发公司计算实际成本含土地费的税金吗
  • 青岛正规的网站建设公司惠州网站seo排名优化
  • c#做asp.net网站西安网站建设公司咪豆
  • 绍兴市越城区建设局网站深圳建筑装饰人才网
  • 自己做的宫崎骏动漫网站企业开展网络营销方案