客户端和服务端都采用C++程序编写
sampleClient.cpp ------------------------------------------------------------------- #include   #include   #include   #include   #include   #include   using   namespace  android; #ifdef  LOG_TAG #undef  LOG_TAG #endif #define  LOG_TAG  "sampleCallback" #define  SAMPLE_SERIVCE_DES  "sample.hello" #define  FUNC_CALLFUNCTION 1 int  main() {      sp sm = defaultServiceManager();      sp ibinder = sm->getService(String16(SAMPLE_SERIVCE_DES));        if  (ibinder == NULL){           LOGW(  "Client can't find Service"  );             return  -1;      }      Parcel _data,_reply;        int  ret = ibinder->transact(FUNC_CALLFUNCTION, _data, &_reply, 0);      LOGD(  "Client transact return %d" , ret);      ProcessState::self()->startThreadPool();      IPCThreadState::self()->joinThreadPool();        return  0; }
sampleService.cpp ---------------------------------------------------------------------------------------------------------- #include   #include   #include   #include   #include   using   namespace  android; #ifdef  LOG_TAG #undef  LOG_TAG #endif #define  LOG_TAG  "sampleService" #define  SAMPLE_SERIVCE_DES  "sample.hello" #define  FUNC_CALLFUNCTION 1 class  SampleService:  public  BBinder { public  :      SampleService() {           mydescriptor = String16(SAMPLE_SERIVCE_DES);      }              virtual  ~SampleService() {      }
       virtual   const  String16& getInterfaceDescriptor()  const  {             return  mydescriptor;      }       protected  :              void  callFunction() {           LOGE(  "Service callFunction-----------"  );      }              virtual  status_t onTransact(uint32_t code,  const  Parcel& data,               Parcel* reply, uint32_t flags = 0) {           LOGD(  "Service onTransact, code = %d"  , code);             switch  (code) {             case  FUNC_CALLFUNCTION:               callFunction();                 break ;             default :                 return  BBinder::onTransact(code, data, reply, flags);           }             return  0;      } private  :      String16 mydescriptor; };
int  main() {      sp < IServiceManager > sm = defaultServiceManager();      SampleService* samServ =  new  SampleService();      status_t ret = sm->addService(String16(SAMPLE_SERIVCE_DES), samServ);      LOGD(  "Service addservice return %d" , ret);      ProcessState::self()->startThreadPool();      IPCThreadState::self()->joinThreadPool(  true );       return  0; }

Android.mk -------------------------------------------------------------------
LOCAL_PATH:   $(call my-dir) include   $(CLEAR_VARS)
LOCAL_MODULE_TAGS :  = eng
LOCAL_SRC_FILES:  = \        sampleClient.cpp
LOCAL_C_INCLUDES +  = \          $(LOCAL_PATH)  \
LOCAL_SHARED_LIBRARIES :  = \     libcutils \     libbinder \     libutils \     libhardware
LOCAL_CFLAGS :  = -DRIL_SHLIB
LOCAL_MODULE:  = sampleClient
include   $(BUILD_EXECUTABLE)
include   $(CLEAR_VARS)
LOCAL_MODULE_TAGS :  = eng
LOCAL_SRC_FILES:  = \            sampleService.cpp
LOCAL_C_INCLUDES +  = \          $(LOCAL_PATH)  \
LOCAL_SHARED_LIBRARIES :  = \     libcutils \     libbinder \     libutils \     libhardware
LOCAL_CFLAGS :  = -DRIL_SHLIB
LOCAL_MODULE:  = sampleService
include   $(BUILD_EXECUTABLE)

------------------------------------------------------------------- 1、新建文件夹binderSample 2、将以上三个文件放入ics-4.x\external\binderSample

3、编译,拷贝到开发环境中,chmod,然后各自运行


更多相关文章

  1. Android创建文件夹
  2. Mqtt从服务端到Android客户端搭建(Android客户端搭建)
  3. 基于WebSocket的Android与服务端通信
  4. [hessdroid]Android下使用Hessian与Java服务端通讯的传值测试
  5. android读写assets目录下面的资源文件(文件夹)
  6. Android访问WCF服务(上篇)-服务端开发
  7. android实现ftp上传、下载,支持文件夹
  8. android java 检测文件夹(目录)是否存在,不存在则创建
  9. Android在外部修改了工程名文件夹名称,报错

随机推荐

  1. 通过userAgent判断是是否手机、微信、手
  2. Android第五个功能:文件存储到SDCard上面
  3. 原生APP中js怎样与Android和ios进行交互
  4. Android 复盘——你真的了解 setContentV
  5. Android(14) ArrayAdapter(数组适配器)的三
  6. android 出错信息为:Class 'Anonymous cla
  7. Android Q fastboot刷GSI(MTK)
  8. Android EventBus的使用
  9. Android中调试获取Log
  10. Android实现网络图片查看器和网页源码查