Commit 6c592254 authored by Andrey Kamaev's avatar Andrey Kamaev

Merge pull request #97 from asmorkalov/2.4

parents 734b0da0 e7e14b20
...@@ -8,7 +8,7 @@ LOCAL_LOG_PATH = os.path.join(os.getcwd(), "logs") ...@@ -8,7 +8,7 @@ LOCAL_LOG_PATH = os.path.join(os.getcwd(), "logs")
if (__name__ == "__main__"): if (__name__ == "__main__"):
if (not os.path.exists(LOCAL_LOG_PATH)): if (not os.path.exists(LOCAL_LOG_PATH)):
os.makedirs(LOCAL_LOG_PATH) os.makedirs(LOCAL_LOG_PATH)
print("Building native part of OpenCV Manager...") print("Building native part of OpenCV Manager...")
HomeDir = os.getcwd() HomeDir = os.getcwd()
...@@ -19,25 +19,25 @@ if (__name__ == "__main__"): ...@@ -19,25 +19,25 @@ if (__name__ == "__main__"):
#print(BuildCommand) #print(BuildCommand)
res = os.system(BuildCommand) res = os.system(BuildCommand)
if (0 == res): if (0 == res):
print("Build\t[OK]") print("Build\t[OK]")
else: else:
print("Build\t[FAILED]") print("Build\t[FAILED]")
sys.exit(-1) sys.exit(-1)
os.chdir(HomeDir) os.chdir(HomeDir)
ConfFile = open("device.conf", "rt") ConfFile = open("device.conf", "rt")
for s in ConfFile.readlines(): for s in ConfFile.readlines():
keys = s.split(";") keys = s.split(";")
if (len(keys) < 2): if (len(keys) < 2):
print("Error: invalid config line: \"%s\"" % s) print("Error: invalid config line: \"%s\"" % s)
continue continue
Arch = keys[0] Arch = keys[0]
Name = keys[1] Name = keys[1]
print("testing \"%s\" arch" % Arch) print("testing \"%s\" arch" % Arch)
print("Pushing to device \"%s\"" % Name) print("Pushing to device \"%s\"" % Name)
PushCommand = "%s \"%s\" \"%s\" 2>&1" % (os.path.join(HomeDir, "push_native.py"), Arch, Name) PushCommand = "%s \"%s\" \"%s\" 2>&1" % (os.path.join(HomeDir, "push_native.py"), Arch, Name)
os.system(PushCommand) os.system(PushCommand)
print("Testing on device \"%s\"" % Name) print("Testing on device \"%s\"" % Name)
TestCommand = "%s \"%s\" \"%s\" 2>&1" % (os.path.join(HomeDir, "test_native.py"), Arch, Name) TestCommand = "%s \"%s\" \"%s\" 2>&1" % (os.path.join(HomeDir, "test_native.py"), Arch, Name)
os.system(TestCommand) os.system(TestCommand)
\ No newline at end of file \ No newline at end of file
...@@ -46,7 +46,7 @@ There is a very base code snippet implementing the async initialization with Bas ...@@ -46,7 +46,7 @@ There is a very base code snippet implementing the async initialization with Bas
super.onResume(); super.onResume();
Log.i(TAG, "Trying to load OpenCV library"); Log.i(TAG, "Trying to load OpenCV library");
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mOpenCVCallBack))
{ {
Log.e(TAG, "Cannot connect to OpenCV Manager"); Log.e(TAG, "Cannot connect to OpenCV Manager");
} }
...@@ -55,6 +55,6 @@ There is a very base code snippet implementing the async initialization with Bas ...@@ -55,6 +55,6 @@ There is a very base code snippet implementing the async initialization with Bas
Using in Service Using in Service
---------------- ----------------
Default BaseLoaderCallback implementation treat application context as Activity and calls Activity.finish() method to exit in case of initialization failure. Default BaseLoaderCallback implementation treat application context as Activity and calls Activity.finish() method to exit in case of initialization failure.
To override this behavior you need to override finish() method of BaseLoaderCallback class and implement your own finalization method. To override this behavior you need to override finish() method of BaseLoaderCallback class and implement your own finalization method.
...@@ -40,6 +40,10 @@ OpenCV version constants ...@@ -40,6 +40,10 @@ OpenCV version constants
OpenCV Library version 2.4.2 OpenCV Library version 2.4.2
.. data:: OPENCV_VERSION_2_4_3
OpenCV Library version 2.4.3
Other constatnts Other constatnts
---------------- ----------------
......
...@@ -13,7 +13,7 @@ void onManagerConnected() ...@@ -13,7 +13,7 @@ void onManagerConnected()
.. method:: void onManagerConnected(int status) .. method:: void onManagerConnected(int status)
Callback method that is called after OpenCV Library initialization. Callback method that is called after OpenCV Library initialization.
:param status: status of initialization (see Initialization Status Constants). :param status: status of initialization (see Initialization Status Constants).
void onPackageInstall() void onPackageInstall()
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.opencv.engine" package="org.opencv.engine"
android:versionCode="17" android:versionCode="18"
android:versionName="1.7" > android:versionName="1.8" >
<uses-sdk android:minSdkVersion="8" /> <uses-sdk android:minSdkVersion="8" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
android:label="@string/app_name" > android:label="@string/app_name" >
<service android:exported="true" android:name="OpenCVEngineService" android:process=":OpenCVEngineProcess"> <service android:exported="true" android:name="OpenCVEngineService" android:process=":OpenCVEngineProcess">
<intent-filter> <intent-filter>
<action android:name="org.opencv.engine.BIND"></action> <action android:name="org.opencv.engine.BIND"></action>
</intent-filter> </intent-filter>
</service> </service>
<activity <activity
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
android:label="@string/app_name" android:label="@string/app_name"
android:screenOrientation="portrait"> android:screenOrientation="portrait">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
......
...@@ -21,53 +21,51 @@ status_t BnOpenCVEngine::onTransact(uint32_t code, const Parcel& data, android:: ...@@ -21,53 +21,51 @@ status_t BnOpenCVEngine::onTransact(uint32_t code, const Parcel& data, android::
switch(code) switch(code)
{ {
case OCVE_GET_ENGINE_VERSION: case OCVE_GET_ENGINE_VERSION:
{ {
LOGD("OpenCVEngine OCVE_GET_ENGINE_VERSION request"); LOGD("OpenCVEngine OCVE_GET_ENGINE_VERSION request");
CHECK_INTERFACE(IOpenCVEngine, data, reply); CHECK_INTERFACE(IOpenCVEngine, data, reply);
LOGD("OpenCVEngine::GetVersion()"); LOGD("OpenCVEngine::GetVersion()");
reply->writeInt32(0); reply->writeInt32(0);
return reply->writeInt32(GetVersion()); return reply->writeInt32(GetVersion());
} break; } break;
case OCVE_GET_LIB_PATH_BY_VERSION: case OCVE_GET_LIB_PATH_BY_VERSION:
{ {
LOGD("OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request"); LOGD("OpenCVEngine OCVE_GET_LIB_PATH_BY_VERSION request");
CHECK_INTERFACE(IOpenCVEngine, data, reply); CHECK_INTERFACE(IOpenCVEngine, data, reply);
const String16 version = data.readString16(); const String16 version = data.readString16();
LOGD("OpenCVEngine::GetLibPathByVersion(%s)", String8(version).string()); LOGD("OpenCVEngine::GetLibPathByVersion(%s)", String8(version).string());
String16 path = GetLibPathByVersion(version); String16 path = GetLibPathByVersion(version);
reply->writeInt32(0); reply->writeInt32(0);
return reply->writeString16(path); return reply->writeString16(path);
} break; } break;
case OCVE_GET_LIB_LIST: case OCVE_GET_LIB_LIST:
{ {
LOGD("OpenCVEngine OCVE_GET_LIB_LIST request"); LOGD("OpenCVEngine OCVE_GET_LIB_LIST request");
CHECK_INTERFACE(IOpenCVEngine, data, reply); CHECK_INTERFACE(IOpenCVEngine, data, reply);
const String16 version = data.readString16(); const String16 version = data.readString16();
LOGD("OpenCVEngine::GetLibraryList(%s)", String8(version).string()); LOGD("OpenCVEngine::GetLibraryList(%s)", String8(version).string());
String16 path = GetLibraryList(version); String16 path = GetLibraryList(version);
reply->writeInt32(0); reply->writeInt32(0);
return reply->writeString16(path); return reply->writeString16(path);
} break; } break;
case OCVE_INSTALL_VERSION: case OCVE_INSTALL_VERSION:
{ {
LOGD("OpenCVEngine OCVE_INSTALL_VERSION request"); LOGD("OpenCVEngine OCVE_INSTALL_VERSION request");
CHECK_INTERFACE(IOpenCVEngine, data, reply); CHECK_INTERFACE(IOpenCVEngine, data, reply);
const String16 version = data.readString16(); const String16 version = data.readString16();
LOGD("OpenCVEngine::InstallVersion(%s)", String8(version).string()); LOGD("OpenCVEngine::InstallVersion(%s)", String8(version).string());
bool result = InstallVersion(version); bool result = InstallVersion(version);
reply->writeInt32(0); reply->writeInt32(0);
int res = reply->writeInt32(static_cast<int32_t>(result)); int res = reply->writeInt32(static_cast<int32_t>(result));
LOGD("InstallVersion call to Binder finished with res %d", res); LOGD("InstallVersion call to Binder finished with res %d", res);
return res; return res;
} break;
} break; default:
{
default: LOGD("OpenCVEngine unknown request");
{ return BBinder::onTransact(code, data, reply, flags);
LOGD("OpenCVEngine unknown request"); }
return BBinder::onTransact(code, data, reply, flags);
}
} }
return android::NO_ERROR; return android::NO_ERROR;
......
...@@ -13,97 +13,97 @@ int GetCpuID() ...@@ -13,97 +13,97 @@ int GetCpuID()
map<string, string> cpu_info = GetCpuInfo(); map<string, string> cpu_info = GetCpuInfo();
map<string, string>::const_iterator it; map<string, string>::const_iterator it;
#if defined(__i386__) #if defined(__i386__)
LOGD("Using X86 HW detector"); LOGD("Using X86 HW detector");
result |= ARCH_X86; result |= ARCH_X86;
it = cpu_info.find("flags"); it = cpu_info.find("flags");
if (cpu_info.end() != it) if (cpu_info.end() != it)
{ {
set<string> features = SplitString(it->second, ' '); set<string> features = SplitString(it->second, ' ');
if (features.end() != features.find(CPU_INFO_SSE_STR)) if (features.end() != features.find(CPU_INFO_SSE_STR))
{ {
result |= FEATURES_HAS_SSE; result |= FEATURES_HAS_SSE;
} }
if (features.end() != features.find(CPU_INFO_SSE2_STR)) if (features.end() != features.find(CPU_INFO_SSE2_STR))
{ {
result |= FEATURES_HAS_SSE2; result |= FEATURES_HAS_SSE2;
} }
if (features.end() != features.find(CPU_INFO_SSSE3_STR)) if (features.end() != features.find(CPU_INFO_SSSE3_STR))
{ {
result |= FEATURES_HAS_SSSE3; result |= FEATURES_HAS_SSSE3;
} }
} }
#elif defined(__mips) #elif defined(__mips)
#ifdef __SUPPORT_MIPS #ifdef __SUPPORT_MIPS
result |= ARCH_MIPS; result |= ARCH_MIPS;
#else #else
result = ARCH_UNKNOWN; result = ARCH_UNKNOWN;
#endif #endif
#else #else
LOGD("Using ARM HW detector"); LOGD("Using ARM HW detector");
it = cpu_info.find("Processor"); it = cpu_info.find("Processor");
if (cpu_info.end() != it) if (cpu_info.end() != it)
{ {
size_t proc_name_pos = it->second.find(CPU_INFO_ARCH_X86_STR); size_t proc_name_pos = it->second.find(CPU_INFO_ARCH_X86_STR);
if (string::npos != proc_name_pos)
{
}
else
{
proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV7_STR);
if (string::npos != proc_name_pos)
{
result |= ARCH_ARMv7;
}
else
{
proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV6_STR);
if (string::npos != proc_name_pos) if (string::npos != proc_name_pos)
{ {
result |= ARCH_ARMv6;
} }
else else
{ {
proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV5_STR); proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV7_STR);
if (string::npos != proc_name_pos) if (string::npos != proc_name_pos)
{ {
result |= ARCH_ARMv5; result |= ARCH_ARMv7;
}
else
{
proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV6_STR);
if (string::npos != proc_name_pos)
{
result |= ARCH_ARMv6;
}
else
{
proc_name_pos = it->second.find(CPU_INFO_ARCH_ARMV5_STR);
if (string::npos != proc_name_pos)
{
result |= ARCH_ARMv5;
}
}
} }
} }
}
}
} }
else else
{ {
return ARCH_UNKNOWN; return ARCH_UNKNOWN;
} }
it = cpu_info.find("Features"); it = cpu_info.find("Features");
if (cpu_info.end() != it) if (cpu_info.end() != it)
{ {
set<string> features = SplitString(it->second, ' '); set<string> features = SplitString(it->second, ' ');
if (features.end() != features.find(CPU_INFO_NEON_STR)) if (features.end() != features.find(CPU_INFO_NEON_STR))
{
result |= FEATURES_HAS_NEON;
}
if (features.end() != features.find(CPU_INFO_NEON2_STR))
{
result |= FEATURES_HAS_NEON2;
}
if (features.end() != features.find(CPU_INFO_VFPV3_STR))
{
if (features.end () != features.find(CPU_INFO_VFPV3D16_STR))
{ {
result |= FEATURES_HAS_VFPv3d16; result |= FEATURES_HAS_NEON;
} }
else if (features.end() != features.find(CPU_INFO_NEON2_STR))
{ {
result |= FEATURES_HAS_VFPv3; result |= FEATURES_HAS_NEON2;
}
if (features.end() != features.find(CPU_INFO_VFPV3_STR))
{
if (features.end () != features.find(CPU_INFO_VFPV3D16_STR))
{
result |= FEATURES_HAS_VFPv3d16;
}
else
{
result |= FEATURES_HAS_VFPv3;
}
} }
} }
} #endif
#endif
return result; return result;
} }
...@@ -116,7 +116,7 @@ string GetPlatformName() ...@@ -116,7 +116,7 @@ string GetPlatformName()
if (cpu_info.end() != hw_iterator) if (cpu_info.end() != hw_iterator)
{ {
hardware_name = hw_iterator->second; hardware_name = hw_iterator->second;
} }
return hardware_name; return hardware_name;
...@@ -126,37 +126,37 @@ int GetProcessorCount() ...@@ -126,37 +126,37 @@ int GetProcessorCount()
{ {
FILE* cpuPossible = fopen("/sys/devices/system/cpu/possible", "r"); FILE* cpuPossible = fopen("/sys/devices/system/cpu/possible", "r");
if(!cpuPossible) if(!cpuPossible)
return 1; return 1;
char buf[2000]; //big enough for 1000 CPUs in worst possible configuration char buf[2000]; //big enough for 1000 CPUs in worst possible configuration
char* pbuf = fgets(buf, sizeof(buf), cpuPossible); char* pbuf = fgets(buf, sizeof(buf), cpuPossible);
fclose(cpuPossible); fclose(cpuPossible);
if(!pbuf) if(!pbuf)
return 1; return 1;
//parse string of form "0-1,3,5-7,10,13-15" //parse string of form "0-1,3,5-7,10,13-15"
int cpusAvailable = 0; int cpusAvailable = 0;
while(*pbuf) while(*pbuf)
{
const char* pos = pbuf;
bool range = false;
while(*pbuf && *pbuf != ',')
{ {
if(*pbuf == '-') range = true; const char* pos = pbuf;
++pbuf; bool range = false;
} while(*pbuf && *pbuf != ',')
if(*pbuf) *pbuf++ = 0; {
if(!range) if(*pbuf == '-') range = true;
++cpusAvailable; ++pbuf;
else }
{ if(*pbuf) *pbuf++ = 0;
int rstart = 0, rend = 0; if(!range)
sscanf(pos, "%d-%d", &rstart, &rend); ++cpusAvailable;
cpusAvailable += rend - rstart + 1; else
{
int rstart = 0, rend = 0;
sscanf(pos, "%d-%d", &rstart, &rend);
cpusAvailable += rend - rstart + 1;
}
} }
} return cpusAvailable ? cpusAvailable : 1;
return cpusAvailable ? cpusAvailable : 1;
} }
int DetectKnownPlatforms() int DetectKnownPlatforms()
...@@ -165,20 +165,20 @@ int DetectKnownPlatforms() ...@@ -165,20 +165,20 @@ int DetectKnownPlatforms()
if (3 == tegra_status) if (3 == tegra_status)
{ {
return PLATFORM_TEGRA3; return PLATFORM_TEGRA3;
} }
else else
{ {
return PLATFORM_UNKNOWN; return PLATFORM_UNKNOWN;
} }
// NOTE: Uncomment when all Tegras will be supported // NOTE: Uncomment when all Tegras will be supported
/*if (tegra_status > 0) /*if (tegra_status > 0)
{ * {
return PLATFORM_TEGRA + tegra_status - 1; * return PLATFORM_TEGRA + tegra_status - 1;
} }
else else
{ {
return PLATFORM_UNKNOWN; return PLATFORM_UNKNOWN;
}*/ }*/
} }
\ No newline at end of file
...@@ -23,6 +23,7 @@ std::set<std::string> OpenCVEngine::InitKnownOpenCVersions() ...@@ -23,6 +23,7 @@ std::set<std::string> OpenCVEngine::InitKnownOpenCVersions()
result.insert("240"); result.insert("240");
result.insert("241"); result.insert("241");
result.insert("242"); result.insert("242");
result.insert("243");
return result; return result;
} }
...@@ -41,31 +42,31 @@ std::string OpenCVEngine::NormalizeVersionString(std::string version) ...@@ -41,31 +42,31 @@ std::string OpenCVEngine::NormalizeVersionString(std::string version)
if (version.empty()) if (version.empty())
{ {
return result; return result;
} }
if (('a' == version[version.size()-1]) || ('b' == version[version.size()-1])) if (('a' == version[version.size()-1]) || ('b' == version[version.size()-1]))
{ {
suffix = version[version.size()-1]; suffix = version[version.size()-1];
version.erase(version.size()-1); version.erase(version.size()-1);
} }
std::vector<std::string> parts = SplitStringVector(version, '.'); std::vector<std::string> parts = SplitStringVector(version, '.');
if (parts.size() >= 2) if (parts.size() >= 2)
{ {
if (parts.size() >= 3) if (parts.size() >= 3)
{ {
result = parts[0] + parts[1] + parts[2] + suffix; result = parts[0] + parts[1] + parts[2] + suffix;
if (!ValidateVersionString(result)) if (!ValidateVersionString(result))
result = ""; result = "";
} }
else else
{ {
result = parts[0] + parts[1] + "0" + suffix; result = parts[0] + parts[1] + "0" + suffix;
if (!ValidateVersionString(result)) if (!ValidateVersionString(result))
result = ""; result = "";
} }
} }
return result; return result;
...@@ -94,19 +95,19 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version) ...@@ -94,19 +95,19 @@ String16 OpenCVEngine::GetLibPathByVersion(android::String16 version)
if (!norm_version.empty()) if (!norm_version.empty())
{ {
path = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); path = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID);
if (path.empty()) if (path.empty())
{ {
LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str()); LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str());
} }
else else
{ {
FixPermissions(path); FixPermissions(path);
} }
} }
else else
{ {
LOGE("OpenCV version \"%s\" (%s) is not supported", String8(version).string(), norm_version.c_str()); LOGE("OpenCV version \"%s\" (%s) is not supported", String8(version).string(), norm_version.c_str());
} }
return String16(path.c_str()); return String16(path.c_str());
...@@ -121,46 +122,46 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version) ...@@ -121,46 +122,46 @@ android::String16 OpenCVEngine::GetLibraryList(android::String16 version)
if (!norm_version.empty()) if (!norm_version.empty())
{ {
std::string tmp = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID); std::string tmp = PackageManager->GetPackagePathByVersion(norm_version, Platform, CpuID);
if (!tmp.empty()) if (!tmp.empty())
{
tmp += (std::string("/") + LIB_OPENCV_INFO_NAME);
LOGD("Trying to load info library \"%s\"", tmp.c_str());
void* handle;
char* (*info_func)();
handle = dlopen(tmp.c_str(), RTLD_LAZY);
if (handle)
{ {
const char* error; tmp += (std::string("/") + LIB_OPENCV_INFO_NAME);
dlerror(); LOGD("Trying to load info library \"%s\"", tmp.c_str());
*(void **) (&info_func) = dlsym(handle, "GetLibraryList");
if ((error = dlerror()) == NULL) void* handle;
{ char* (*info_func)();
result = String16((*info_func)());
dlclose(handle); handle = dlopen(tmp.c_str(), RTLD_LAZY);
if (handle)
{
const char* error;
dlerror();
*(void **) (&info_func) = dlsym(handle, "GetLibraryList");
if ((error = dlerror()) == NULL)
{
result = String16((*info_func)());
dlclose(handle);
}
else
{
LOGE("Library loading error: \"%s\"", error);
}
}
else
{
LOGI("Info library not found in package");
}
} }
else else
{ {
LOGE("Library loading error: \"%s\"", error); LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str());
}
} }
else
{
LOGI("Info library not found in package");
}
}
else
{
LOGI("Package OpenCV of version %s is not installed. Try to install it :)", norm_version.c_str());
}
} }
else else
{ {
LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str()); LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str());
} }
return result; return result;
...@@ -172,26 +173,18 @@ bool OpenCVEngine::InstallVersion(android::String16 version) ...@@ -172,26 +173,18 @@ bool OpenCVEngine::InstallVersion(android::String16 version)
std::string norm_version; std::string norm_version;
bool result = false; bool result = false;
LOGD("OpenCVEngine::InstallVersion() begin");
norm_version = NormalizeVersionString(std_version); norm_version = NormalizeVersionString(std_version);
if (!norm_version.empty()) if (!norm_version.empty())
{
LOGD("OpenCVEngine::InstallVersion() begin");
if (!PackageManager->CheckVersionInstalled(norm_version, Platform, CpuID))
{ {
LOGD("PackageManager->InstallVersion call"); LOGD("PackageManager->InstallVersion call");
result = PackageManager->InstallVersion(norm_version, Platform, CpuID); result = PackageManager->InstallVersion(norm_version, Platform, CpuID);
} }
else else
{ {
LOGI("Package OpenCV of version %s is already installed. Skiped.", norm_version.c_str()); LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str());
result = true;
}
}
else
{
LOGE("OpenCV version \"%s\" is not supported", norm_version.c_str());
} }
LOGD("OpenCVEngine::InstallVersion() end"); LOGD("OpenCVEngine::InstallVersion() end");
...@@ -207,16 +200,16 @@ bool OpenCVEngine::FixPermissions(const std::string& path) ...@@ -207,16 +200,16 @@ bool OpenCVEngine::FixPermissions(const std::string& path)
DIR* dir = opendir(path.c_str()); DIR* dir = opendir(path.c_str());
if (!dir) if (!dir)
{ {
LOGD("Fixing permissions error"); LOGD("Fixing permissions error");
return false; return false;
} }
dirent* files = readdir(dir); dirent* files = readdir(dir);
while (files) while (files)
{ {
LOGD("Fix permissions for \"%s\"", files->d_name); LOGD("Fix permissions for \"%s\"", files->d_name);
chmod((path + std::string("/") + std::string(files->d_name)).c_str(), S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); chmod((path + std::string("/") + std::string(files->d_name)).c_str(), S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
files = readdir(dir); files = readdir(dir);
} }
closedir(dir); closedir(dir);
......
...@@ -12,18 +12,18 @@ map<string, string> GetCpuInfo() ...@@ -12,18 +12,18 @@ map<string, string> GetCpuInfo()
f.open("/proc/cpuinfo"); f.open("/proc/cpuinfo");
if (f.is_open()) if (f.is_open())
{ {
while (!f.eof()) while (!f.eof())
{
string tmp;
string key;
string value;
getline(f, tmp);
if (ParseString(tmp, key, value))
{ {
result[key] = value; string tmp;
string key;
string value;
getline(f, tmp);
if (ParseString(tmp, key, value))
{
result[key] = value;
}
} }
} }
}
f.close(); f.close();
......
...@@ -8,7 +8,7 @@ bool StripString(string& src) ...@@ -8,7 +8,7 @@ bool StripString(string& src)
if (src.empty()) if (src.empty())
{ {
return false; return false;
} }
while ((pos < src.length()) && (' ' == src[pos])) pos++; while ((pos < src.length()) && (' ' == src[pos])) pos++;
...@@ -32,7 +32,7 @@ bool StripString(string& src) ...@@ -32,7 +32,7 @@ bool StripString(string& src)
bool ParseString(const string& src, string& key, string& value) bool ParseString(const string& src, string& key, string& value)
{ {
if (src.empty()) if (src.empty())
return false; return false;
// find seporator ":" // find seporator ":"
size_t seporator_pos = src.find(":"); size_t seporator_pos = src.find(":");
...@@ -52,20 +52,19 @@ bool ParseString(const string& src, string& key, string& value) ...@@ -52,20 +52,19 @@ bool ParseString(const string& src, string& key, string& value)
set<string> SplitString(const string& src, const char seporator) set<string> SplitString(const string& src, const char seporator)
{ {
set<string> result; set<string> result;
if (!src.empty()) if (!src.empty())
{ {
size_t seporator_pos; size_t seporator_pos;
size_t prev_pos = 0; size_t prev_pos = 0;
do do
{ {
seporator_pos = src.find(seporator, prev_pos); seporator_pos = src.find(seporator, prev_pos);
result.insert(src.substr(prev_pos, seporator_pos - prev_pos)); result.insert(src.substr(prev_pos, seporator_pos - prev_pos));
prev_pos = seporator_pos + 1; prev_pos = seporator_pos + 1;
} }
while (string::npos != seporator_pos); while (string::npos != seporator_pos);
} }
return result; return result;
...@@ -77,16 +76,16 @@ vector<string> SplitStringVector(const string& src, const char seporator) ...@@ -77,16 +76,16 @@ vector<string> SplitStringVector(const string& src, const char seporator)
if (!src.empty()) if (!src.empty())
{ {
size_t seporator_pos; size_t seporator_pos;
size_t prev_pos = 0; size_t prev_pos = 0;
do do
{ {
seporator_pos = src.find(seporator, prev_pos); seporator_pos = src.find(seporator, prev_pos);
string tmp = src.substr(prev_pos, seporator_pos - prev_pos); string tmp = src.substr(prev_pos, seporator_pos - prev_pos);
result.push_back(tmp); result.push_back(tmp);
prev_pos = seporator_pos + 1; prev_pos = seporator_pos + 1;
} }
while (string::npos != seporator_pos); while (string::npos != seporator_pos);
} }
return result; return result;
......
...@@ -15,38 +15,38 @@ int DetectTegra() ...@@ -15,38 +15,38 @@ int DetectTegra()
gzFile kernelConfig = gzopen(KERNEL_CONFIG, "r"); gzFile kernelConfig = gzopen(KERNEL_CONFIG, "r");
if (kernelConfig != 0) if (kernelConfig != 0)
{ {
char tmpbuf[KERNEL_CONFIG_MAX_LINE_WIDTH]; char tmpbuf[KERNEL_CONFIG_MAX_LINE_WIDTH];
const char *tegra_config = KERNEL_CONFIG_TEGRA_MAGIC; const char *tegra_config = KERNEL_CONFIG_TEGRA_MAGIC;
const char *tegra2_config = KERNEL_CONFIG_TEGRA2_MAGIC; const char *tegra2_config = KERNEL_CONFIG_TEGRA2_MAGIC;
const char *tegra3_config = KERNEL_CONFIG_TEGRA3_MAGIC; const char *tegra3_config = KERNEL_CONFIG_TEGRA3_MAGIC;
int len = strlen(tegra_config); int len = strlen(tegra_config);
int len2 = strlen(tegra2_config); int len2 = strlen(tegra2_config);
int len3 = strlen(tegra3_config); int len3 = strlen(tegra3_config);
while (0 != gzgets(kernelConfig, tmpbuf, KERNEL_CONFIG_MAX_LINE_WIDTH)) while (0 != gzgets(kernelConfig, tmpbuf, KERNEL_CONFIG_MAX_LINE_WIDTH))
{
if (0 == strncmp(tmpbuf, tegra_config, len))
{ {
result = 1; if (0 == strncmp(tmpbuf, tegra_config, len))
} {
result = 1;
}
if (0 == strncmp(tmpbuf, tegra2_config, len2)) if (0 == strncmp(tmpbuf, tegra2_config, len2))
{ {
result = 2; result = 2;
break; break;
} }
if (0 == strncmp(tmpbuf, tegra3_config, len3)) if (0 == strncmp(tmpbuf, tegra3_config, len3))
{ {
result = 3; result = 3;
break; break;
} }
} }
gzclose(kernelConfig); gzclose(kernelConfig);
} }
else else
{ {
result = TEGRA_DETECTOR_ERROR; result = TEGRA_DETECTOR_ERROR;
} }
return result; return result;
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
using namespace std; using namespace std;
JavaBasedPackageManager::JavaBasedPackageManager(JavaVM* JavaMashine, jobject MarketConnector): JavaBasedPackageManager::JavaBasedPackageManager(JavaVM* JavaMashine, jobject MarketConnector):
JavaContext(JavaMashine), JavaContext(JavaMashine),
JavaPackageManager(MarketConnector) JavaPackageManager(MarketConnector)
{ {
assert(JavaContext); assert(JavaContext);
assert(JavaPackageManager); assert(JavaPackageManager);
...@@ -24,23 +24,23 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package) ...@@ -24,23 +24,23 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6));
if (self_attached) if (self_attached)
{ {
JavaContext->AttachCurrentThread(&jenv, NULL); JavaContext->AttachCurrentThread(&jenv, NULL);
} }
LOGD("GetObjectClass call\n"); LOGD("GetObjectClass call\n");
jclass jclazz = jenv->GetObjectClass(JavaPackageManager); jclass jclazz = jenv->GetObjectClass(JavaPackageManager);
if (!jclazz) if (!jclazz)
{ {
LOGE("MarketConnector class was not found!"); LOGE("MarketConnector class was not found!");
return false; return false;
} }
LOGD("GetMethodID call\n"); LOGD("GetMethodID call\n");
jmethodID jmethod = jenv->GetMethodID(jclazz, "InstallAppFromMarket", "(Ljava/lang/String;)Z"); jmethodID jmethod = jenv->GetMethodID(jclazz, "InstallAppFromMarket", "(Ljava/lang/String;)Z");
if (!jmethod) if (!jmethod)
{ {
LOGE("MarketConnector::GetAppFormMarket method was not found!"); LOGE("MarketConnector::GetAppFormMarket method was not found!");
return false; return false;
} }
LOGD("Calling java package manager with package name %s\n", package.GetFullName().c_str()); LOGD("Calling java package manager with package name %s\n", package.GetFullName().c_str());
...@@ -50,7 +50,7 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package) ...@@ -50,7 +50,7 @@ bool JavaBasedPackageManager::InstallPackage(const PackageInfo& package)
if (self_attached) if (self_attached)
{ {
JavaContext->DetachCurrentThread(); JavaContext->DetachCurrentThread();
} }
LOGD("JavaBasedPackageManager::InstallPackage() end\n"); LOGD("JavaBasedPackageManager::InstallPackage() end\n");
...@@ -69,23 +69,23 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages() ...@@ -69,23 +69,23 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6));
if (self_attached) if (self_attached)
{ {
JavaContext->AttachCurrentThread(&jenv, NULL); JavaContext->AttachCurrentThread(&jenv, NULL);
} }
LOGD("GetObjectClass call"); LOGD("GetObjectClass call");
jclass jclazz = jenv->GetObjectClass(JavaPackageManager); jclass jclazz = jenv->GetObjectClass(JavaPackageManager);
if (!jclazz) if (!jclazz)
{ {
LOGE("MarketConnector class was not found!"); LOGE("MarketConnector class was not found!");
return result; return result;
} }
LOGD("GetMethodID call"); LOGD("GetMethodID call");
jmethodID jmethod = jenv->GetMethodID(jclazz, "GetInstalledOpenCVPackages", "()[Landroid/content/pm/PackageInfo;"); jmethodID jmethod = jenv->GetMethodID(jclazz, "GetInstalledOpenCVPackages", "()[Landroid/content/pm/PackageInfo;");
if (!jmethod) if (!jmethod)
{ {
LOGE("MarketConnector::GetInstalledOpenCVPackages method was not found!"); LOGE("MarketConnector::GetInstalledOpenCVPackages method was not found!");
return result; return result;
} }
LOGD("Java package manager call"); LOGD("Java package manager call");
...@@ -98,19 +98,19 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages() ...@@ -98,19 +98,19 @@ vector<PackageInfo> JavaBasedPackageManager::GetInstalledPackages()
for (jsize i = 0; i < size; i++) for (jsize i = 0; i < size; i++)
{ {
jobject jtmp = jenv->GetObjectArrayElement(jpkgs, i); jobject jtmp = jenv->GetObjectArrayElement(jpkgs, i);
PackageInfo tmp = ConvertPackageFromJava(jtmp, jenv); PackageInfo tmp = ConvertPackageFromJava(jtmp, jenv);
jenv->DeleteLocalRef(jtmp); jenv->DeleteLocalRef(jtmp);
if (tmp.IsValid()) if (tmp.IsValid())
result.push_back(tmp); result.push_back(tmp);
} }
jenv->DeleteLocalRef(jpkgs); jenv->DeleteLocalRef(jpkgs);
if (self_attached) if (self_attached)
{ {
JavaContext->DetachCurrentThread(); JavaContext->DetachCurrentThread();
} }
LOGD("JavaBasedPackageManager::GetInstalledPackages() end"); LOGD("JavaBasedPackageManager::GetInstalledPackages() end");
...@@ -140,20 +140,20 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI ...@@ -140,20 +140,20 @@ PackageInfo JavaBasedPackageManager::ConvertPackageFromJava(jobject package, JNI
jint api_level = jenv->GetStaticIntField(jclazz, jfield); jint api_level = jenv->GetStaticIntField(jclazz, jfield);
if (api_level > 8) if (api_level > 8)
{ {
jclazz = jenv->GetObjectClass(package); jclazz = jenv->GetObjectClass(package);
jfield = jenv->GetFieldID(jclazz, "applicationInfo", "Landroid/content/pm/ApplicationInfo;"); jfield = jenv->GetFieldID(jclazz, "applicationInfo", "Landroid/content/pm/ApplicationInfo;");
jobject japp_info = jenv->GetObjectField(package, jfield); jobject japp_info = jenv->GetObjectField(package, jfield);
jclazz = jenv->GetObjectClass(japp_info); jclazz = jenv->GetObjectClass(japp_info);
jfield = jenv->GetFieldID(jclazz, "nativeLibraryDir", "Ljava/lang/String;"); jfield = jenv->GetFieldID(jclazz, "nativeLibraryDir", "Ljava/lang/String;");
jstring jpathobj = static_cast<jstring>(jenv->GetObjectField(japp_info, jfield)); jstring jpathobj = static_cast<jstring>(jenv->GetObjectField(japp_info, jfield));
const char* jpathstr = jenv->GetStringUTFChars(jpathobj, NULL); const char* jpathstr = jenv->GetStringUTFChars(jpathobj, NULL);
path = string(jpathstr); path = string(jpathstr);
jenv->ReleaseStringUTFChars(jpathobj, jpathstr); jenv->ReleaseStringUTFChars(jpathobj, jpathstr);
jenv->DeleteLocalRef(jpathobj); jenv->DeleteLocalRef(jpathobj);
} }
else else
{ {
path = "/data/data/" + name + "/lib"; path = "/data/data/" + name + "/lib";
} }
return PackageInfo(name, path, verison); return PackageInfo(name, path, verison);
...@@ -170,14 +170,14 @@ JavaBasedPackageManager::~JavaBasedPackageManager() ...@@ -170,14 +170,14 @@ JavaBasedPackageManager::~JavaBasedPackageManager()
self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6)); self_attached = (JNI_EDETACHED == JavaContext->GetEnv((void**)&jenv, JNI_VERSION_1_6));
if (self_attached) if (self_attached)
{ {
JavaContext->AttachCurrentThread(&jenv, NULL); JavaContext->AttachCurrentThread(&jenv, NULL);
} }
jenv->DeleteGlobalRef(JavaPackageManager); jenv->DeleteGlobalRef(JavaPackageManager);
if (self_attached) if (self_attached)
{ {
JavaContext->DetachCurrentThread(); JavaContext->DetachCurrentThread();
} }
LOGD("JavaBasedPackageManager::~JavaBasedPackageManager() end"); LOGD("JavaBasedPackageManager::~JavaBasedPackageManager() end");
} }
...@@ -20,11 +20,11 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv* ...@@ -20,11 +20,11 @@ JNIEXPORT jobject JNICALL Java_org_opencv_engine_BinderConnector_Connect(JNIEnv*
LOGI("Creating new component"); LOGI("Creating new component");
if (NULL != OpenCVEngineBinder.get()) if (NULL != OpenCVEngineBinder.get())
{ {
LOGI("New component created successfully"); LOGI("New component created successfully");
} }
else else
{ {
LOGE("OpenCV Engine component was not created!"); LOGE("OpenCV Engine component was not created!");
} }
return javaObjectForIBinder(env, OpenCVEngineBinder); return javaObjectForIBinder(env, OpenCVEngineBinder);
...@@ -36,25 +36,25 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* e ...@@ -36,25 +36,25 @@ JNIEXPORT jboolean JNICALL Java_org_opencv_engine_BinderConnector_Init(JNIEnv* e
if (NULL == PackageManager) if (NULL == PackageManager)
{ {
JavaVM* jvm; JavaVM* jvm;
env->GetJavaVM(&jvm); env->GetJavaVM(&jvm);
PackageManager = new JavaBasedPackageManager(jvm, env->NewGlobalRef(market)); PackageManager = new JavaBasedPackageManager(jvm, env->NewGlobalRef(market));
} }
if (PackageManager) if (PackageManager)
{ {
if (!OpenCVEngineBinder.get()) if (!OpenCVEngineBinder.get())
{ {
OpenCVEngineBinder = new OpenCVEngine(PackageManager); OpenCVEngineBinder = new OpenCVEngine(PackageManager);
return (NULL != OpenCVEngineBinder.get()); return (NULL != OpenCVEngineBinder.get());
} }
else else
{ {
return true; return true;
} }
} }
else else
{ {
return false; return false;
} }
} }
...@@ -67,4 +67,3 @@ JNIEXPORT void JNICALL Java_org_opencv_engine_BinderConnector_Final(JNIEnv *, jo ...@@ -67,4 +67,3 @@ JNIEXPORT void JNICALL Java_org_opencv_engine_BinderConnector_Final(JNIEnv *, jo
delete PackageManager; delete PackageManager;
PackageManager = NULL; PackageManager = NULL;
} }
...@@ -25,10 +25,10 @@ int main(int argc, char *argv[]) ...@@ -25,10 +25,10 @@ int main(int argc, char *argv[])
LOGI("Trying to contect to service"); LOGI("Trying to contect to service");
do { do {
EngineService = ServiceManager->getService(IOpenCVEngine::descriptor); EngineService = ServiceManager->getService(IOpenCVEngine::descriptor);
if (EngineService != 0) break; if (EngineService != 0) break;
LOGW("OpenCVEngine not published, waiting..."); LOGW("OpenCVEngine not published, waiting...");
usleep(500000); // 0.5 s usleep(500000); // 0.5 s
} while(true); } while(true);
LOGI("Connection established"); LOGI("Connection established");
......
...@@ -18,9 +18,9 @@ set<string> CommonPackageManager::GetInstalledVersions() ...@@ -18,9 +18,9 @@ set<string> CommonPackageManager::GetInstalledVersions()
for (vector<PackageInfo>::const_iterator it = installed_packages.begin(); it != installed_packages.end(); ++it) for (vector<PackageInfo>::const_iterator it = installed_packages.begin(); it != installed_packages.end(); ++it)
{ {
string version = it->GetVersion(); string version = it->GetVersion();
assert(!version.empty()); assert(!version.empty());
result.insert(version); result.insert(version);
} }
return result; return result;
...@@ -36,12 +36,13 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int ...@@ -36,12 +36,13 @@ bool CommonPackageManager::CheckVersionInstalled(const std::string& version, int
for (vector<PackageInfo>::const_iterator it = packages.begin(); it != packages.end(); ++it) for (vector<PackageInfo>::const_iterator it = packages.begin(); it != packages.end(); ++it)
{ {
LOGD("Found package: \"%s\"", it->GetFullName().c_str()); LOGD("Found package: \"%s\"", it->GetFullName().c_str());
} }
if (!packages.empty()) if (!packages.empty())
{ {
result = (packages.end() != find(packages.begin(), packages.end(), target_package)); vector<PackageInfo>::const_iterator it = find(packages.begin(), packages.end(), target_package);
result = (it != packages.end());
} }
LOGD("CommonPackageManager::CheckVersionInstalled() end"); LOGD("CommonPackageManager::CheckVersionInstalled() end");
return result; return result;
...@@ -63,66 +64,66 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version, ...@@ -63,66 +64,66 @@ string CommonPackageManager::GetPackagePathByVersion(const std::string& version,
for (vector<PackageInfo>::iterator it = all_packages.begin(); it != all_packages.end(); ++it) for (vector<PackageInfo>::iterator it = all_packages.begin(); it != all_packages.end(); ++it)
{ {
LOGD("Check version \"%s\" compatibility with \"%s\"\n", version.c_str(), it->GetVersion().c_str()); LOGD("Check version \"%s\" compatibility with \"%s\"\n", version.c_str(), it->GetVersion().c_str());
if (IsVersionCompatible(version, it->GetVersion())) if (IsVersionCompatible(version, it->GetVersion()))
{
LOGD("Compatible");
packages.push_back(*it);
}
else
{
LOGD("NOT Compatible");
}
}
if (!packages.empty())
{
vector<PackageInfo>::iterator found = find(packages.begin(), packages.end(), target_package);
if (packages.end() != found)
{
result = found->GetInstalationPath();
}
else
{
int OptRating = -1;
std::vector<std::pair<int, int> >& group = CommonPackageManager::ArmRating;
if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64))
group = CommonPackageManager::IntelRating;
int HardwareRating = GetHardwareRating(platform, cpu_id, group);
LOGD("Current hardware platform %d, %d", platform, cpu_id);
if (-1 == HardwareRating)
{ {
LOGE("Cannot calculate rating for current hardware platform!"); LOGD("Compatible");
packages.push_back(*it);
} }
else else
{ {
for (vector<PackageInfo>::iterator it = packages.begin(); it != packages.end(); ++it) LOGD("NOT Compatible");
{
int PackageRating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), group);
if (PackageRating >= 0)
{
if ((PackageRating <= HardwareRating) && (PackageRating > OptRating))
{
OptRating = PackageRating;
found = it;
}
}
} }
}
if ((-1 != OptRating) && (packages.end() != found)) if (!packages.empty())
{
vector<PackageInfo>::iterator found = find(packages.begin(), packages.end(), target_package);
if (packages.end() != found)
{ {
result = found->GetInstalationPath(); result = found->GetInstalationPath();
} }
else else
{ {
LOGI("Found package is incompatible with current hardware platform"); int OptRating = -1;
} std::vector<std::pair<int, int> >& group = CommonPackageManager::ArmRating;
if ((cpu_id & ARCH_X86) || (cpu_id & ARCH_X64))
group = CommonPackageManager::IntelRating;
int HardwareRating = GetHardwareRating(platform, cpu_id, group);
LOGD("Current hardware platform %d, %d", platform, cpu_id);
if (-1 == HardwareRating)
{
LOGE("Cannot calculate rating for current hardware platform!");
}
else
{
for (vector<PackageInfo>::iterator it = packages.begin(); it != packages.end(); ++it)
{
int PackageRating = GetHardwareRating(it->GetPlatform(), it->GetCpuID(), group);
if (PackageRating >= 0)
{
if ((PackageRating <= HardwareRating) && (PackageRating > OptRating))
{
OptRating = PackageRating;
found = it;
}
}
}
if ((-1 != OptRating) && (packages.end() != found))
{
result = found->GetInstalationPath();
}
else
{
LOGI("Found package is incompatible with current hardware platform");
}
}
} }
} }
}
return result; return result;
} }
......
...@@ -126,7 +126,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion) ...@@ -126,7 +126,7 @@ TEST(OpenCVEngineTest, GetPathForExecHWNewVersion)
EXPECT_EQ(0, result.size()); EXPECT_EQ(0, result.size());
} }
#else #else // armeabi
TEST(OpenCVEngineTest, GetPathForExecHWExistVersion) TEST(OpenCVEngineTest, GetPathForExecHWExistVersion)
{ {
sp<IOpenCVEngine> Engine = InitConnect(); sp<IOpenCVEngine> Engine = InitConnect();
......
...@@ -10,8 +10,8 @@ DEVICE_ARCH = "armeabi" ...@@ -10,8 +10,8 @@ DEVICE_ARCH = "armeabi"
if (__name__ == "__main__"): if (__name__ == "__main__"):
if (len(sys.argv) >= 3): if (len(sys.argv) >= 3):
DEVICE_ARCH = sys.argv[1] DEVICE_ARCH = sys.argv[1]
DEVICE_NAME = sys.argv[2] DEVICE_NAME = sys.argv[2]
if (DEVICE_NAME != ""): if (DEVICE_NAME != ""):
DEVICE_STR = "-s \"" + DEVICE_NAME + "\"" DEVICE_STR = "-s \"" + DEVICE_NAME + "\""
......
...@@ -18,14 +18,14 @@ def RunTestApp(AppName): ...@@ -18,14 +18,14 @@ def RunTestApp(AppName):
if (__name__ == "__main__"): if (__name__ == "__main__"):
if (3 == len(sys.argv)): if (3 == len(sys.argv)):
DEVICE_ARCH = sys.argv[1] DEVICE_ARCH = sys.argv[1]
DEVICE_NAME = sys.argv[2] DEVICE_NAME = sys.argv[2]
if (DEVICE_NAME != ""): if (DEVICE_NAME != ""):
DEVICE_STR = "-s \"" + DEVICE_NAME + "\"" DEVICE_STR = "-s \"" + DEVICE_NAME + "\""
if (not os.path.exists(LOCAL_LOG_PATH)): if (not os.path.exists(LOCAL_LOG_PATH)):
os.makedirs(LOCAL_LOG_PATH) os.makedirs(LOCAL_LOG_PATH)
print("Waiting for device \"%s\" with arch \"%s\" ..." % (DEVICE_NAME, DEVICE_ARCH)) print("Waiting for device \"%s\" with arch \"%s\" ..." % (DEVICE_NAME, DEVICE_ARCH))
os.system("adb %s wait-for-device" % DEVICE_STR) os.system("adb %s wait-for-device" % DEVICE_STR)
......
...@@ -118,7 +118,7 @@ class AsyncServiceHelper ...@@ -118,7 +118,7 @@ class AsyncServiceHelper
} }
else else
{ {
Log.d(TAG, "Wating current installation process"); Log.d(TAG, "Waiting current installation process");
InstallCallbackInterface WaitQuery = new InstallCallbackInterface() { InstallCallbackInterface WaitQuery = new InstallCallbackInterface() {
private LoaderCallbackInterface mUserAppCallback = Callback; private LoaderCallbackInterface mUserAppCallback = Callback;
public String getPackageName() public String getPackageName()
...@@ -268,17 +268,21 @@ class AsyncServiceHelper ...@@ -268,17 +268,21 @@ class AsyncServiceHelper
{ {
Log.d(TAG, "OpenCV package was not installed!"); Log.d(TAG, "OpenCV package was not installed!");
mStatus = LoaderCallbackInterface.MARKET_ERROR; mStatus = LoaderCallbackInterface.MARKET_ERROR;
Log.d(TAG, "Init finished with status " + mStatus);
Log.d(TAG, "Unbind from service");
mAppContext.unbindService(mServiceConnection);
Log.d(TAG, "Calling using callback");
mUserAppCallback.onManagerConnected(mStatus);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
e.printStackTrace(); e.printStackTrace();
mStatus = LoaderCallbackInterface.INIT_FAILED; mStatus = LoaderCallbackInterface.INIT_FAILED;
Log.d(TAG, "Init finished with status " + mStatus);
Log.d(TAG, "Unbind from service");
mAppContext.unbindService(mServiceConnection);
Log.d(TAG, "Calling using callback");
mUserAppCallback.onManagerConnected(mStatus);
} }
Log.d(TAG, "Init finished with status " + mStatus);
Log.d(TAG, "Unbind from service");
mAppContext.unbindService(mServiceConnection);
Log.d(TAG, "Calling using callback");
mUserAppCallback.onManagerConnected(mStatus);
} }
}; };
......
...@@ -28,7 +28,7 @@ public abstract class BaseLoaderCallback implements LoaderCallbackInterface { ...@@ -28,7 +28,7 @@ public abstract class BaseLoaderCallback implements LoaderCallbackInterface {
/** OpenCV loader can not start Google Play Market. **/ /** OpenCV loader can not start Google Play Market. **/
case LoaderCallbackInterface.MARKET_ERROR: case LoaderCallbackInterface.MARKET_ERROR:
{ {
Log.d(TAG, "Google Play service is not installed! You can get it here"); Log.e(TAG, "Package installation failed!");
AlertDialog MarketErrorMessage = new AlertDialog.Builder(mAppContext).create(); AlertDialog MarketErrorMessage = new AlertDialog.Builder(mAppContext).create();
MarketErrorMessage.setTitle("OpenCV Manager"); MarketErrorMessage.setTitle("OpenCV Manager");
MarketErrorMessage.setMessage("Package installation failed!"); MarketErrorMessage.setMessage("Package installation failed!");
......
...@@ -12,6 +12,11 @@ public class OpenCVLoader ...@@ -12,6 +12,11 @@ public class OpenCVLoader
*/ */
public static final String OPENCV_VERSION_2_4_2 = "2.4.2"; public static final String OPENCV_VERSION_2_4_2 = "2.4.2";
/**
* OpenCV Library version 2.4.3.
*/
public static final String OPENCV_VERSION_2_4_3 = "2.4.3";
/** /**
* Loads and initializes OpenCV library from current application package. Roughly, it's an analog of system.loadLibrary("opencv_java"). * Loads and initializes OpenCV library from current application package. Roughly, it's an analog of system.loadLibrary("opencv_java").
* @return Returns true is initialization of OpenCV was successful. * @return Returns true is initialization of OpenCV was successful.
......
...@@ -71,7 +71,7 @@ public class Puzzle15Activity extends Activity implements CvCameraViewListener, ...@@ -71,7 +71,7 @@ public class Puzzle15Activity extends Activity implements CvCameraViewListener,
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -86,7 +86,7 @@ public class ColorBlobDetectionActivity extends Activity implements OnTouchListe ...@@ -86,7 +86,7 @@ public class ColorBlobDetectionActivity extends Activity implements OnTouchListe
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -140,7 +140,7 @@ public class FdActivity extends Activity implements CvCameraViewListener { ...@@ -140,7 +140,7 @@ public class FdActivity extends Activity implements CvCameraViewListener {
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -121,7 +121,7 @@ public class ImageManipulationsActivity extends Activity implements CvCameraView ...@@ -121,7 +121,7 @@ public class ImageManipulationsActivity extends Activity implements CvCameraView
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -64,7 +64,7 @@ public class Sample1Java extends Activity implements CvCameraViewListener { ...@@ -64,7 +64,7 @@ public class Sample1Java extends Activity implements CvCameraViewListener {
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -83,7 +83,7 @@ public class Sample2NativeCamera extends Activity implements CvCameraViewListene ...@@ -83,7 +83,7 @@ public class Sample2NativeCamera extends Activity implements CvCameraViewListene
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -72,7 +72,7 @@ public class Sample3Native extends Activity implements CvCameraViewListener { ...@@ -72,7 +72,7 @@ public class Sample3Native extends Activity implements CvCameraViewListener {
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
...@@ -98,7 +98,7 @@ public class Sample4Mixed extends Activity implements CvCameraViewListener { ...@@ -98,7 +98,7 @@ public class Sample4Mixed extends Activity implements CvCameraViewListener {
public void onResume() public void onResume()
{ {
super.onResume(); super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mLoaderCallback); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
} }
public void onDestroy() { public void onDestroy() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment