Android 如何创建扩展名为.aidl的文件?

Android 如何创建扩展名为.aidl的文件?,android,aidl,Android,Aidl,我有以下问题 我是否需要创建扩展名为.aidl的简单文件? 我读到将创建一个相应的.java文件,但在我的例子中,当我创建一个.aidl文件时;我找不到任何这样的.java文件 是否有我需要创建此.aidl文件的特定文件夹。 为要通过IBinder传递的对象创建.aidl文件。您应该在与它定义的Java对象相同的包中创建.aidl文件 以下是我的答案: 如果需要创建服务,则首先需要创建一个.aidl文件来定义API。 如果您已经创建了.aidl文件,ADT将自动在gen/your package

我有以下问题

我是否需要创建扩展名为.aidl的简单文件? 我读到将创建一个相应的.java文件,但在我的例子中,当我创建一个.aidl文件时;我找不到任何这样的.java文件 是否有我需要创建此.aidl文件的特定文件夹。
为要通过IBinder传递的对象创建.aidl文件。您应该在与它定义的Java对象相同的包中创建.aidl文件

以下是我的答案:

如果需要创建服务,则首先需要创建一个.aidl文件来定义API。 如果您已经创建了.aidl文件,ADT将自动在gen/your package name文件夹中创建相应的.java文件。 否。创建文件后,应按照以下步骤操作:

a。在.aidl中定义API

b。创建从android服务类扩展而来的服务

c。创建一个实现XXX的实例。Stub XXX是您的.aidl文件名

d。约束你的服务

希望能有帮助

/********************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>
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;
    }