Android - Используя метод от Сервиса в Действии?

У меня есть следующий метод в Сервисе в моем приложении:

public void switchSpeaker(boolean speakerFlag){

        if(speakerFlag){
        audio_service.setSpeakerphoneOn(false);
        }
        else{
        audio_service.setSpeakerphoneOn(true);
        }

    }

Таким образом, мой вопрос - то, что является лучшим и самым эффективным способом быть в состоянии использовать этот метод в Действии, любят, следует

final Button speaker_Button = (Button) findViewById(R.id.widget36);

            speaker_Button.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){

                    switchSpeaker(true); //method from Service

                }

            });

Я должен сделать AIDL или есть ли более простой путь?

13
задан Donal Rafferty 16 February 2010 в 11:14
поделиться

2 ответа

Вы должны предоставить клиентам метод сервиса switchSpeaker . Определите свой файл .aidl. Затем подключитесь к этой услуге из своей деятельности и просто позвоните по номеру switchSpeaker . См. документацию

Нет другого простого способа вызвать этот метод, только если он статический)

3
ответ дан 1 December 2019 в 17:14
поделиться

Это общедоступно, верно :)

Вы можете вызвать метод bindService (Intent). Взгляните на ApiDemos, класс LocalServiceBinding.

В методе обратного вызова onServiceConnected вы можете увидеть:

    public void onServiceConnected(ComponentName className, IBinder service) {
        // This is called when the connection with the service has been
        // established, giving us the service object we can use to
        // interact with the service.  Because we have bound to a explicit
        // service that we know is running in our own process, we can
        // cast its IBinder to a concrete class and directly access it.
        mBoundService = ((LocalService.LocalBinder)service).getService();

        // Tell the user about this for our demo.
        Toast.makeText(LocalServiceBinding.this, R.string.local_service_connected,
                Toast.LENGTH_SHORT).show();
    }

Теперь используйте объект службы (mBoundService) для вызова метода.

Вот и все :)

3
ответ дан 1 December 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: