`
573842281
  • 浏览: 43856 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

怎么调用AIDL 2

 
阅读更多

@Override
    protected void onDestroy() {
        if (mIsBound) {
            // If we have received the service, and hence registered with
            // it, then now is the time to unregister.
            if (mService != null) {
                try {
                    mService.unregisterCallback(mPTTServiceListener.callback);
                } catch (RemoteException e) {
                    // There is nothing special we need to do if the service
                    // has crashed.
                }
            }
            
            Log.d(TAG, "onDestroy()");
            // Detach our existing connection.
            unbindService(mConnection);
            mIsBound = false;
        }
    	super.onDestroy();
    }
    
    // maintain connection with PTTService
    private IPTTService mService = null;
    private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className,
                IBinder service) {
        	Log.d(TAG, "onServiceConnected");
            mService = IPTTService.Stub.asInterface(service);
            try{
            	mService.registerCallback(mPTTServiceListener.callback);
            }catch(RemoteException e){
            	e.printStackTrace();
            }
            
            mIsBound = true;
            
            try {
                if(mService.getServiceState() != SERVICE_STATE_NoneService){
                	mTestButton.setEnabled(true);
                	Log.d(TAG, "ServiceState = " + mService.getServiceState());
                }
			} catch (RemoteException e) {
				// TODO: handle exception
			}
            
            //Toast.makeText(MainActivity.this, "connected",Toast.LENGTH_SHORT).show();
        }

        public void onServiceDisconnected(ComponentName className) {
        	Log.d(TAG, "onServiceDisconnected");
            mService = null;
            mTestButton.setEnabled(false);
        }
    };
    
    // listener for PTT service
    PTTServiceListener mPTTServiceListener = new PTTServiceListener(){
    	@Override
    	void onPTTServiceNotification(Bundle data) {
    		
    	};
    	
    	@Override
    	void onPTTServiceError(String strMsg) {
    		Toast.makeText(MainActivity.this, strMsg, Toast.LENGTH_SHORT).show();
    	};
    };
    
}
 
分享到:
评论

相关推荐

    跨应用调用之AIDL

    当连接建立后,可以获取到服务提供的Binder对象,通过这个Binder对象调用AIDL接口定义的方法。 5. **处理回调**: 客户端需要实现接口中的回调方法,以便接收服务端的响应。 ### 三、注意事项 1. **数据类型限制**...

    AIDL简单极简demo彻底玩转AIDL调用

    附件包含客户端demo和服务端demo共两个app,使用不超过100行代码,向你展示极简、傻瓜级AIDL使用教程,让你彻底玩转AIDL使用方法。 附件包含客户端demo和服务端demo,演示客户端app如何调用服务端app的接口方法。

    AIDL和JNI使用的小例子

    客户端通过调用AIDL接口,间接地触发JNI中的操作。 总结一下,本示例提供的`testndk`项目是一个结合使用AIDL和JNI的实践案例,展示了如何在Android应用中进行跨进程通信并利用C/C++代码提升性能。通过阅读源码和...

    Android工作实践总结:Aidl 远程调用(aidl实例总结)

    Android工作实践总结:Aidl 远程调用(aidl实例总结) AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是...它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1.... 2. 调用aidl产生的class.

    wps for android AIDL调用

    2. **编译AIDL**:Android Studio会自动编译`.aidl`文件,生成对应的Java接口。这个接口将作为客户端和服务端通信的桥梁。 3. **实现服务端**:在WPS应用中,你需要实现`IMOfficeService`接口,并注册到Android系统...

    android aidl文件不一致引起的调用出错问题.doc

    在上面的例子中,我们定义了一个服务端的 AIDL 文件,名为 ITestService.aidl,包含三个方法:test1、test2 和 test3。然后,在客户端,我们使用了同一个 AIDL 文件来调用服务端的接口。然而,如果服务端修改了 AIDL...

    AIDL通信(含2个客户端1个服务端)

    代码简洁,重点突出多进程或多app调用AIDL服务完成通信,内容如下: 1.AIDL服务端 支持多客户端调用AIDL服务端,并广播发送数据给客户端 2.AIDL客户端 示例中的2个客户端都同时绑定AIDL客户端 发送数据,并显示AIDL...

    AIDL 远程调用实例

    客户端通过绑定服务来调用AIDL接口。首先,需要在客户端代码中生成AIDL接口的代理类,然后在`onServiceConnected`回调中获取到服务的Binder对象,通过这个对象调用服务端的方法。 ```java private ...

    android 进程之间通信--Android 使用【AIDL】调用外部服务

    2. **编译AIDL** Android Studio会自动生成对应的Java代码,位于`gen`目录下(如果你使用的是较旧的构建系统),或`build/generated/source/aidl`目录下(如果使用的是现代的Gradle构建系统)。生成的代码包含了...

    aidl跨进程调用

    在Android系统中,应用程序通常运行在各自的进程中,为了实现不同应用程序之间的通信,Android提供了一种强大的机制——Android Interface Definition Language(简称AIDL),用于支持跨进程调用。AIDL允许开发者...

    android简单AIDL调用Demo

    在"android简单AIDL调用Demo"中,我们将深入探讨如何使用AIDL创建和调用跨进程服务。 首先,让我们了解AIDL的基本结构。AIDL文件是一个简单的文本文件,后缀为.aidl,它定义了接口以及接口中的方法。例如,如果你有...

    使用AIDL通过进程APK之间通信

    当一个应用(如A.apk)通过AIDL定义接口后,Android系统会自动生成相应的Java绑定类,使得其他应用(如B.apk)能够调用这些接口。 **1. 创建AIDL文件** 在A.apk的源码目录下创建一个.aidl文件,例如`IAidlInterface...

    android AIDL 多个客户端调用一个服务器代码

    这篇博文“android AIDL 多个客户端调用一个服务器代码”将深入探讨如何利用AIDL来实现这个功能。 首先,理解AIDL的基本概念是至关重要的。AIDL允许开发者定义一个接口,这个接口可以被不同的应用进程所共享,就像...

    aidl调用远程服务

    当我们需要在不同的应用程序组件之间,尤其是跨进程调用服务时,AIDL就显得尤为重要。本篇文章将深入探讨如何使用AIDL调用远程服务,以及在实际应用中的操作步骤。 首先,我们需要理解AIDL的基本概念。AIDL是一种...

    Android调用远程服务(AIDL)

    2. **编译AIDL** - 当你构建项目时,Android Studio会自动将.AIDL文件转换为对应的Java代码。在服务端,生成的是服务接口的实现类;在客户端,生成的是 Binder 对象的代理类。 3. **服务端实现** - 在服务端,你...

    通过aidl service调用activity

    在Android开发中,AIDL(Android Interface Definition Language)是一种用于跨进程通信(IPC,Inter-Process Communication)的机制,使得一个应用可以调用另一个应用中的服务。本篇将深入探讨如何通过AIDL来调用...

    AIDL双向绑定kotlin版本

    通常,AIDL用于实现单向通信,即客户端调用服务端的方法,但AIDL同样可以扩展以支持双向通信,即服务端也能调用客户端的方法,这就构成了所谓的“双向绑定”。 双向绑定在许多场景下都非常有用,比如实时同步、心跳...

    aidl调用方法文档资料

    服务端启动服务并绑定到特定的Binder,客户端通过`startService()`或`bindService()`来连接服务,然后调用AIDL定义的方法。 ### 7. 异常处理 由于IPC调用可能因为各种原因失败,如服务未运行、权限问题等,因此在...

    一个及其简单的AIDL远程Service调用

    2. **编译AIDL** Android Studio会自动生成对应的Java接口。编译后,系统会在`gen`或`build`目录下生成`IAidlInterface.java`,包含了服务端和服务端需要实现的接口以及客户端使用的代理类。 3. **实现Service** ...

    AIDL跨进程调用Demo

    AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写,对于小白来说,AIDL的作用是让你可以在自己的APP里绑定一个其他APP的service,这样你的APP...

Global site tag (gtag.js) - Google Analytics