Расширить интерфейс сервиса Android - PullRequest
1 голос
/ 26 сентября 2019

Я работаю с источником Android и хочу добавить дополнительный метод в AUDIO_SERVICE, который реализован в AudioManager.java.Я добавил дополнительный метод в класс AudioManager, и теперь я знаю, как его вызывать, и приложения.

Я предполагаю, что после добавления метода мне нужно создать / обновить и файл aidl, чтобы приложение знало оинтерфейс

В приложении я хочу использовать его как:

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mAudioManager.myNewFunction();

Любая помощь будет принята с благодарностью

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Вы не должны обновлять исходный код Android.Я хотел бы сделать что-то вроде этого:

public class MyAudioManager {
    AudioManager myAudioManager;

    public MyAudioManager(Context context){
        this.myAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    }

    public void myAudioManagerMethod(){
        //Do your audio manager stuff here
    }

}

Затем вы можете вызвать свой метод так:

//Assuming you call this from an Activity
MyAudioManager mManager = new MyAudioManager(this); 
mManager.myAudioManagerMethod();

Это позволяет вам получить экземпляр AudioManager и позволяет вамвзаимодействовать с ним по мере необходимости.

0 голосов
/ 29 сентября 2019

Насколько мне известно, AudioManager работает как часть процесса приложения, а не system_process.Поэтому вам нужно будет изменить файл AIDL , если вы хотите добавить метод в AudioService и вызвать его из AudioManager.Но не если вы добавляете его только в AudioManager.

Просто добавьте метод в AudioManager и скомпилируйте.Чтобы он «появлялся» при разработке приложения в Android Studio, вам нужно сгенерировать SDK из вашей среды ASOP. .
Обязательно запустите «make update-api», чтобы подтвердитьновый метод публичного API.

Другой вариант генерации SDK - использовать отражение в приложении для доступа к новому методу.Не рекомендуется


...