You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.3 KiB
C
79 lines
2.3 KiB
C
6 months ago
|
#ifndef __ANDROID_HELPER_H__
|
||
|
#define __ANDROID_HELPER_H__
|
||
|
|
||
|
#ifdef __ANDROID__
|
||
|
#include <jni.h>
|
||
|
#include <android/log.h>
|
||
|
#include <string>
|
||
|
#define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
|
||
|
#include <locale>
|
||
|
#include <codecvt>
|
||
|
|
||
|
#if 0
|
||
|
#ifndef ALOG
|
||
|
#define ALOG(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
|
||
|
#ifdef NDEBUG
|
||
|
#define ALOG(...) do { if (0) { __ALOGV(__VA_ARGS__); } } while (0)
|
||
|
#else
|
||
|
#define ALOGV(...) __ALOGV(__VA_ARGS__)
|
||
|
#endif
|
||
|
#endif
|
||
|
#endif // 0
|
||
|
|
||
|
#define MP_TAG "MPLOG"
|
||
|
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, MP_TAG,__VA_ARGS__)
|
||
|
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO, MP_TAG,__VA_ARGS__)
|
||
|
#define ALOGD(...) __android_log_print(ANDROID_LOG_DEBUG, MP_TAG, __VA_ARGS__)
|
||
|
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN, MP_TAG, __VA_ARGS__)
|
||
|
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR, MP_TAG,__VA_ARGS__)
|
||
|
|
||
|
#define AASSERT(cond, fmt, ...) \
|
||
|
if (!(cond)) { \
|
||
|
__android_log_assert(#cond, MP_TAG, fmt, ##__VA_ARGS__); \
|
||
|
}
|
||
|
|
||
|
|
||
|
inline std::string jstring2string(JNIEnv *env, jstring jStr)
|
||
|
{
|
||
|
if (!jStr)
|
||
|
return "";
|
||
|
const jclass stringClass = env->GetObjectClass(jStr);
|
||
|
const jmethodID getBytes = env->GetMethodID(stringClass, "getBytes", "(Ljava/lang/String;)[B");
|
||
|
const jbyteArray stringJbytes = (jbyteArray) env->CallObjectMethod(jStr, getBytes, env->NewStringUTF("UTF-8"));
|
||
|
size_t length = (size_t) env->GetArrayLength(stringJbytes);
|
||
|
jbyte* pBytes = env->GetByteArrayElements(stringJbytes, NULL);
|
||
|
std::string ret = std::string((char *)pBytes, length);
|
||
|
env->ReleaseByteArrayElements(stringJbytes, pBytes, JNI_ABORT);
|
||
|
env->DeleteLocalRef(stringJbytes);
|
||
|
env->DeleteLocalRef(stringClass);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
inline std::wstring utf8_to_wstr(const std::string& src)
|
||
|
{
|
||
|
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
|
||
|
return converter.from_bytes(src);
|
||
|
}
|
||
|
|
||
|
inline int property_get(const char* key, char* buf, int len)
|
||
|
{
|
||
|
int ret = 0;
|
||
|
std::string command = "getprop ";
|
||
|
command += key;
|
||
|
FILE* file = popen(command.c_str(), "r");
|
||
|
if (file)
|
||
|
{
|
||
|
std::fgets(buf, len, file);
|
||
|
// ret = std::atoi(output);
|
||
|
|
||
|
pclose(file);
|
||
|
}
|
||
|
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // __ANDROID_HELPER_H__
|