我一直在阅读关于JNI的东西,似乎无法弄清楚如果线程启动会发生什么 - >调用AttachCurrentThread() - >进行一些JNI调用 - >线程退出.
理想情况下,我们应该在线程退出之前调用DetachCurrentThread(),但是,如果应用程序没有这样做会有什么影响?它会导致内存泄漏或任何其他问题吗?
我一直试图弄清楚是否有办法使用相机拍摄视频/图片而不定义surfaceview或textureview.我找到了这个链接:使用没有表面视图的Android相机
我在我的nexus平板电脑上使用了这个技巧和textureview,但没有运气!此外,http://handycodeworks.com/?p = 19表示此方法不适用于所有设备.
有没有人知道是否有办法做到这一点?或者它只是android框架根本不支持的东西,GUI必须在布局中有一些表面/纹理元素?然后唯一的选择就是操纵布局,使其在屏幕上根据应用程序要求不可见.
编辑1:如上面链接http://handycodeworks.com/?p=19中所述,我尝试了以下代码:
public class CameraCapture {
// I pass the getApplicationContext() from the main activity.
public void startCameraCapture(Context contx) {
SurfaceView sv = new SurfaceView(contx);
mCamera = Camera.open();
mCamera.setPreviewDisplay(sv.getHolder());
mCamera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Log.v("TAG", "on preview frame called");
}
Thread.sleep(1000);
mCamera.startPreview();
}
Run Code Online (Sandbox Code Playgroud)
但是,onPreviewFrame()从未被调用过.我错过了什么吗?
编辑2:
是否可以在本机代码中执行?使用OpenCV捕获视频/使用没有GUI元素的相机(surfaceview/textureview)?我查看了这个链接:http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization.但是,它们还显示示例代码,其中包含在主布局xml文件中定义的某些摄像机视图元素.
我已经实现了一个启动摄像头的android应用程序,并使用JNI接口将所有预览缓冲区发送到本机组件.由于预览数据是NV21图像格式,我需要从中创建一个cv :: Mat实例.我搜索了它,发现了以下解决方案:
cv::Mat _yuv(height, width, CV_8UC1, (uchar *) imagebuffer);
where imagebuffer is jbyte*
Run Code Online (Sandbox Code Playgroud)
但是,请勿在输出图像中获得预期的图像.这些都充满了一些随机的线等.有谁知道我究竟能做到这一点?
我对postgres中共享缓冲区所起的作用感到好奇.共享缓冲区维护所有最近访问的磁盘页面和脏页面.如果需要引入新页面并且共享缓冲区中没有剩余空间,则会将受害者脏页写回磁盘.
但是,我对此声明感到困惑 - PostgreSQL依赖于操作系统进行缓存.(http://www.varlena.com/GeneralBits/Tidbits/perf.html#shbuf)"
postgres如何依赖于操作系统进行缓存?它如何改变共享缓冲区的行为?
我一直在寻找一个明确的答案,但无法在任何地方找到它.当Android应用程序尝试与服务建立连接并实现ServiceConnection方法(onServiceConnected()和onServiceDisconnected())时,这些回调函数是在单独的线程中运行还是在主UI线程中运行?任何的想法?
我试图弄清楚编写一个Android远程服务作为我的客户端应用程序的一部分(使用android:process =":remote")与使其成为一个单独的服务应用程序的利弊.
在这两种情况下,服务都将在其自己的独立进程中运行并拥有自己的堆等.但是,当我们将它作为一个单独的应用程序时,必须有一些差异,因为它将拥有自己的应用程序沙箱.我根据场景找到了很多使用它们和首选方法的例子,但我试图了解它的内部技术细节.
有关此的任何良好信息来源?
编辑:如果服务和客户端进程在同一个应用程序中运行,对应用程序对象/上下文的影响是什么.它会被其中一个进程覆盖吗?或者每个进程都有两个应用程序对象,这些对象听起来不正确是一个应用程序的一部分.
我一直在使用ImageMagick命令行工具对图像进行jpeg压缩。但是,我试图了解采样因子的作用。它说采样因子用于指定块大小,即8x8或16x16。但是,如果省略此参数,则找不到使用的默认值。
另外,我尝试使用以下命令来获取图像的属性:
确定-verbose image.jpg
它显示采样系数值为1x1、1x1、1x1。这是什么意思?应该是8x8或16x16或32x32。
有人可以给我一个想法,在哪里找到这些细节吗?
imagemagick imagemagick.net node-imagemagick imagemagick-convert
在OpenCV中,我能够使用C++中的VideoCapture捕获帧,但是,当我尝试从帧中获取数据并计算长度时,它只返回0.
以下是我的示例代码:
VideoCapture cap(0);
for(;;) {
Mat frame;
cap >> frame;
int length = strlen((char*) frame.data); // returns 0
}
Run Code Online (Sandbox Code Playgroud)
正如我上面提到的,如果我将帧保存在PNG文件中,我实际上可以看到图像,所以我无法理解为什么数据长度为零.
任何线索?
我正在尝试在 Visual Studio 2010 中编写一个示例 ImageMagick 程序。我的系统上已经安装了 ImageMagick 的二进制分发版,因为我可以使用 ImageMagick 的命令行界面。
但是,当我尝试在我的 C++ 程序中包含“Magick++.h”时,它说它无法打开源文件。
我找到了有关从源代码编译和构建 ImageMagick 的说明,但是是否可以更改我的 Visual Studio 项目设置,以便它可以从已安装的 ImageMagick 版本中选择必要的引用/库?
imagemagick imagemagick.net node-imagemagick imagemagick-convert
我正在尝试在编写基于NDK的库时找出对异常处理的支持.从这些链接:http://developer.android.com/tools/sdk/ndk/index.html和http://www.kandroid.org/ndk/docs/CPLUSPLUS-SUPPORT.html,我能理解的是为NDK修订版> r5添加了C++异常处理,仅适用于已启用的"gnustl"运行时.但是,NDK是否支持C++ STL?如果是这样,它是否也支持STL异常处理?对此有何评论?