我有以下問題如何用.aidl擴展名創建文件?
- 我是否需要創建.aidl擴展一個簡單的文件?
- 我讀了一個對應的.java文件將被創建,但在我的情況下,當我創建一個.aidl文件;我找不到任何這樣的.java文件
- 是否有任何特定的文件夾,我需要創建這個.aidl文件。
我有以下問題如何用.aidl擴展名創建文件?
爲要通過IBinder傳遞的對象創建一個.aidl文件。您應該在它定義的Java對象所在的包中創建.aidl文件。
Google Developer, Android Interface Definition Language (AIDL)
這裏是我的回答:
否。創建文件後,您應該按照以下步驟操作:
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;
}