为系统AudioManager添加新的接口方法

来源:互联网 发布:个人交易怎么走淘宝 编辑:程序博客网 时间:2024/06/18 18:46

转载请注明出处

本位以添加控制AudioRecorder禁止使用为例进行说明

整个需要添加的类均在frameworks\base\media\java\android\media 包下

1.AudioManager.java中添加两个方法,设置是否可用

/**     *      *     * @hide     */    public boolean getRecorderEnable() {IAudioService service = getService();        try {          return service.getRecorderEnable();        } catch (RemoteException e) {            Log.e(TAG, "Dead object in getLastAudibleStreamVolume", e);            return false;        }            }/**     *      *     * @hide     */    public void setRecorderEnable(boolean show){       IAudioService service = getService();        try {          service.setRecorderEnable(show);        } catch (RemoteException e) {            Log.e(TAG, "Dead object in getLastAudibleStreamVolume", e);                    }    }
2.IAudioService.aidl中添加2个新的接口

boolean getRecorderEnable();void setRecorderEnable(boolean enable);
3.AudioService中添加接口的实现
private boolean showSoundRecorder=false;/** @see AudioManager#setRecorderEnable(boolean) */    public void setRecorderEnable(boolean show){        showSoundRecorder=show;    }    /** @see AudioManager#getRecorderEnable() */    public boolean getRecorderEnable() {       return showSoundRecorder;    }

系统应用调用:

 mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);mAudioManager.setRecorderEnable(true);
第三方应用调用:

// 第一种反射方式    try {method = AudioManager.class.getDeclaredMethod("setRecorderEnable",new Class[] { boolean.class });method.invoke(audioManager, new Object[] { new Boolean(true) });} catch (Exception e) {// TODO Auto-generated catch block//e.printStackTrace();Log.i("gao", e.toString());}}




0 0
原创粉丝点击