From df7f5059c2c81089b30fd8039125cdcaed2ba53a Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Thu, 19 Oct 2017 12:22:15 +0200 Subject: [PATCH] add getPaths method to platform helpers --- coreapi/android-helpers.cpp | 40 ++++++++++++++++--- coreapi/platform-helpers.cpp | 14 +++++-- coreapi/platform-helpers.h | 4 ++ .../core/util/AndroidPlatformHelper.java | 6 +-- src/utils/paths/paths-android.cpp | 2 + 5 files changed, 53 insertions(+), 13 deletions(-) diff --git a/coreapi/android-helpers.cpp b/coreapi/android-helpers.cpp index 7b4e494ff..d7b64ecea 100644 --- a/coreapi/android-helpers.cpp +++ b/coreapi/android-helpers.cpp @@ -17,6 +17,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include "linphone/utils/utils.h" + #include "private.h" #include "platform-helpers.h" @@ -24,7 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include -namespace LinphonePrivate{ +LINPHONE_BEGIN_NAMESPACE class AndroidPlatformHelpers : public PlatformHelpers{ public: @@ -36,6 +38,8 @@ public: virtual void releaseMcastLock(); virtual void acquireCpuLock(); virtual void releaseCpuLock(); + virtual std::string getDataPath(); + virtual std::string getConfigPath(); ~AndroidPlatformHelpers(); private: int callVoidMethod(jmethodID id); @@ -49,9 +53,20 @@ private: jmethodID mCpuLockReleaseId; jmethodID mGetDnsServersId; jmethodID mGetPowerManagerId; + jmethodID mGetDataPathId; + jmethodID mGetConfigPathId; }; +static const char* GetStringUTFChars(JNIEnv* env, jstring string) { + const char *cstring = string ? env->GetStringUTFChars(string, NULL) : NULL; + return cstring; +} + +static void ReleaseStringUTFChars(JNIEnv* env, jstring string, const char *cstring) { + if (string) env->ReleaseStringUTFChars(string, cstring); +} + jmethodID AndroidPlatformHelpers::getMethodId(JNIEnv *env, jclass klass, const char *method, const char *signature){ jmethodID id = env->GetMethodID(klass, method, signature); if (id == 0){ @@ -83,6 +98,8 @@ AndroidPlatformHelpers::AndroidPlatformHelpers(LinphoneCore *lc, void *system_co mCpuLockReleaseId = getMethodId(env, klass, "releaseCpuLock", "()V"); mGetDnsServersId = getMethodId(env, klass, "getDnsServers", "()[Ljava/lang/String;"); mGetPowerManagerId = getMethodId(env, klass, "getPowerManager", "()Ljava/lang/Object;"); + mGetDataPathId = getMethodId(env, klass, "getDataPath", "()Ljava/lang/String;"); + mGetConfigPathId = getMethodId(env, klass, "getConfigPath", "()Ljava/lang/String;"); jobject pm = env->CallObjectMethod(mJavaHelper,mGetPowerManagerId); belle_sip_wake_lock_init(env, pm); @@ -152,6 +169,21 @@ void AndroidPlatformHelpers::releaseCpuLock(){ callVoidMethod(mCpuLockReleaseId); } +std::string AndroidPlatformHelpers::getDataPath(){ + jstring jdata_path = (jstring)env->CallObjectMethod(mJavaHelper,mGetDataPathId); + const char *data_path = GetStringUTFChars(env, jdata_path); + string dataPath = data_path; + ReleaseStringUTFChars(env, jdata_path, data_path); + return dataPath; +} + +std::string AndroidPlatformHelpers::getConfigPath(){ + jstring jconfig_path = (jstring)env->CallObjectMethod(mJavaHelper,mGetConfigPathId); + const char *config_path = GetStringUTFChars(env, jconfig_path); + string configPath = config_path; + ReleaseStringUTFChars(env, jconfig_path, config_path); + return configPath; +} int AndroidPlatformHelpers::callVoidMethod(jmethodID id) { JNIEnv *env=ms_get_jni_env(); @@ -170,10 +202,6 @@ PlatformHelpers *createAndroidPlatformHelpers(LinphoneCore *lc, void *system_con return new AndroidPlatformHelpers(lc, system_context); } -}//end of namespace - - - +LINPHONE_END_NAMESPACE #endif - diff --git a/coreapi/platform-helpers.cpp b/coreapi/platform-helpers.cpp index 05bbc00e6..89779599d 100644 --- a/coreapi/platform-helpers.cpp +++ b/coreapi/platform-helpers.cpp @@ -17,11 +17,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include "linphone/utils/utils.h" + #include "private.h" +LINPHONE_BEGIN_NAMESPACE -namespace LinphonePrivate{ - PlatformHelpers::~PlatformHelpers(){ } @@ -42,8 +43,13 @@ void StubbedPlatformHelpers::acquireCpuLock(){ } void StubbedPlatformHelpers::releaseCpuLock(){ } - +std::string StubbedPlatformHelpers::getDataPath(){ + return Utils::getEmptyConstRefObject(); +} +std::string StubbedPlatformHelpers::getConfigPath(){ + return Utils::getEmptyConstRefObject(); +} StubbedPlatformHelpers::~StubbedPlatformHelpers(){ } -} \ No newline at end of file +LINPHONE_END_NAMESPACE diff --git a/coreapi/platform-helpers.h b/coreapi/platform-helpers.h index b97c0fa2b..de005c081 100644 --- a/coreapi/platform-helpers.h +++ b/coreapi/platform-helpers.h @@ -37,6 +37,8 @@ class PlatformHelpers{ virtual void releaseMcastLock() = 0; virtual void acquireCpuLock() = 0; virtual void releaseCpuLock() = 0; + virtual std::string getDataPath() = 0; + virtual std::string getConfigPath() = 0; virtual ~PlatformHelpers(); protected: PlatformHelpers(LinphoneCore *lc) : mCore(lc){ @@ -54,6 +56,8 @@ public: void releaseMcastLock() override; void acquireCpuLock() override; void releaseCpuLock() override; + std::string getDataPath() override; + std::string getConfigPath() override; virtual ~StubbedPlatformHelpers(); }; diff --git a/java/impl/org/linphone/core/util/AndroidPlatformHelper.java b/java/impl/org/linphone/core/util/AndroidPlatformHelper.java index aeb44e15b..ce3a8d715 100644 --- a/java/impl/org/linphone/core/util/AndroidPlatformHelper.java +++ b/java/impl/org/linphone/core/util/AndroidPlatformHelper.java @@ -52,7 +52,7 @@ public class AndroidPlatformHelper{ WifiManager wifiMgr = ctx.getSystemService(WifiManager.class); mPowerManager = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); mConnectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); - + mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AndroidPlatformHelper"); mWakeLock.setReferenceCounted(true); mMcastLock = wifiMgr.createMulticastLock("AndroidPlatformHelper"); @@ -60,11 +60,11 @@ public class AndroidPlatformHelper{ mWifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "AndroidPlatformHelper"); mWifiLock.setReferenceCounted(true); } - + public Object getPowerManager(){ return mPowerManager; } - + public String[] getDnsServers() { if (mConnectivityManager == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return null; diff --git a/src/utils/paths/paths-android.cpp b/src/utils/paths/paths-android.cpp index d0f427689..f5601cba0 100644 --- a/src/utils/paths/paths-android.cpp +++ b/src/utils/paths/paths-android.cpp @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include + #include "linphone/utils/utils.h" #include "paths-android.h"