Получить экземпляр системного сервиса Android (например, AudioService)
Я знаю, что AudioManager предоставляет API для AudioService. Тем не менее, я хочу получить экземпляр класса AudioService.
Изучение источника показало, что AudioManager делает звонок на урок по удаленному сервису.
Я знаю, что AudioManager имеет поле "sService", но не является экземпляром AudioService, а является экземпляром BinderInternal, IIRC. Можно ли как-нибудь получить доступ к экземпляру AudioService? Или это совершенно невозможно из-за проблем безопасности?
1 ответ
Я полагаю, что вы можете легко получить ссылку на AudioService. Я думаю, что вы только что пропустили соответствующую часть кода:
private static IAudioService getService()
{
if (sService != null) {
return sService;
}
IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
sService = IAudioService.Stub.asInterface(b);
return sService;
}
Ты это видишь sService
будет ссылка на IAudioService. Точно так же в вашем приложении вы можете получить прямую ссылку на IAudioService. Однако я не понимаю, почему вам может понадобиться это сделать.