Как создать файл с расширением.aidl?

У меня есть следующие вопросы

  1. Нужно ли создавать простой файл с расширением.aidl?
  2. Я прочитал, что будет создан соответствующий файл.java, но в моем случае, когда я создал файл.aidl, я не смог найти такой файл.java
  3. Есть ли какая-то конкретная папка, где мне нужно создать этот файл.aidl.

4 ответа

Решение

Создайте файл.aidl для объектов, которые будут передаваться через IBinder. Вам следует создать файл.aidl в том же пакете, что и объект Java, который он определяет.

Google Developer, язык определения интерфейса Android (AIDL)

public void onStart(){
    super.onStart();
    Intent intent=new Intent(MainActivity.this, RemoteService.class);
    bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}


public void onServiceConnected(ComponentName className, IBinder service) {
    mIsum=Isum.Stub.asInterface((IBinder)service);
    mBound=true;
    }
/********************Application 1 Isum.aidl*****************
package com.example.Isum;

interface Isum{

int sum(int a, int b);

}

/***********************Application 1*********Don't do anything in main
/********create service class*********remote service
public class RemoteService extends Service{



    @Override
    public IBinder onBind(Intent intent) {


        return mBinder;
    }
    @Override
    public void onCreate(){
        super.onCreate();
    }
    @Override
    public void onDestroy(){
        super.onDestroy();
    }
private final Isum.Stub mBinder=new Isum.Stub() {

        @Override
        public int sum(int a, int b) throws RemoteException {


            int c=a+b;
            return c;
        }
    };

**********************Application 2  Main activity*********
public class MainActivity extends Activity {

    private Isum msum;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button btnSum=(Button)findViewById(R.id.btnResult);


        btnSum.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                bindService(new Intent("com.example.serviceprovider.RemoteService"),
                        mConnection, Context.BIND_AUTO_CREATE);

                        EditText FirstNo=(EditText)findViewById(R.id.ETfirstNo);
                        EditText SecondNo=(EditText)findViewById(R.id.ETSecondNo);

                        int a=Integer.parseInt(FirstNo.getText().toString());
                        System.out.println("###########"+a);
                        int b=Integer.parseInt(SecondNo.getText().toString());

                        try {

                            int c=msum.sum(a, b);
                            System.out.println("***********************"+c);


                            Toast.makeText(MainActivity.this, c, Toast.LENGTH_LONG).show();



                        } catch (Exception e) {

                            e.printStackTrace();
                        }
            }
        });


    }

    private ServiceConnection mConnection=new ServiceConnection(){

        @Override
        public void onServiceConnected(ComponentName arg0, IBinder arg1) {

            msum=Isum.Stub.asInterface(arg1);

        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            msum=null;


        }

    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
/****************include this in mainfest file


 <service android:name="RemoteService">
            <intent-filter>
                <action android:name="com.example.serviceprovider.RemoteService"/> 
                 </intent-filter>
           </service>

Вот мой ответ:

  1. Если вам нужно создать службу, вам нужно создать файл.aidl, чтобы сначала определить API.
  2. Если вы создали файл.aidl, ADT автоматически создаст соответствующий файл.java в папке gen/your-package-name.
  3. Нет. После создания файла вы должны выполнить следующие действия:

    а. определить API в.aidl

    б. создать свой сервис, который расширяется от класса обслуживания Android

    с. создайте экземпляр, который реализует XXX.Stub (XXX - это ваше имя файла.aidl)

    д. связать свой сервис

Надеюсь, поможет.

Другие вопросы по тегам