QString AndroidNetworkInfo::getTypeName() const { QJNIObjectPrivate typeName = m_networkInfo.callObjectMethod<jstring>("getTypeName"); if (!typeName.isValid()) return QString(); return typeName.toString(); }
QString AndroidMultimediaUtils::getDefaultMediaDirectory(MediaType type) { QJNIObjectPrivate path = QJNIObjectPrivate::callStaticObjectMethod("org/qtproject/qt5/android/multimedia/QtMultimediaUtils", "getDefaultMediaDirectory", "(I)Ljava/lang/String;", jint(type)); return path.toString(); }
QString AndroidNetworkInfo::getReason() const { QJNIObjectPrivate reason = m_networkInfo.callObjectMethod<jstring>("getReason"); if (!reason.isValid()) return QString(); return reason.toString(); }
QString AndroidNetworkInfo::getExtraInfo() const { QJNIObjectPrivate extraInfo = m_networkInfo.callObjectMethod<jstring>("getExtraInfo"); if (!extraInfo.isValid()) return QString(); return extraInfo.toString(); }
QByteArray QAndroidTimeZonePrivate::systemTimeZoneId() const { QJNIObjectPrivate androidSystemTimeZone = QJNIObjectPrivate::callStaticObjectMethod("java.util.TimeZone", "getDefault", "()Ljava/util/TimeZone;"); QJNIObjectPrivate systemTZIdAndroid = androidSystemTimeZone.callObjectMethod<jstring>("getID"); QByteArray systemTZid = systemTZIdAndroid.toString().toUtf8(); return systemTZid; }
static inline QString getAbsolutePath(const QJNIObjectPrivate &file) { QJNIObjectPrivate path = file.callObjectMethod("getAbsolutePath", "()Ljava/lang/String;"); if (!path.isValid()) return QString(); return path.toString(); }
AndroidNetworkInfo::NetworkState AndroidNetworkInfo::getState() const { QJNIObjectPrivate enumObject = m_networkInfo.callObjectMethod("getState", "()Landroid/net/NetworkInfo$State;"); if (!enumObject.isValid()) return UnknownState; QJNIObjectPrivate enumName = enumObject.callObjectMethod<jstring>("name"); if (!enumName.isValid()) return UnknownState; return stateForName(enumName.toString()); }
QString AndroidCameraPrivate::getFocusMode() { QMutexLocker parametersLocker(&m_parametersMutex); QString value; if (m_parameters.isValid()) { QJNIObjectPrivate focusMode = m_parameters.callObjectMethod("getFocusMode", "()Ljava/lang/String;"); if (focusMode.isValid()) value = focusMode.toString(); } return value; }
QString AndroidCameraPrivate::getWhiteBalance() { QMutexLocker parametersLocker(&m_parametersMutex); QString value; if (m_parameters.isValid()) { QJNIObjectPrivate wb = m_parameters.callObjectMethod("getWhiteBalance", "()Ljava/lang/String;"); if (wb.isValid()) value = wb.toString(); } return value; }
QList<QByteArray> QAndroidTimeZonePrivate::availableTimeZoneIds() const { QList<QByteArray> availableTimeZoneIdList; QJNIObjectPrivate androidAvailableIdList = QJNIObjectPrivate::callStaticObjectMethod("java.util.TimeZone", "getAvailableIDs", "()[Ljava/lang/String;"); QJNIEnvironmentPrivate jniEnv; int androidTZcount = jniEnv->GetArrayLength( static_cast<jarray>(androidAvailableIdList.object()) ); // need separate jobject and QAndroidJniObject here so that we can delete (DeleteLocalRef) the reference to the jobject // (or else the JNI reference table fills after 512 entries from GetObjectArrayElement) jobject androidTZobject; QJNIObjectPrivate androidTZ; for (int i=0; i<androidTZcount; i++ ) { androidTZobject = jniEnv->GetObjectArrayElement( static_cast<jobjectArray>( androidAvailableIdList.object() ), i ); androidTZ = androidTZobject; availableTimeZoneIdList.append( androidTZ.toString().toUtf8() ); jniEnv->DeleteLocalRef(androidTZobject); } return availableTimeZoneIdList; }
QStringList AndroidCameraPrivate::callParametersStringListMethod(const QByteArray &methodName) { QMutexLocker parametersLocker(&m_parametersMutex); QStringList stringList; if (m_parameters.isValid()) { QJNIObjectPrivate list = m_parameters.callObjectMethod(methodName.constData(), "()Ljava/util/List;"); if (list.isValid()) { int count = list.callMethod<jint>("size"); for (int i = 0; i < count; ++i) { QJNIObjectPrivate string = list.callObjectMethod("get", "(I)Ljava/lang/Object;", i); stringList.append(string.toString()); } } } return stringList; }
QString QAndroidTimeZonePrivate::displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType, const QLocale &locale) const { QString name; if (androidTimeZone.isValid()) { jboolean daylightTime = (timeType == QTimeZone::DaylightTime); // treat QTimeZone::GenericTime as QTimeZone::StandardTime // treat all NameTypes as java TimeZone style LONG (value 1), except of course QTimeZone::ShortName which is style SHORT (value 0); jint style = (nameType == QTimeZone::ShortName ? 0 : 1); QJNIObjectPrivate jlanguage = QJNIObjectPrivate::fromString(QLocale::languageToString(locale.language())); QJNIObjectPrivate jcountry = QJNIObjectPrivate::fromString(QLocale::countryToString(locale.country())); QJNIObjectPrivate jvariant = QJNIObjectPrivate::fromString(QLocale::scriptToString(locale.script())); QJNIObjectPrivate jlocale("java.util.Locale", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", static_cast<jstring>(jlanguage.object()), static_cast<jstring>(jcountry.object()), static_cast<jstring>(jvariant.object())); QJNIObjectPrivate jname = androidTimeZone.callObjectMethod("getDisplayName", "(ZILjava/util/Locale;)Ljava/lang/String;", daylightTime, style, jlocale.object()); name = jname.toString(); } return name; }