6#include <android/log.h>
7#include <QtCore/QLoggingCategory>
8#include <QtBluetooth/qtbluetoothglobal.h>
28 JCachedStringFields::iterator
it = cachedStringFields()->
find(
key);
29 if (
it == cachedStringFields()->
end()) {
31 QJniObject fieldValue = QJniObject::getStaticObjectField(
32 className, fieldName,
"Ljava/lang/String;");
33 if (!fieldValue.isValid()) {
38 cachedStringFields()->insert(
key, fieldValue);
46 jlong qtObject, QtJniTypes::Context
context,
47 QtJniTypes::Intent intent)
54 jlong qtObject, jint errorCode)
61 jlong qtObject, QtJniTypes::BluetoothSocket
socket)
68 jlong qtObject, jint errorCode)
70 reinterpret_cast<InputStreamThread*
>(qtObject)->javaThreadErrorOccurred(errorCode);
75 jlong qtObject, jbyteArray
buffer, jint bufferLength)
82 QtJniTypes::BluetoothDevice bluetoothDevice, jint
rssi,
83 jbyteArray scanRecord)
89 env, bluetoothDevice,
rssi,
94static const
char logTag[] = "QtBluetooth";
97#define FIND_AND_CHECK_CLASS(CLASS_NAME) \
98clazz = env.findClass<CLASS_NAME>(); \
100 __android_log_print(ANDROID_LOG_FATAL, logTag, classErrorMsg, \
101 QtJniTypes::className<CLASS_NAME>().data()); \
105#define LEHUB_SCOPED_METHOD(Method) Q_JNI_NATIVE_SCOPED_METHOD(Method, LowEnergyNotificationHub)
113 if (!env.registerNativeMethods(clazz,
115 Q_JNI_NATIVE_METHOD(QtBroadcastReceiver_jniOnReceive)
118 __android_log_print(ANDROID_LOG_FATAL,
logTag,
119 "registerNativeMethods for BroadcastReceiver failed");
124 if (!env.registerNativeMethods(clazz,
126 Q_JNI_NATIVE_METHOD(QtBluetoothLE_leScanResult),
127 LEHUB_SCOPED_METHOD(lowEnergy_connectionChange),
128 LEHUB_SCOPED_METHOD(lowEnergy_mtuChanged),
129 LEHUB_SCOPED_METHOD(lowEnergy_servicesDiscovered),
130 LEHUB_SCOPED_METHOD(lowEnergy_serviceDetailsDiscovered),
131 LEHUB_SCOPED_METHOD(lowEnergy_characteristicRead),
132 LEHUB_SCOPED_METHOD(lowEnergy_descriptorRead),
133 LEHUB_SCOPED_METHOD(lowEnergy_characteristicWritten),
134 LEHUB_SCOPED_METHOD(lowEnergy_descriptorWritten),
135 LEHUB_SCOPED_METHOD(lowEnergy_characteristicChanged),
136 LEHUB_SCOPED_METHOD(lowEnergy_serviceError),
137 LEHUB_SCOPED_METHOD(lowEnergy_remoteRssiRead)
140 __android_log_print(ANDROID_LOG_FATAL,
logTag,
141 "registerNativeMethods for QBLuetoothLE failed");
146 if (!env.registerNativeMethods(clazz,
148 LEHUB_SCOPED_METHOD(lowEnergy_connectionChange),
149 LEHUB_SCOPED_METHOD(lowEnergy_mtuChanged),
150 LEHUB_SCOPED_METHOD(lowEnergy_advertisementError),
151 LEHUB_SCOPED_METHOD(lowEnergy_serverCharacteristicChanged),
152 LEHUB_SCOPED_METHOD(lowEnergy_serverDescriptorWritten)
155 __android_log_print(ANDROID_LOG_FATAL,
logTag,
156 "registerNativeMethods for QBLuetoothLEServer failed");
161 if (!env.registerNativeMethods(clazz,
163 Q_JNI_NATIVE_METHOD(QtBluetoothSocketServer_errorOccurred),
164 Q_JNI_NATIVE_METHOD(QtBluetoothSocketServer_newSocket)
167 __android_log_print(ANDROID_LOG_FATAL,
logTag,
168 "registerNativeMethods for SocketServer failed");
173 if (!env.registerNativeMethods(clazz,
175 Q_JNI_NATIVE_METHOD(QtBluetoothInputStreamThread_errorOccurred),
176 Q_JNI_NATIVE_METHOD(QtBluetoothInputStreamThread_readyData)
179 __android_log_print(ANDROID_LOG_FATAL,
logTag,
180 "registerNativeMethods for InputStreamThread failed");
189Q_BLUETOOTH_EXPORT jint JNICALL
JNI_OnLoad(JavaVM* vm,
void* )
191 static bool initialized =
false;
193 return JNI_VERSION_1_6;
197 JNIEnv *nativeEnvironment;
201 UnionJNIEnvToVoid uenv;
204 if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_6) != JNI_OK) {
205 __android_log_print(ANDROID_LOG_FATAL,
logTag,
"GetEnv failed");
210 __android_log_print(ANDROID_LOG_FATAL,
logTag,
"registerNatives failed");
214 if (QT_BT_ANDROID().isDebugEnabled())
215 __android_log_print(ANDROID_LOG_INFO,
logTag,
"Bluetooth start");
217 return JNI_VERSION_1_6;
iterator find(const T &value)
QSet< QString >::iterator it
QT_END_NAMESPACE Q_BLUETOOTH_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *)
QT_BEGIN_NAMESPACE typedef QHash< QByteArray, QJniObject > JCachedStringFields
void QtBroadcastReceiver_jniOnReceive(JNIEnv *env, jobject, jlong qtObject, QtJniTypes::Context context, QtJniTypes::Intent intent)
QJniObject valueFromStaticFieldCache(const char *key, const char *className, const char *fieldName)
static const char logTag[]
#define FIND_AND_CHECK_CLASS(CLASS_NAME)
void QtBluetoothLE_leScanResult(JNIEnv *env, jobject, jlong qtObject, QtJniTypes::BluetoothDevice bluetoothDevice, jint rssi, jbyteArray scanRecord)
static void QtBluetoothInputStreamThread_errorOccurred(JNIEnv *, jobject, jlong qtObject, jint errorCode)
static void QtBluetoothInputStreamThread_readyData(JNIEnv *, jobject, jlong qtObject, jbyteArray buffer, jint bufferLength)
static const char classErrorMsg[]
static void QtBluetoothSocketServer_newSocket(JNIEnv *, jobject, jlong qtObject, QtJniTypes::BluetoothSocket socket)
static void QtBluetoothSocketServer_errorOccurred(JNIEnv *, jobject, jlong qtObject, jint errorCode)
static bool registerNatives()
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
#define Q_GLOBAL_STATIC(TYPE, NAME,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
const char className[16]
[1]