2014-02-27 75 views
0

我有以下問題如何用.aidl擴展名創建文件?

  1. 我是否需要創建.aidl擴展一個簡單的文件?
  2. 我讀了一個對應的.java文件將被創建,但在我的情況下,當我創建一個.aidl文件;我找不到任何這樣的.java文件
  3. 是否有任何特定的文件夾,我需要創建這個.aidl文件。

回答

0

這裏是我的回答:

  1. 如果你需要創建一個服務,你需要創建一個.aidl文件首先定義API。
  2. 如果您創建了.aidl文件,ADT會自動在gen/your-package-name文件夾中創建相應的.java文件。
  3. 否。創建文件後,您應該按照以下步驟操作:

    a。在.aidl中定義API

    b。創建您的服務,從Android延伸服務類別

    c。創建一個實現XXX.Stub的實例(XXX是你的.aidl文件名)

    d。綁定你的服務

希望它有幫助。

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