AudioManager가 AudioService 용 API를 제공한다는 것을 알고 있습니다. 그러나, 내가 원하는 것은 AudioService 클래스의 인스턴스를 얻는 것입니다.Android 시스템 서비스 인스턴스 가져 오기 (예 : AudioService)
소스를 연구하면 AudioManager가 원격 서비스에서 클래스를 호출 함을 알 수 있습니다.
AudioManager에 "sService"필드가 있지만 AudioService의 인스턴스가 아니라 대신 BinderInternal, IIRC의 인스턴스입니다. 어떻게 든 AudioService의 인스턴스에 액세스 할 수 있습니까? 또는 보안 문제로 인해 완전히 불가능합니다.
그건 내가 원하는 것이 아니에요. IAudioService는 바인더 일 뿐이며 바인더가 필요 없습니다. AudioService 클래스의 객체가 필요합니다 : https://github.com/android/platform_frameworks_base/blob/master/media/java/android/media/AudioService.java –
이 서비스와 상호 작용할 수있는 유일한 방법은 별도의 프로세스에서 실행되고 바인더 만이 서비스에 대한 호출을 마샬링 할 수 있기 때문에 바인더를 통해서만 가능합니다. 따라서 AudioService의 값을 직접 변경하려는 경우에는이 작업을 수행 할 수 없습니다. – Yury
감사합니다. 그것이 바로 내가 생각한 것입니다. 어쩌면 어떻게 든 원시 코드의 일종의 속임수/악용을 통해 할 수 있다고 생각했지만 불가능한 것처럼 보입니다. –