|  |  | 
| 
| Android HAL 开发 (5) |  
|  |  
|  |  
| 
| 上一章介绍了直接调用Service来操作硬件的方法,如果我们再优化一下结构,通过一个Manager来调用这个Service的方法,可能会更好。这样Service就可以跑在后台,由于这时候service和manager是两个进程,所以只能通过IPC来进行通信。我们在上一篇看到 
 public final class LedService extends ILedService.Stub { }, ILedService.Stub就是
 
 ILedService.aidl由aidl工具自动生成的类。
 
 我们现在看看manager是如何实现的:
 
 frameworks/base/core/java/mokoid/hardware/ILedService.aidl
 
 package mokoid.hardware;
 interface ILedService {
 boolean setOn(int led);
 boolean setOff(int led);
 }
 该aidl文件最后能被aidl工具自动生成ILedService.java文件,提供了remotable的LedService可用的接口setOn和setOff.
 
 frameworks/base/core/java/mokoid/hardware/LedManager.java
 
 public class LedManager {
 private static final String TAG = "LedManager";
 private ILedService mLedService;
 public LedManager() {
 mLedService = ILedService.Stub.asInterface(
 ServiceManager.getService("led"));
 if (mLedService != null) {
 Log.i(TAG, "The LedManager object is ready.");
 }
 }
 public boolean LedOn(int n) {
 boolean result = false;
 try {
 result = mLedService.setOn(n);
 } catch (RemoteException e) {
 Log.e(TAG, "RemoteException in LedManager.LedOn:", e);
 }
 return result;
 }
 public boolean LedOff(int n) {
 boolean result = false;
 try {
 result = mLedService.setOff(n);
 } catch (RemoteException e) {
 
 Log.e(TAG, "RemoteException in LedManager.LedOff:", e);
 }
 return result;
 }
 }
 阅读更多下文请点击: http://www.hzlitai.com.cn/article/ARM11/SYSTEM/Android_HAL_kaifa5.html
 |  |  
|  |  |  
|  评论仅代表评论人个人看法,不表明博客主人及中国工控网同意其观点或其描述  共3条评论  共1页  第1页   
 |  
| 
| 评论人署名:daisukeyu |  | 评论时间:2012/11/27 9:02:00 | 我要发表评论  |  |  
| 
| 评论人署名:daisukeyu |  | 评论时间:2013/5/8 15:09:00 | 我要发表评论  |  |  
| 
| 评论人署名:daisukeyu |  | 评论时间:2013/6/14 16:32:00 | 我要发表评论  |  |  
| 
|  相关博客新闻: |  |  |