- 浏览: 534704 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
服务器端:
工程结构图:
[img]
[/img]
IPerson.aidl
IPersonImpl
MyRemoteService
MainActivity
res/layout/main.xml
AndroidManifest.xml
注意:gen 下的 com.zzl.test下的文件时自动生成的。
客户端:
工程结构图:
[img]
[/img]
这里的src下的com.zzl.test这个包是从服务器拷过来的。
MainActivity:
工程结构图:
[img]
[/img]
IPerson.aidl
package com.zzl.test; interface IPerson { void setName(String name); void setAge(int age); String display(); }
IPersonImpl
package com.zzl.test; import android.os.RemoteException; public class IPersonImpl extends IPerson.Stub{ private String name; private int age; @Override public String display() throws RemoteException { return "name="+name+"age="+age; } @Override public void setAge(int age) throws RemoteException { this.age = age; } @Override public void setName(String name) throws RemoteException { this.name = name; } }
MyRemoteService
package com.zzl.test; import com.zzl.test.IPerson.Stub; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyRemoteService extends Service{ private Stub iPerson = new IPersonImpl(); @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return iPerson; } }
MainActivity
package com.zzl.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button btn_start; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_start = (Button) findViewById(R.id.button1); btn_start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(),MyRemoteService.class); startService(intent); btn_start.setText("服务器已启动"); } }); } }
res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="启动服务器" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zzl.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="MyRemoteService" android:process=":remote"> <intent-filter> <action android:name="com.zzl.test.MyRemoteService"></action> </intent-filter> </service> </application> </manifest>
注意:gen 下的 com.zzl.test下的文件时自动生成的。
客户端:
工程结构图:
[img]
[/img]
这里的src下的com.zzl.test这个包是从服务器拷过来的。
MainActivity:
package com.zzl.client; import com.zzl.test.IPerson; import android.app.Activity; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private IPerson iPerson; private Button btn_start; private ServiceConnection conn = new ServiceConnection(){ @Override synchronized public void onServiceConnected(ComponentName name, IBinder service) { iPerson = IPerson.Stub.asInterface(service); if(iPerson!=null){ try { //RPC方法调用 iPerson.setName("无敌小鸡鸡"); iPerson.setAge(6); String msg = iPerson.display(); Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); } catch (RemoteException e) { e.printStackTrace(); } } } @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub }}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_start = (Button) findViewById(R.id.button1); btn_start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); //设置Intent 的Action属性 intent.setAction("com.zzl.test.MyRemoteService"); //绑定服务 bindService(intent, conn, Service.BIND_AUTO_CREATE); } }); } }
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2008android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2046Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1553SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 794Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 739转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1016===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1695(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1433在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 982package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1254工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1006SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1227Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 798一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1170运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 902package com.zzl.tools; impor ...
相关推荐
- 接口:AIDL文件以`.aidl`为扩展名,定义了一个接口,其中包含要跨进程暴露的方法。 - 方法:接口中声明的方法,包括返回值类型、参数类型和参数名称。 - 数据类型:AIDL支持基本数据类型(如int、float、String等...
在服务端,你需要创建一个Service来实现这个接口,并在`onBind()`方法中返回实现了AIDL接口的对象。例如: ```java public class MyService extends Service { private IMyAidlInterface.Stub binder = new ...
有时,我们可能需要在Service和另一个应用组件之间进行更复杂的通信,例如双向交互,这时可以利用Android Interface Definition Language(AIDL)来实现。本文将深入探讨如何使用AIDL在Service与Client之间实现绑定...
本篇文章将深入探讨AIDL的工作原理以及如何绑定Service,帮助开发者理解这两个关键概念。 **AIDL简介** AIDL是一种特殊的接口定义语言,允许不同进程间的Android组件进行通信。当一个应用需要与另一个应用的Service...
在本项目源码中,我们可以看到一个完整的AIDL服务示例,包括服务端的Service实现、AIDL接口定义,以及客户端如何绑定服务并使用接口的方法。通过对这些源码的分析和实践,开发者可以更深入地理解Android的跨进程通信...
AIDL允许开发者定义服务接口,使得一个应用程序组件可以调用另一个在不同进程中运行的组件的方法。在这个"aidl-sample.zip"压缩包中,我们预计将找到一个完整的示例,包括服务端(Server)和客户端(Client)的代码...
AIDL(Android Interface Definition Language)是一个简单的接口定义语言,用于创建可以在不同进程中调用的方法。通过编写AIDL文件,你可以定义接口,包括方法的输入和输出参数。Android会自动生成对应的Java代码,...
在服务端,你需要创建一个实现了AIDL接口的类,并在服务(Service)中绑定(bind)这个类。而在客户端,你需要创建一个服务连接(ServiceConnection),在onServiceConnected()方法中获取到服务端提供的IMyService...
1. 当Service需要在不同进程中被其他应用调用时,可以使用AIDL定义一个接口,服务端实现该接口并在Service中暴露出来。 2. 客户端通过bindService()绑定到Service,并在onServiceConnected()回调中获取到AIDL接口的...
当我们需要一个应用程序组件(如服务Service)与另一个不同进程的应用组件进行数据交换时,AIDL就显得尤为重要。在本实例"Service AIDL"中,我们将探讨如何使用AIDL实现跨应用通信。 1. **AIDL基础** - AIDL文件是...
AIDL(Android Interface Definition Language)是Android提供的一种机制,它允许开发者定义接口,使得一个应用可以调用另一个应用中的服务。本教程将深入解析"AIDL-demo"源码,以帮助你理解AIDL的工作原理和实际...
本示例"一个及其简单的AIDL远程Service调用"展示了如何通过AIDL在客户端(TestAidlClient)与服务端(TestAidlService)之间建立通信,实现远程调用。 首先,我们需要理解Service的基本概念。在Android中,Service...
在Android应用开发中,当需要一个应用组件(如Activity或Service)与另一个不同进程的应用组件进行通信时,AIDL就显得尤为重要。本Demo旨在通过一个简单的例子展示如何使用AIDL实现本地通信。 首先,我们来理解AIDL...
首先,我们需要创建一个AIDL文件,例如`IMyService.aidl`,在这个文件中定义服务需要暴露的接口。AIDL文件的基本语法类似于Java,但更注重于数据传输。例如,你可以定义一个方法`getCustomData()`,返回一个自定义的...
AIDL(Android Interface Definition Language)是Android提供的一个工具,用于处理进程间通信(IPC, Inter-Process Communication),使得不同进程间的组件能够相互通信。本示例代码将探讨如何在Android应用中使用...
在Android开发中,AIDL(Android Interface Definition Language)是一种用于跨进程通信(IPC,Inter-Process Communication)的机制,使得一个应用可以调用另一个应用中的服务。本篇将深入探讨如何通过AIDL来调用...
`IRemoteBinder.aidl`可能定义了一个接口,该接口包含了处理跨进程通信的方法,而`Book.aidl`则可能定义了一个自定义的数据类型`Book`,这个类型将在进程间传递。 `IRemoteBinder.aidl`可能会这样写: ```aidl ...
AIDL(Android Interface Definition Language)是Android提供的一个工具,用于在不同进程间定义和实现接口,使得跨进程通信(IPC,Inter-Process Communication)变得简单。现在,我们来详细探讨如何通过AIDL在...
AIDL使得一个应用程序能够暴露其服务给其他应用程序,即使它们运行在不同的进程中。通过AIDL,我们可以定义接口,使得客户端和服务端能够交换数据,进行方法调用。本篇文章将详细介绍如何在Android中使用AIDL,并...
- **aidlStudy**: 这个目录下可能包含了一个实现AIDL接口的服务端代码。主要涉及创建AIDL接口,实现接口,并在服务启动时绑定到该接口的实现类。 - **aidlClient**: 客户端代码,它会通过bindService()方法连接到...