From dd7c608db87a478e22d7138e9631e98033022e66 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期三, 05 六月 2019 14:22:41 +0800
Subject: [PATCH] RemoteService aidl 回调搭架子;app依赖lib
---
lib/src/main/AndroidManifest.xml | 7 ++
lib/src/main/aidl/com/anyun/exam/lib/IListenerInterface.aidl | 12 ++++
lib/src/main/java/com/anyun/exam/lib/AYSdk.java | 32 ++++++++++
lib/src/main/aidl/com/anyun/exam/lib/IRemoteInterface.aidl | 16 +++++
app/build.gradle | 1
lib/src/main/java/com/anyun/exam/lib/MyServiceConn.java | 33 +++++++++++
lib/src/main/java/com/anyun/exam/lib/RemoteService.java | 39 ++++++++++++
7 files changed, 138 insertions(+), 2 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index ac3b7ea..b20516c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -33,4 +33,5 @@
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation project(path: ':lib')
}
diff --git a/lib/src/main/AndroidManifest.xml b/lib/src/main/AndroidManifest.xml
index 3b7edbe..270fa4d 100644
--- a/lib/src/main/AndroidManifest.xml
+++ b/lib/src/main/AndroidManifest.xml
@@ -1,2 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.anyun.exam.lib" />
+ package="com.anyun.exam.lib" >
+
+ <application>
+ <service android:name=".RemoteService" android:process=":reomte" android:exported="true"/>
+ </application>
+</manifest>
diff --git a/lib/src/main/aidl/com/anyun/exam/lib/IListenerInterface.aidl b/lib/src/main/aidl/com/anyun/exam/lib/IListenerInterface.aidl
new file mode 100644
index 0000000..df1e1b2
--- /dev/null
+++ b/lib/src/main/aidl/com/anyun/exam/lib/IListenerInterface.aidl
@@ -0,0 +1,12 @@
+// IListenerlInterface.aidl
+package com.anyun.exam.lib;
+
+// Declare any non-default types here with import statements
+
+interface IListenerInterface {
+ /**
+ * Demonstrates some basic types that you can use as parameters
+ * and return values in AIDL.
+ */
+ void onMessageArrived(String json);
+}
diff --git a/lib/src/main/aidl/com/anyun/exam/lib/IRemoteInterface.aidl b/lib/src/main/aidl/com/anyun/exam/lib/IRemoteInterface.aidl
new file mode 100644
index 0000000..15d0d3e
--- /dev/null
+++ b/lib/src/main/aidl/com/anyun/exam/lib/IRemoteInterface.aidl
@@ -0,0 +1,16 @@
+// IRemoteInterface.aidl
+package com.anyun.exam.lib;
+import com.anyun.exam.lib.IListenerInterface;
+
+// Declare any non-default types here with import statements
+
+interface IRemoteInterface {
+ /**
+ * Demonstrates some basic types that you can use as parameters
+ * and return values in AIDL.
+ */
+
+ void registListener(IListenerInterface i);
+ void unRegistListener(IListenerInterface i);
+ void add();
+}
diff --git a/lib/src/main/java/com/anyun/exam/lib/AYSdk.java b/lib/src/main/java/com/anyun/exam/lib/AYSdk.java
index 36f774d..389ffda 100644
--- a/lib/src/main/java/com/anyun/exam/lib/AYSdk.java
+++ b/lib/src/main/java/com/anyun/exam/lib/AYSdk.java
@@ -1,6 +1,8 @@
package com.anyun.exam.lib;
import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
/**
* MyApplication2
@@ -9,8 +11,13 @@
* All Rights Saved! Chongqing AnYun Tech co. LTD
*/
class AYSdk {
+
+ private static final String TAG = "AYSDK";
+
//瀹夎繍椹捐�冪郴缁� sdk 鍗曚緥妯″紡
private volatile static AYSdk ourInstance = null;
+ private Context mContext;
+ private MyServiceConn conn;
static AYSdk getInstance() {
if (ourInstance == null){
@@ -23,6 +30,31 @@
return ourInstance;
}
+ /**
+ * 鍒濆鍖朣DK
+ * @param context
+ */
+ public void init(Context context){
+ this.mContext = context;
+ //bind service
+ Intent intent = new Intent(mContext,RemoteService.class);
+ conn = new MyServiceConn();
+ mContext.bindService(intent,conn,Context.BIND_AUTO_CREATE);
+ }
+
+ /**
+ * 瑙g粦
+ */
+ public void uninit(){
+ if (mContext != null){
+ mContext.unbindService(conn);
+ }else{
+ Log.e(TAG,"mContext == null锛宲lease init SDK firstly");
+ throw new RuntimeException("mContext == null锛宲lease init SDK firstly");
+ }
+ }
+
private AYSdk() {
+
}
}
diff --git a/lib/src/main/java/com/anyun/exam/lib/MyServiceConn.java b/lib/src/main/java/com/anyun/exam/lib/MyServiceConn.java
new file mode 100644
index 0000000..92f247e
--- /dev/null
+++ b/lib/src/main/java/com/anyun/exam/lib/MyServiceConn.java
@@ -0,0 +1,33 @@
+package com.anyun.exam.lib;
+
+import android.content.ComponentName;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/6/5. 13:35:18
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class MyServiceConn implements ServiceConnection {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+
+ }
+
+ @Override
+ public void onBindingDied(ComponentName name) {
+
+ }
+
+ @Override
+ public void onNullBinding(ComponentName name) {
+
+ }
+}
diff --git a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
index f69e568..1982465 100644
--- a/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
+++ b/lib/src/main/java/com/anyun/exam/lib/RemoteService.java
@@ -3,7 +3,10 @@
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
import android.support.annotation.Nullable;
+import android.util.Log;
/**
* MyApplication2
@@ -12,9 +15,43 @@
* All Rights Saved! Chongqing AnYun Tech co. LTD
*/
public class RemoteService extends Service {
+
+ private static final String TAG = "RemoteService";
+ private RemoteCallbackList<IListenerInterface> mListenerList = new RemoteCallbackList();
+ private IRemoteInterface.Stub iRemoteInterface = new IRemoteInterface.Stub(){
+ @Override
+ public void registListener(IListenerInterface i) throws RemoteException {
+ //娉ㄥ唽鍥炶皟鏂规硶
+ mListenerList.register(i);
+ }
+
+ @Override
+ public void unRegistListener(IListenerInterface i) throws RemoteException {
+ mListenerList.unregister(i);
+ }
+
+ @Override
+ public void add() throws RemoteException {
+
+ }
+
+
+ };
@Nullable
@Override
public IBinder onBind(Intent intent) {
- return null;
+ return iRemoteInterface;
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ Log.i(TAG,"onCreate()");
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ Log.i(TAG,"onDestroy");
}
}
--
Gitblit v1.8.0