From b3d195f0188758a14875a5a2f270e4fd190a679f Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 17 Apr 2018 00:15:38 +0200 Subject: sync with upstream --- .../include/kodi/platform/android/System.h | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h') diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h new file mode 100644 index 0000000..bee00ef --- /dev/null +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h @@ -0,0 +1,107 @@ +#pragma once +/* + * Copyright (C) 2005-2018 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with KODI; see the file COPYING. If not, see + * . + * + */ + +#include "../../AddonBase.h" + +/* + * For interface between add-on and kodi. + * + * This structure defines the addresses of functions stored inside Kodi which + * are then available for the add-on to call + * + * All function pointers there are used by the C++ interface functions below. + * You find the set of them on xbmc/addons/interfaces/General.cpp + * + * Note: For add-on development itself this is not needed + */ + +static const char* INTERFACE_ANDROID_SYSTEM_NAME = "ANDROID_SYSTEM"; +static const char* INTERFACE_ANDROID_SYSTEM_VERSION = "1.0.0"; +static const char* INTERFACE_ANDROID_SYSTEM_VERSION_MIN = "1.0.0"; + +struct AddonToKodiFuncTable_android_system +{ + void* (*get_jni_env)(); + int (*get_sdk_version)(); +}; + +//============================================================================== +/// +/// \defgroup cpp_kodi_platform Interface - kodi::platform +/// \ingroup cpp +/// @brief **Android platform specific functions** +/// +/// #include " +/// +//------------------------------------------------------------------------------ + +namespace kodi +{ +namespace platform +{ + class CInterfaceAndroidSystem + { + public: + CInterfaceAndroidSystem() + : m_interface(static_cast(GetInterface(INTERFACE_ANDROID_SYSTEM_NAME, INTERFACE_ANDROID_SYSTEM_VERSION))) + {}; + + //============================================================================ + /// + /// \ingroup cpp_kodi_platform + /// @brief request an JNI env pointer for the calling thread. + /// JNI env has to be controlled by kodi because of the underlying + /// threading concep. + /// + /// @param[in]: + /// @return JNI env pointer for the calling thread + /// + inline void * GetJNIEnv() + { + if (m_interface) + return m_interface->get_jni_env(); + + return nullptr; + } + //---------------------------------------------------------------------------- + + //============================================================================ + /// + /// \ingroup cpp_kodi_platform + /// @brief request the android sdk version to e.g. initialize JNIBase. + /// + /// @param[in]: + /// @return Android SDK version + /// + inline int GetSDKVersion() + { + if (m_interface) + return m_interface->get_sdk_version(); + + return 0; + } + + private: + AddonToKodiFuncTable_android_system *m_interface; + }; + //---------------------------------------------------------------------------- +} /* namespace platform */ +} /* namespace kodi */ -- cgit v1.2.3