diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/extras')
3 files changed, 98 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java new file mode 100644 index 0000000000..bd837570fe --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidBinder.java @@ -0,0 +1,36 @@ +// Copyright (C) 2017 BogDan Vatra <bogdan@kde.org> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +package org.qtproject.qt.android.extras; + +import android.os.Binder; +import android.os.Parcel; + +import org.qtproject.qt.android.UsedFromNativeCode; + +class QtAndroidBinder extends Binder +{ + @UsedFromNativeCode + public QtAndroidBinder(long id) + { + m_id = id; + } + + public void setId(long id) + { + synchronized(this) + { + m_id = id; + } + } + @Override + protected boolean onTransact(int code, Parcel data, Parcel reply, int flags) + { + synchronized(this) + { + return QtNative.onTransact(m_id, code, data, reply, flags); + } + } + + private long m_id; +} diff --git a/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java new file mode 100644 index 0000000000..b70b64e3ac --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt/android/extras/QtAndroidServiceConnection.java @@ -0,0 +1,45 @@ +// Copyright (C) 2017 BogDan Vatra <bogdan@kde.org> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +package org.qtproject.qt.android.extras; + +import android.content.ComponentName; +import android.content.ServiceConnection; +import android.os.IBinder; + +import org.qtproject.qt.android.UsedFromNativeCode; + +class QtAndroidServiceConnection implements ServiceConnection +{ + @UsedFromNativeCode + public QtAndroidServiceConnection(long id) + { + m_id = id; + } + + public void setId(long id) + { + synchronized(this) + { + m_id = id; + } + } + + @Override + public void onServiceConnected(ComponentName name, IBinder service) + { + synchronized(this) { + QtNative.onServiceConnected(m_id, name.flattenToString(), service); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) + { + synchronized(this) { + QtNative.onServiceDisconnected(m_id, name.flattenToString()); + } + } + + private long m_id; +} diff --git a/src/android/jar/src/org/qtproject/qt/android/extras/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/extras/QtNative.java new file mode 100644 index 0000000000..f7ba8dd9b4 --- /dev/null +++ b/src/android/jar/src/org/qtproject/qt/android/extras/QtNative.java @@ -0,0 +1,17 @@ +// Copyright (C) 2017 BogDan Vatra <bogdan@kde.org> +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +package org.qtproject.qt.android.extras; + +import android.os.IBinder; +import android.os.Parcel; + +class QtNative { + // Binder + public static native boolean onTransact(long id, int code, Parcel data, Parcel reply, int flags); + + + // ServiceConnection + public static native void onServiceConnected(long id, String name, IBinder service); + public static native void onServiceDisconnected(long id, String name); +} |