Android aidl调用进程间服务的方法


我就拿最近做的项目来说明了,首先创建一个IFMService.aidl的接口文件,在R.java的目录下会自动生成IFMService.java 的文件, 接口文件的内容如下:

  1. package net.kindroid.fm;  
  2.   
  3. interface IFMService  
  4. {  
  5.     /** 
  6.     * open FM 
  7.     */  
  8.     boolean openFM();  
  9.       
  10.     /** 
  11.     *  close FM 
  12.     */  
  13.     boolean closeFM();  
  14.       
  15.     /** 
  16.     *  whether FM is open 
  17.     */  
  18.     boolean isOpen();  
  19.       
  20.     /** 
  21.     *  set a special frequency to the FM 
  22.     */  
  23.     int setCurrentFrequency(in int frequency);  
  24.       
  25.     /** 
  26.     *  search FM tunes 
  27.     */  
  28.     boolean searchStation(in int start, in int direction, in int timeout, in int reserve);  
  29.       
  30.     /** 
  31.     *  get current Frequency 
  32.     */  
  33.     int getCurrentFrequency();  
  34.       
  35.     /** 
  36.     * stop search FM 
  37.     */  
  38.     boolean stopSearch();  
  39.       
  40.     /** 
  41.     * set FM volume 
  42.     */  
  43.     boolean setVolume(in int value);  
  44.       
  45.     /** 
  46.     *  get current Volume 
  47.     */  
  48.     int getCurrentVolume();  
  49.       
  50.     /** 
  51.     *  set current mute mode 
  52.     */  
  53.     int setMuteMode(in int mode);  
  54. }  

public class FMService extends Service:实现如下:

  1. public class MyServiceimpl extends IFMService.Stub  
  2. {  
  3.     WeakReference<FMService> mService;  
  4.   
  5.     MyServiceimpl(FMService service)  
  6.     {  
  7.         mService = new WeakReference<FMService>(service);  
  8.     }  
  9.   
  10.     @Override  
  11.     public boolean openFM() throws RemoteException  
  12.     {  
  13.         return mService.get().openFM();  
  14.     }  
  15.   
  16.     @Override  
  17.     public boolean closeFM() throws RemoteException  
  18.     {  
  19.         return mService.get().closeFM();  
  20.     }  
  21.   
  22.     @Override  
  23.     public boolean isOpen() throws RemoteException  
  24.     {  
  25.         return mService.get().isOpen();  
  26.     }  
  27.   
  28.     @Override  
  29.     public boolean searchStation(int start, int direction, int timeout, int reserve) throws RemoteException  
  30.     {  
  31.         return mService.get().searchStation(start, direction, timeout, reserve);  
  32.     }  
  33.   
  34.     @Override  
  35.     public int getCurrentFrequency() throws RemoteException  
  36.     {  
  37.         return mService.get().getTunedFrequency();  
  38.     }  
  39.   
  40.     @Override  
  41.     public boolean stopSearch() throws RemoteException  
  42.     {  
  43.         return mService.get().stopSearch();  
  44.     }  
  45.   
  46.     @Override  
  47.     public boolean setVolume(int value) throws RemoteException  
  48.     {  
  49.         return mService.get().setVolume(value);  
  50.     }  
  51.   
  52.     @Override  
  53.     public int getCurrentVolume() throws RemoteException  
  54.     {  
  55.         return mService.get().getCurrentVolume();  
  56.     }  
  57.   
  58.     @Override  
  59.     public int setMuteMode(int mode) throws RemoteException  
  60.     {  
  61.         return mService.get().setMuteMode(mode);  
  62.     }  
  63.   
  64.     @Override  
  65.     public int setCurrentFrequency(int frequency) throws RemoteException  
  66.     {  
  67.         return mService.get().setCurrentFrequency(frequency);  
  68.     }  
  69. }  
  • 1
  • 2
  • 下一页

相关内容