androidaidl文件
❶ Android Studio開發環境建立aidl文件,怎麼生成相應的java文件
Android
Studio開發環境建立aidl文件,按照如下的步驟生成相應的java文件。
1、AndroidStudio的aidl文件默認放在src/main/aidl目錄下,aidl目錄和java目錄同級別。
在java目錄上右鍵,創建一個aidl文件,此文件會默認生成到aidl目錄下,同時必須要指明包名,包名必須和java目錄下的包名一致。
2、Model類必須要實現Parcelable介面!
3、如果aidl需要使用Model類,必須要import進來,不然會找不到。
4、然後Make一下,就會自動生成Java文件。
❷ 如何在AndroidStudio中使用AIDL
1、首先創建一個AndroidStudio工程(這個是遠程應用,提供方法讓另外的應用調用的),在mian目錄下邊創建aidl文件夾(和java文件夾同級),右鍵app->New->Folder->AIDL Folder
2、在aidl下創建一個包,包里創建一個*.aidl文件,右鍵aidl->New->AIDL->AIDL file(圖片紅框就是創建完成後的樣子)
3、在aidl文件寫要被調用的方法,此方法不能有許可權修飾符
4、首先build下,然後創建一個Service(注意一定要在onBind方法中返回mIBinder,)public class FDService extends Service{@Nullable@Overridepublic IBinder onBind(Intent intent) {return mIBinder;}private IBinder mIBinder = new FDAidlInterface.Stub() {@Overridepublic void callFDSetRoute() throws RemoteException {Log.e(「wjh」,」收到了遠程的請求」);}
@Overridepublic int add(int a, int b) throws RemoteException {Log.e("wjh","收到了遠程的請求");return a+b;}
};}
首先build下,然後創建一個Service(注意一定要在onBind方法中返回mIBinder,)public class FDService extends Service{@Nullable@Overridepublic IBinder onBind(Intent intent) {return mIBinder;}private IBinder mIBinder = new FDAidlInterface.Stub() {@Overridepublic void callFDSetRoute() throws RemoteException {Log.e(「wjh」,」收到了遠程的請求」);}
@Overridepublic int add(int a, int b) throws RemoteException {Log.e("wjh","收到了遠程的請求");return a+b;}
};}
❸ android studio 怎麼拷貝aidl文件
android studio的AIDL服務是什麼 為了使其他的應用程序也可以訪問本應用程序提供的服務,Android系統採用了遠程過程調用(Remote Procere Call,RPC)方式來實現。與很多其他的基於RPC的解決方案一樣,Android使用一種介面定義語言(Interface Definition Language,IDL)來公開服務的介面。因此,可以將這種可以跨進程訪問的服務稱為AIDL(Android Interface Definition Language)服務。 android studio創建AIDL服務文件具體步驟如下: 1、要進行創建AIDL的介面之前,需要進行選中當前的項目的文件中,選中完成項目之後。 2、然後進行點擊Android studio菜單中的“file”的選項,就會彈出了一個下拉的菜單中“new”選項。 3、就會彈出了一個下一級的菜單中,進行選擇下一級菜單中的“AIDL”的選項。 4、就會彈出了一個菜單中,進行點擊這個菜單中的“AIDL FILE”的選項。 5、就會彈出了一個AIDL的窗口的選項,需要給介面進行添加名稱,在interface name的輸入框中進行輸入名稱,點擊”finish“的選項。 6、然後在項目中進行天機了一個aidl的文件,在該文件下中,有一個aidl的後綴的文件,其實就是一個介面文件。 實例: 伺服器端: 本例中將建立一個簡單的AIDL服務。這個AIDL服務只有一個getValue方法,該方法返回一個String類型的值。在安裝完服務後,會在客戶端調用這個getValue方法,並將返回值在TextView組件中輸出。建立這個AIDL服務的步驟如下: (1)建立一個aidl文件。在Java包目錄中建立一個IMyService.aidl文件。IMyService.aidl文件的位置如圖所示。 IMyService.aidl文件的內容如下: package cn.m9.mobile.aidl; interface IMyService { String getValue(); } IMyService.aidl文件的內容與Java代碼非常相似,但要注意,不能加修飾符(例如,public、private)、AIDL服務不支持的數據類型(例如,InputStream、OutputStream)等內容。 (2)如果IMyService.aidl文件中的內容輸入正確,ADT會自動生成一個IMyService.java文件。讀者一般並不需要關心這個文件的具體內容,也不需要維護這個文件。 (3)編寫一個MyService類。MyService是Service的子類,在MyService類中定義了一個內嵌類(MyServiceImpl),該類是IMyService.Stub的子類。MyService類的代碼如下: package cn.m9.mobile.aidl; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyService extends Service { public class MyServiceImpl extends IMyService.Stub { public String getValue() { return "Android is very powerful"; } } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return new MyServiceImpl(); } } 在編寫上面代碼時要注意如下兩點: IMyService.Stub是根據IMyService.aidl文件自動生成的,一般並不需要管這個類的內容,只需要編寫一個繼承於IMyService.Stub類的子類(MyServiceImpl類)即可。 onBind方法必須返回MyServiceImpl類的對象實例,否則客戶端無法獲得服務對象。 (4)在AndroidManifest.xml文件中配置MyService類,代碼如下: 其中"cn.m9.activity.IMyService"是客戶端用於訪問AIDL服務的ID。 下面來編寫客戶端的調用代碼。首先新建一個Eclipse Android工程(TestAidlClient),並將自動生成的IMyService.java文件連同包目錄一起復制到 testAIDL_client工程的src目錄中(R文件除外). 調用AIDL服務首先要綁定服務,然後才能獲得服務對象,代碼如下: package cn.m9.mobile; import cn.m9.mobile.R; import cn.m9.mobile.aidl.IMyService; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class TestAidlClient extends Activity implements OnClickListener { /** Called when the activity is first created. */ private IMyService myService = null; private Button btnInvokeAIDLService; private Button btnBindAIDLService; private TextView textView; private static final String TAG="TestAIDLClient"; private ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub myService = IMyService.Stub.asInterface(service); btnInvokeAIDLService.setEnabled(true); } @Override public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnInvokeAIDLService = (Button) findViewById(R.id.btnInvokeAIDLService); btnBindAIDLService = (Button) findViewById(R.id.btnBindAIDLService); btnInvokeAIDLService.setEnabled(false); textView = (TextView) findViewById(R.id.textview); btnInvokeAIDLService.setOnClickListener(this); btnBindAIDLService.setOnClickListener(this); } @Override public void onClick(View view) { // TODO Auto-generated method stub switch (view.getId()) { case R.id.btnBindAIDLService: //綁定AIDL服務 bindService(new Intent("cn.m9.mobile.aidl.IMyService"), serviceConnection,Context.BIND_AUTO_CREATE); break; case R.id.btnInvokeAIDLService: try{ textView.setText(myService.getValue()); } catch (Exception e) { } break; } } } 在編寫上面代碼時應注意如下兩點: 使用bindService方法來綁定AIDL服務。其中需要使用Intent對象指定AIDL服務的ID,也就是標簽中android:name屬性的值。 在綁定時需要一個ServiceConnection對象。創建ServiceConnection對象的過程中如果綁定成功,系統會調用onServiceConnected方法,通過該方法的service參數值可獲得AIDL服務對象。 首先運行AIDL服務程序,然後運行客戶端程序,單擊【綁定AIDL服務】按鈕,如果綁定成功,【調用AIDL服務】按鈕會變為可選狀態,單擊這個按鈕,會輸出getValue方法的返回值.
❹ android studio aidl文件怎麼建立
用startService,bindService創建的服務只能在本應用程序內訪問,如果要使得本程序的服務能夠被其他應用程序訪問,這時候就要使用遠程過程調用(Remote Procere Call,RPC)方式來實現,安卓定義了一種介面定義語言Android Interface Definition Language,簡稱AIDL。今天記錄一下如何在Android Studio下創建AIDL Serivce。
建立ADIL Service的步驟比建立普通Service要多一些,主要有:
1、創建AIDL文件,在這裡面定義遠程介面。
2、生成Java介面文件。
3、建立一個Service的子類,並且記得在AndroidManifest.xml文件中配置。
在客戶端調用ADIL Servie:
1、拷貝伺服器端的AIDL文件,並生成Java介面文件。
2、用BindService來調用Service,與調用普通Serivce相類似,只是獲取IBinder的方式有點不一樣。
下面結合例子來看看,編程環境是Android Studio v1.0.1, 本AIDL Service只有兩個方法,返回一個字元串和double型數據。
http://blog.csdn.net/shenzhonglaoxu/article/details/42737195
❺ Android Studio開發環境建立aidl文件,怎麼生成相應的java文件
1.AndroidStudio的aidl文件默認放在src/main/aidl目錄下,aidl目錄和java目錄同級別。
❻ android 怎麼生成aidl文件
文件自己寫,file>new>file寫一個新文件.aidl(全小寫)
aidl基本數據
❼ android怎麼寫aidl文件
建立AIDL服務要比建立普通的服務復雜一些,具體步驟如下:
(1)在Eclipse Android工程的Java包目錄中建立一個擴展名為aidl的文件。該文件的語法類似於Java代碼,但會稍有不同。詳細介紹見實例52的內容。
(2)如果aidl文件的內容是正確的,ADT會自動生成一個Java介面文件(*.java)。
(3)建立一個服務類(Service的子類)。
(4)實現由aidl文件生成的Java介面。
(5)在AndroidManifest.xml文件中配置AIDL服務,尤其要注意的是,<action>標簽中android:name的屬性值就是客戶端要引用該服務的ID,也就是Intent類的參數值。
建立AIDL服務
本例中將建立一個簡單的AIDL服務。這個AIDL服務只有一個getValue方法,該方法返回一個String類型的值。在安裝完服務後,會在客戶端調用這個getValue方法,並將返回值在TextView組件中輸出。建立這個AIDL服務的步驟如下:
(1)建立一個aidl文件。在Java包目錄中建立一個IMyService.aidl文件。IMyService.aidl文件的位置如圖
IMyService.aidl文件的內容如下:
Java代碼:
package eoe.demo;
interface IMyService {
String getValue();
}
IMyService.aidl文件的內容與Java代碼非常相似,但要注意,不能加修飾符(例如,public、private)、AIDL服務不支持的數據類型(例如,InputStream、OutputStream)等內容。
(2)如果IMyService.aidl文件中的內容輸入正確,ADT會自動生成一個IMyService.java文件。讀者一般並不需要關心這個文件的具體內容,也不需要維護這個文件。關於該文件的具體內容,讀者可以查看本節提供的源代碼。
(3)編寫一個MyService類。MyService是Service的子類,在MyService類中定義了一個內嵌類(MyServiceImpl),該類是IMyService.Stub的子類。MyService類的代碼如下:
Java代碼:
package eoe.demo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
public class MyService extends Service {
public class MyServiceImpl extends IMyService.Stub {
@Override
public String getValue() throws RemoteException {
return "Android/OPhone開發講義";
}
}
@Override
public IBinder onBind(Intent intent) {
return new MyServiceImpl();
}
}
在編寫上面代碼時要注意如下兩點:
IMyService.Stub是根據IMyService.aidl文件自動生成的,一般並不需要管這個類的內容,只需要編寫一個繼承於IMyService.Stub類的子類(MyServiceImpl類)即可。
onBind方法必須返回MyServiceImpl類的對象實例,否則客戶端無法獲得服務對象。
(4)在AndroidManifest.xml文件中配置MyService類,代碼如下:
Java代碼:
<service android:name=".MyService" >
<intent-filter>
<action android:name="net.blogjava.mobile.aidl.IMyService" />
</intent-filter>
</service>
下面來編寫客戶端的調用代碼。首先新建一個Eclipse Android工程(ch08_aidlclient),並將自動生成的IMyService.java文件連同包目錄一起復制到ch08_aidlclient工程的src目錄中,如圖所示。
調用AIDL服務首先要綁定服務,然後才能獲得服務對象,代碼如下:
Java代碼:
package net.blogjava.mobile;
import net.blogjava.mobile.aidl.IMyService;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle; import android.os.IBinder;
import android.view.View; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.TextView;
public class Main extends Activity implements OnClickListener {
private IMyService myService = null;
private Button btnInvokeAIDLService;
private Button btnBindAIDLService;
private TextView textView;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 獲得服務對象
myService = IMyService.Stub.asInterface(service);
btnInvokeAIDLService.setEnabled(true);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnBindAIDLService:
// 綁定AIDL服務
bindService(new Intent("net.blogjava.mobile.aidl.IMyService"), serviceConnection, Context.BIND_AUTO_CREATE);
break;
case R.id.btnInvokeAIDLService:
try {
textView.setText(myService.getValue());
// 調用服務端的getValue方法
} catch (Exception e) {
}
break;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnInvokeAIDLService = (Button) findViewById(R.id.btnInvokeAIDLService);
btnBindAIDLService = (Button) findViewById(R.id.btnBindAIDLService); btnInvokeAIDLService.setEnabled(false);
textView = (TextView) findViewById(R.id.textview);
btnInvokeAIDLService.setOnClickListener(this);
btnBindAIDLService.setOnClickListener(this);
}。
❽ android framework aidl生成文件在哪
建立AIDL服務要比建立普通的服務復雜一些,具體步驟如下:
(1)在Eclipse Android工程的Java包目錄中建立一個擴展名為aidl的文件。該文件的語法類似於Java代碼,但會稍有不同。詳細介紹見實例52的內容。
(2)如果aidl文件的內容是正確的,ADT會自動生成一個Java介面文件(*.java)。
(3)建立一個服務類(Service的子類)。
(4)實現由aidl文件生成的Java介面。
(5)在AndroidManifest.xml文件中配置AIDL服務,尤其要注意的是,<action>標簽中android:name的屬性值就是客戶端要引用該服務的ID,也就是Intent類的參數值。
❾ android studio的aidl文件怎麼創建
新建一個項目,如aidl。 點擊file——>new,可以看到,列表中是有aidl文件的。點擊創建,輸入aidl文件名。 這時,系統會自動生成一個和你之前包名一樣的一個包,裡面就有一個aidl文件。 編輯aidl文件,如: // IMyService.aidlpackage com.example.aidl;// Declare any non-default types here with import statementsinterface IMyService { /** * Demonstrates some basic types that you can use as parameters * and return values in AIDL. */ // 為AIDL服務的介面方法,調用AIDL服務的程序需要調用該方法 int add(int value1, int value2);} 編譯項目,就可以正常調用了,比如: //實現介面中的方法 class MyServiceImpl extends IMyService.Stub{ @Override public int add(int value1, int value2) throws RemoteException { return value1 +value2; }}
❿ android studio創建aidl文件parcelable類怎麼創建
1、要進行創建aidl的介面之前,需要進行選中當前的項目的文件中,選中完成項目之後。
2、然後進行點擊android
studio菜單中的「file」的選項,就會彈出了一個下拉的菜單中「new」選項。
3、就會彈出了一個下一級的菜單中,進行選擇下一級菜單中的「aidl」的選項。
4、就會彈出了一個菜單中,進行點擊這個菜單中的「aidl
file」的選項。
5、就會彈出了一個aidl的窗口的選項,需要給介面進行添加名稱,在interface
name的輸入框中進行輸入名稱,點擊」finish「的選項。
6、然後在項目中進行天機了一個aidl的文件,在該文件下中,有一個aidl的後綴的文件,其實就是一個介面文件。