转载请注明出处
本位以添加控制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());
}
}