小编Dal*_*ale的帖子

OpenCV for Android可以利用标准C++支持在Android Studio 2.2 for Windows上获得本机构建支持吗?

围绕获取原生opencv for android构建有很多问题和答案.有些使用gradle,有些则使用外部工具.对于原生OpenCV构建,这些众多,复杂且经常相互矛盾的描述可能会以一致的起点进行简化; 在创建Android Studio 2.2 Beta项目时,有一种方法可以包含C++支持: 包括C++支持在此输入图像描述

此功能是在2016年6月左右添加的.有关详细信息,请参阅Android工具技术文档.

将Android Studio 2.2或更高版本与Gradle 2.2.0或更高版本的Android插件一起使用,您可以将C和C++代码编译到Gradle可以与您的APK打包的本机库中,从而为您的应用添加C和C++代码.然后,您的Java代码可以通过Java Native Interface(JNI)调用本机库中的函数.如果您想了解有关使用JNI框架的更多信息,请阅读适用于Android的JNI技巧.

检查Include C++ Support生成一个名为的外部构建文件CMakeLists.txt.

# Sets the minimum version of CMake required to build the native
# library. You should either keep the default value or only pass a
# value of 3.4.0 or lower.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# …
Run Code Online (Sandbox Code Playgroud)

windows java-native-interface cmake android-studio opencv4android

27
推荐指数
2
解决办法
9923
查看次数

使用Android Studio的C++支持来构建非自由的OpenCV模块

背景

虽然早期版本的OpenCV(即2.4)允许Android项目利用SIFT功能,但将该功能分离opencv_contrib使得任务更加困难; 将OpenCV-3.x.x-android-sdk模块集成到项目中会使您无法使用该SIFT功能.

FeatureDetector.create(FeatureDetector.DYNAMIC_SIFT); // Fails
//OpenCV Error: Bad argument (Specified feature detector type is not supported.)
Run Code Online (Sandbox Code Playgroud)

使用外部工具

尽管像Gouhui Wang这样的技术描述了如何将OpenCV的非自由部分构建到Android项目中,但该过程需要外部工具.这个问题是关于如何获得相同的结果,而是利用Android Studio/InteliJ的强大功能和便利性.

在Android Studio中使用CMake

现代Android Studio版本具有有用的功能:

使用Android Studio 2.2及更高版本,您可以使用NDK将C和C++代码编译到本机库中,并使用IDE的集成构建系统Gradle将其打包到您的APK中.然后,您的Java代码可以通过Java Native Interface(JNI)调用本机库中的函数

正如这个有关使用C++支持构建OpenCV的stackoverflow问题和答案所示,可以将opencv4android的OpenCV 3.1(我怀疑其他版本)快速集成到新应用程序向导中生成的C++构建结构中.

为了让OpenCV的非自由部分完全在原生Android Studio构建过程中构建,需要采取哪些具体步骤

opencv cmake android-studio opencv4android

15
推荐指数
0
解决办法
480
查看次数

Windows 10上的Java Thread.sleep()在S3睡眠状态下停止

有一个桌面应用程序使用Thread.sleep()来实现长(数分钟或数小时)的延迟。从Windows XP(至少)到Windows 7,该应用程序都可以正常工作。该应用程序将计算将来需要执行的操作,然后单击Thread.sleep(msToWait)。即使系统在等待期间碰巧进入了S3睡眠状态,这也可以正常工作。

但是,从Windows 10开始,如果机器位于S3中,则Thread.sleep()之后的代码不会“按时”执行。看来机器开始在“ msToWait”处加上机器进入S3的时间开始执行代码(目前尚不能百分百确定,但有可能)。

Windows的早期版本没有表现出这种现象。不管睡眠状态如何,Thread.sleep()之后的代码都会等待正确的时间。

测试是在当前的JVM 1.7上进行的。

这是Windows 10错误吗?这是JVM错误吗?有解决方法吗?

附加数据:

开发了测试程序和程序。步骤是运行程序,使机器休眠约一分钟,然后唤醒机器并等待程序完成。

如果此程序在JVM版本为25.40-b25的Windows 10(报告为8)上运行,它将失败:

C:\Users\Tester\Downloads>SleepTester.exe
Wed Apr 01 10:47:35 PDT 2015 Using default number of minutes: 5
Wed Apr 01 10:47:35 PDT 2015 You can use "SleepTester -minutes 10" to have it sleep for 10 minutes, for example.
Wed Apr 01 10:47:35 PDT 2015 JVM Version: 25.40-b25 Windows Version: Windows 8
Wed Apr 01 10:47:35 PDT 2015 The program will now wait for 5 minutes.  Expect wrap-up at Wed …
Run Code Online (Sandbox Code Playgroud)

java windows windows-8 windows-10 sleep-mode

13
推荐指数
1
解决办法
1372
查看次数

有没有可视化复杂SQL连接的工具?

鉴于许多框架将创建复杂的(可能不那么可读/逻辑)SQL查询,似乎有一个工具可以直观地显示连接是如何完成的,这可能是一个有用的工具.但我还没有找到这样的工具.

我接受了一个包含大量表格的查询,并创建了一个图形作为我认为这种工具输出的示例: 手动生成可视化

链接上的文本是连接中使用的字段名称.粗体项是查询的输入.以数字结尾的表名只是同一个表的重复实例(即Partner和Partner2是同一个表,只是查询的一部分不止一次).

我希望能够将SQL查询删除到工具中并查看这样的图表.可能?

sql visualization

11
推荐指数
1
解决办法
1万
查看次数

如何获取Google Play应用的测试版用户数

在这个老问题中,我们建议采取行动不再可用Google Play Developer Console.现在有一个Download链接提供了一个包含以"app_version"结尾的csv的zip文件,但由于我已将beta代码提升为生产版,因此生产版和测试版用户都将运行相同的版本.因此,beta测试人员无法从应用程序的版本中获得.

当测试版用户访问Play商店时,他们会被告知他们是测试版测试人员,并且可以选择退出成为测试版测试人员.

最好的情况是,我想知道如果他们在Play商店中查看,多少人会得到你是beta测试人员的消息.

android release-management beta-testing google-play google-developers-console

9
推荐指数
1
解决办法
636
查看次数

如何使用数据库管理信号量?

如果相同代码的多个实例在不同的服务器上运行,我想使用数据库来确保如果某个服务器已经在另一台服务器上运行,则它不会在一台服务器上启动.

我可能会提出一些可行的SQL命令,它们使用Oracle事务处理,锁存器或其他任何东西,但我宁愿找到一些经过尝试和真实的东西.

几年前,作为SQL wiz的开发人员有一个SQL事务,它获取了信号量,如果得到它则返回true,如果没有得到它则返回false.然后在我处理结束时,我需要运行另一个SQL事务来释放信号量.这很酷,但我不知道数据库支持的信号量是否有可能超时.超时是一个巨大的好处!

编辑:

以下是一些可行的SQL命令,但除了通过cron job hack之外没有超时:

---------------------------------------------------------------------
--Setup
---------------------------------------------------------------------
CREATE TABLE "JOB_LOCKER" ( "JOB_NAME" VARCHAR2(128 BYTE), "LOCKED" VARCHAR2(1 BYTE), "UPDATE_TIME" TIMESTAMP (6) );
CREATE UNIQUE INDEX "JOB_LOCKER_PK" ON "JOB_LOCKER" ("JOB_NAME") ;
ALTER TABLE "JOB_LOCKER" ADD CONSTRAINT "JOB_LOCKER_PK" PRIMARY KEY ("JOB_NAME");
ALTER TABLE "JOB_LOCKER" MODIFY ("JOB_NAME" NOT NULL ENABLE);
ALTER TABLE "JOB_LOCKER" MODIFY ("LOCKED" NOT NULL ENABLE);

insert into job_locker (job_name, locked) values ('myjob','N');
commit;

---------------------------------------------------------------------
--Execute at the beginning of the job
--AUTOCOMMIT MUST BE OFF!
---------------------------------------------------------------------
select …
Run Code Online (Sandbox Code Playgroud)

sql oracle semaphore locking transactions

7
推荐指数
1
解决办法
8016
查看次数

从Android应用访问公共Google云端硬盘文件夹,无需进行身份验证

我希望我的应用能够从预定义的共享公共Google云端硬盘文件夹中读取,而无需用户登录或选择Google帐户.

背景/环境

使用我的桌面浏览器,我在Google云端硬盘上创建了一个公共文件夹,该文件夹设置为公开.有链接的任何人都可以访问(读取)驱动器,因此无需授权:

共享Google云端硬盘文件夹的桌面截屏

在我的Android Studio项目中,我已经进入File > Project Structure > Dependencies并添加了com.google.android.gms:play-services-drive:10.2.0

Google Play服务的Android Studio图片作为模块依赖项

我现在有能力创建一个new GoogleApiClient.Builder().

我查看了各种示例,但在大多数情况下,驱动程序是由Android应用程序创建的.这不是我想要管理的情况.

此问题是关于访问已使用"文件夹ID"公开的驱动器,或者0B6X74x23H....在最初共享和公开文件夹时分配的任何内容.

我已经检查了Google提供演示代码,但据推测,这不是公共文件夹,因为它说:

...需要注册OAuth 2.0客户端

至少,我可以使用http-client来驱动这个过程,在https://drive.google.com/drive/folders/0B6X74x23Hx7DNE13M0ZIbVI....?usp=sharing没有身份验证的情况下进入共享链接,而不需要跳过箍.但是,当然使用已定义的API并简单地指定公共共享文件夹以列出内容并且如果需要,从公共文件夹下载文件将更加清晰.

当我尝试这段代码时:

        Scope publicFolder = new Scope(EXISTING_FOLDER_ID);
        mGoogleApiClient = new GoogleApiClient.Builder(mActivity)
                .addApi(Drive.API)
                .addScope(publicFolder)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
        mGoogleApiClient.connect();
Run Code Online (Sandbox Code Playgroud)

这种方法触发:

GoogleApiClient.OnConnectionFailedListener.onConnectionFailed()

结果包含statusCode=SIGN_IN_REQUIRED.但当然,对于公开的文件夹,不需要登录.

android public-folders google-api-client google-drive-api google-drive-android-api

6
推荐指数
1
解决办法
641
查看次数

将新的 iOS 应用程序版本更新到 App Store

如何将我在应用商店中的应用更新到较新版本?

早些时候,我成功地将我的应用程序提供给了应用程序商店。这就是起点。但是已经有一段时间了,我更新了我的应用程序,并想提供一个新版本。由于准备应用程序的失误可能需要一些时间,因此我想了解在 Apple 应用程序商店中提供更新版本所需的具体步骤。

xcode ios

5
推荐指数
2
解决办法
1万
查看次数

如何向 Android Studio 构建添加额外的 Maven 存储库

我已将以下内容添加到dependencies我的应用程序的一部分build.gradle

implementation 'org.seleniumhq.selenium:selenium-htmlunit-driver:3.56.0'

但我收到错误:

Could not find org.seleniumhq.selenium:selenium-htmlunit-driver:3.56.0.
Searched in the following locations:
   - https://dl.google.com/dl/android/maven2/org/seleniumhq/selenium/selenium-htmlunit-driver/3.56.0/selenium-htmlunit-driver-3.56.0.pom

   - https://repo.maven.apache.org/maven2/org/seleniumhq/selenium/selenium-htmlunit-driver/3.56.0/selenium-htmlunit-driver-3.56.0.pom

   - https://jcenter.bintray.com/org/seleniumhq/selenium/selenium-htmlunit-driver/3.56.0/selenium-htmlunit-driver-3.56.0.pom
 Required by:
     project :app
Run Code Online (Sandbox Code Playgroud)

因此,在项目build.gradle文件中,我添加了以下repositories部分:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()

        // ADDED THIS 2021 12 17
        maven {
            url("https://mvnrepository.com")
        }

        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.3"
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这会起作用,因为当我使用浏览器导航到该域时,有一个包含selenium-htmlunit_driver_3.56.0mvnrepository.com的页面。

我期望的是会找到指定的依赖项。或者,我会得到一份报告,其中包含“在以下位置搜索:”下的另一行,但将该 Maven 行添加到项目 build.grade 中没有效果。

我需要做什么才能搜索到额外的 Maven 存储库?从条目(repo.maven.apache.org/maven2...)拉入的maven存储库 …

dependencies build maven android-studio

5
推荐指数
1
解决办法
6234
查看次数

如何快速显示大部分html页面,然后加载缓慢的东西?

我有一个像这样的JSP页面:

<html><body>
<div id="mainContainer">
    <div id="firstDisplayStuff">...</div>
    <% out.flush(); %>
    <div id="slowStuff">
        <mytaglib:abc name='SlowBoat'>...</mytaglib>
    </div>
</div>
<div id="floatRightContainer>
    <div id="endingDisplayStuff">...</div>
<div>
</body></html>
Run Code Online (Sandbox Code Playgroud)

当它到达taglib时,它需要永远,并且无法避免这种延迟.

所以使用out.flush();我至少可以显示firstDisplayStuff,但是当taglib的东西运行时,用户只是坐在那里看半页.只有在完成之后,用户才会看到endingDisplayStuff.

我希望firstDisplayStuffendingDisplayStuff立即显示.

但我认为使用jQuery会有一种方法可以<div id="slowStuff">留空,然后再加载它.

<div id="slowStuff">在两个显示东西div显示后,jQuery代码会加载什么?我会把代码放在哪里?怎么会被调用?

编辑:添加<div id=mainContainer><div id=floatRightContainer>进入现有示例.

javascript ajax jquery jsp taglib

4
推荐指数
2
解决办法
217
查看次数