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

做家电维修网站能接到单吗爱站工具包怎么使用

做家电维修网站能接到单吗,爱站工具包怎么使用,网站建设中正在为您转,webmaster网站制作在Android开发中,经常会调用到一些系统服务,这些系统服务简化了上层应用的开发,这便是中间件的作用,中间件是介于系统和应用之间的桥梁,将复杂的底层逻辑进行一层封装,供上层APP直接调用,或者将一些APP没有权限一些操作放到中间件里面来实施. 假设一个需求,通过中间件调节系统亮…

        在Android开发中,经常会调用到一些系统服务,这些系统服务简化了上层应用的开发,这便是中间件的作用,中间件是介于系统和应用之间的桥梁,将复杂的底层逻辑进行一层封装,供上层APP直接调用,或者将一些APP没有权限一些操作放到中间件里面来实施.

        假设一个需求,通过中间件调节系统亮度,这边我们使用DisplayManager来调节亮度,DisplayManager在上层应用中是获取不到setBrightness函数的,但是在中间件中可以,这便是中间件的作用.
        这里我将一步一步展示中间件开发的步骤:

总共分为三部分:

        Android framework 中间件开发(一)

        Android framework 中间件开发(二)

        Android framework 中间件开发(三)

目录

        1.定义接口文件

        2.实现接口 

        3.添加到系统服务

        4.定义代表服务的字符串

        5.定义外部控制类

        6.实例化

        7.添加权限

        8.编译源码

        9.调用中间件


        1.定义接口文件

        frameworks\base\core\java\android\路径下新建一个文件夹,名字为"darkcontrol",在文件夹中新建一个文件,名字为IDarkControlManager.aidl,里面定义一个函数,传入需要调节的亮度值(0~1),内容如下

package android.darkcontrol;/** {@hide} */
interface IDarkControlManager{void setBright(float bright);}

 注意:这边开头的/** {@hide} */不能少,要不然会编译不通过

        2.实现接口 

         frameworks\base\services\core\java\com\android\server\路径下新建文件,名字为DarkControlService.java,实现IDarkControlManager里面的接口

package com.android.server;import static android.view.Display.DEFAULT_DISPLAY;
import android.content.Context;
import android.util.Log;
import android.hardware.display.DisplayManager;
import android.os.PowerManager;import android.darkcontrol.IDarkControlManager;public class DarkControlService extends IDarkControlManager.Stub {private final String TAG = "--==>>DarkControlService";private final Context mContext;private float maxBrightness = 1;private float minBrightness = 0;private DisplayManager mDisplayManager;private PowerManager mPowerManager;public DarkControlService(Context context) {mContext = context;Log.i(TAG, "DarkControlService init");mDisplayManager = context.getSystemService(DisplayManager.class);mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);maxBrightness = mPowerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);minBrightness = mPowerManager.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);}/*** 设置亮度** @param bright 0~1*/@Overridepublic void setBright(float bright) {Log.i(TAG, "setBright: " + bright);if (bright > 1) {bright = 1;}if (bright < 0) {bright = 0;}float brightness = (maxBrightness - minBrightness) * bright;setBrightnessToSystem(brightness );}//设置亮度到系统private void setBrightnessToSystem(float brightness) {Log.i(TAG, "setBrightnessToSystem: " + brightness);// 设置系统亮度mDisplayManager.setBrightness(DEFAULT_DISPLAY, brightness);}}

        到这里我们需要的业务逻辑基本完成了, 接下来在系统中注册我们的服务.

        3.添加到系统服务

        frameworks\base\services\java\com\android\server\SystemServer.java
        在startOtherServices函数中添加

这些就按照系统原有的服务添加即可.

        4.定义代表服务的字符串

        frameworks\base\core\java\android\content\Context.java
文件中定义字符串,这边的字符串内容要和SystemServer中addService中的一致

        5.定义外部控制类

        frameworks\base\core\java\android\darkcontrol\路径下新建文件,名字为DarkControlManager.java,内容如下:

package android.darkcontrol;import android.annotation.SystemService;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Log;
import android.darkcontrol.IDarkControlManager;@SystemService(Context.DARK_CONTROL_SERVICE)
public class DarkControlManager {private final String TAG = "--==>>DarkControlManager";private final Context mContext;private final IDarkControlManager mService;/*** {@hide}*/public DarkControlManager(Context context) {mContext = context;mService = IDarkControlManager.Stub.asInterface(ServiceManager.getService(Context.DARK_CONTROL_SERVICE));}/*** 设置亮度** @param bright 0~1*/public void setBright(float bright){try {mService.setBright(bright);} catch (Exception e) {e.printStackTrace();}}}

注意:1.开头的@SystemService(Context.DARK_CONTROL_SERVICE)

        2.调用services中的函数需要包裹一层try{}catch(){};

        6.实例化

        frameworks\base\core\java\android\app\SystemServiceRegistry.java
在SystemServiceRegistry文件中,找到开头的static{}代码块,实例化DarkControlManager

至此,中间件开发已经完成一半了.接下来的都是体力活...

        7.添加权限

        system/sepolicy/路径下,添加权限,总共41个文件.挨个添加

这些文件中的权限添加方式都差不多,大致分为一下几种,照着系统的抄就行,注意版本号的改动

*\service_contexts:

*\system_server.te

*\service.te

*\*.cil(注意这边的28,每个文件中的不一样)

到这里就中间件全部完成了

        8.编译源码

        不出意外,编译过程会出现这个error的情况:

        意思是修改了API,需要更新下,执行一下这行:

m api-stubs-docs-non-updatable-update-current-api

 然后再重新编译一下就行了

        9.调用中间件

        调用方式为getSystemService

注意不能直接new中间件对象,因为系统启动时已经new了一个对象了,这边不要重复new,使中间件保持单例.

下一篇:打包中间件

Android framework 中间件开发(二)

http://www.dtcms.com/wzjs/481831.html

相关文章:

  • 珠宝手机网站模板百度指数查询手机版
  • 9420高清在线观看免费大全广东企业网站seo报价
  • 东莞志豪建设公司网站宝鸡seo外包公司
  • 自己想做个网站怎么做的线上推广软件
  • 一网一平台是什么seo公司哪家好用
  • 做餐饮在环保局网站备案平台营销
  • 河池市住房城乡建设网站最能打动顾客的十句话
  • 江苏苏州网站建设如何制作简单的网页链接
  • 江苏连云港网站设计公司seo什么职位
  • 简单网页设计模板代码大全亚马逊seo是什么意思
  • 网站备案证书打印朋友圈广告怎么投放
  • 城阳做网站找哪家搜外
  • word超链接网站怎样做cps推广平台
  • 河南企业网站建设公司sem是什么意思的缩写
  • 网站营销与推广网络推广方案的内容
  • 食品 药品 监督 网站 源码 php十大搜索引擎神器
  • 中国化学工程第六建设有限公司河南seo排名
  • 做ppt的网站 知乎郑州官网网络营销外包
  • 政府网站建设 重要性网站推广有哪些方式
  • 做山西杂粮的网站优化师
  • 想做淘宝 网站怎么做外链发布平台大全
  • bootstrap响应式网站2021全国大学生营销大赛
  • 如何提升网站的权重个人如何做网络推广
  • 关于建设工程招标的网站流量平台有哪些
  • 代理分佣后台网站开发微信推广
  • 大家都在哪些网站做宣传站长之家权重
  • 一个网站如何产生流量网站优化网络推广seo
  • 工商网站官网查询网站建设技术托管
  • 广东网站设计工具站长工具是干嘛的
  • 怎么做百度联盟网站一键关键词优化