歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android aidl調用進程間服務的方法

Android aidl調用進程間服務的方法

日期:2017/3/1 10:24:24   编辑:Linux編程

我就拿最近做的項目來說明了,首先創建一個IFMService.aidl的接口文件,在R.java的目錄下會自動生成IFMService.java 的文件, 接口文件的內容如下:

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

public class FMService extends Service:實現如下:

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