在我的Android应用程序UI设计中,我需要一些可绘制的图标.
Android SDK中现有的drawables在哪里?
我正在尝试使用Android图片中的数据.我不喜欢JPEG格式,因为最终我会使用灰度数据.YUV格式对我很好,因为前半部分是灰度级的.
来自Android开发教程,
public final void takePicture(Camera.ShutterCallback shutter,Camera.PictureCallback raw,Camera.PictureCallback postview,Camera.PictureCallback jpeg)
在API级别5中添加
触发异步图像捕获.随着图像捕获的进行,相机服务将启动对应用程序的一系列回调.捕获图像后发生快门回调.这可以用于触发声音以让用户知道已捕获图像.原始图像数据可用时发生原始回调(注意:如果没有可用的原始图像回调缓冲区或原始图像回调缓冲区不足以容纳原始图像,则数据将为null).当缩放的,完全处理的postview图像可用时,会发生postview回调(注意:并非所有硬件都支持此功能).当压缩图像可用时,将发生jpeg回调.如果应用程序不需要特定的回调,则可以传递null而不是回调方法.
它谈到了"原始图像数据".但是,我找不到有关原始图像数据格式的信息?你对此有什么想法吗?
我想获取照片拍摄的照片的灰度数据,并且数据位于手机存储器中,因此不需要花费时间来写入/读取图像文件,或者在不同的图像格式之间进行转换.或者也许我必须牺牲一些才能得到它?
Nexus 7,Ubuntu 12.04,Eclipse Juno
Nexus 7已设置为开发者模式.在Eclipse中,我可以在Android的"文件资源管理器"中看到列表.
我可以看到存储/模拟/遗留
但我看不到存储/模拟/ 0 /文件夹
与Timer相关的网站上的文章谈到了如何使用Timer进行编程.
我问了一个不同的问题.Java如何执行Timer方法?
因为据说通过不使用while循环来检查当前时间是否是所需的时间点来避免耗时的工作,我认为Timer不是简单地通过使用while循环来连续检查并将当前时间与所需时间进行比较来实现的.时间点.
谢谢!
我看到两条线总是在一起:
myBitmap.recycle();
myBitmap = null;
Run Code Online (Sandbox Code Playgroud)
如果我只使用:
myBitmap = null;
Run Code Online (Sandbox Code Playgroud)
有什么区别?
谢谢.
我在Android应用程序中通过JNI使用OpenCV.libopencv_java.so太大了,大约7M.显然,我只需要几个库.我检查了OpenCV4Android中的libs,找到了一些静态库,比如libopencv_core.a这是我在Android.mk中的新代码,包含必要的OpenCV库.我包括libopencv_core.a,libopencv_highgui.a,libopencv_imgproc.a和一些第三方库,它们是:liblibjasper.a,liblibjpeg.a,liblibpng.a,liblibtiff.a
include $(CLEAR_VARS)
LOCAL_MODULE := libopencv_highgui_prebuilt
LOCAL_SRC_FILES := libopencv_highgui.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libopencv_imgproc_prebuilt
LOCAL_SRC_FILES := libopencv_imgproc.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libopencv_core_prebuilt
LOCAL_SRC_FILES := libopencv_core.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := liblibjpeg_prebuilt
LOCAL_SRC_FILES := liblibjpeg.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := liblibpng_prebuilt
LOCAL_SRC_FILES := liblibpng.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := liblibtiff_prebuilt
LOCAL_SRC_FILES := liblibtiff.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/OpenCV242AndroidSDKNativeJNI/include
include $(PREBUILT_STATIC_LIBRARY)
include …
Run Code Online (Sandbox Code Playgroud) bigflake.com中的CameraToMpegTest.java或Grafika中的"Show + capture camera"的示例使用camera.preview来获取帧数据.实验表明(Nexus 4,Android 4.4.2)的帧率为10 fps.这没有预期的那么高.
如果我们使用相同的设备(Nexus 4,Android 4.4.2)使用相机录制视频,则帧速率为30fps.
所以我假设使用camera.preview的较低帧速率在于方法(预览方法).我曾经读过一篇帖子,说相机预览方法的帧速率较低.
所以似乎解决方法是直接使用来自相机硬件的原始帧数据.怎么做?我有一个印象iOS有视频处理API来做到这一点,直接从相机获取帧原始数据.(但我不知道他们的帧速率是多少).
我试图围绕图片文件解码,但它无法捕获内存不足异常,并且应用程序崩溃.
我知道解码图片文件的一些技巧,比如子采样.但是我需要放大图片来查看细节,所以我不能对它进行过多的子采样.对于某些较新的设备,它可以成功分配更大的内存以避免内存不足异常.
对于一些较旧的设备,它不能.
如果我可以为不同的设备自定义我的应用程序,那将会很大.
所以我想:(1)我希望我可以解决内存不足异常,所以如果我抓住它,我可以减少图像大小.(2)或者,我希望我可以获得可用内存的大小进行分配.
我在网上搜索,找不到答案.
我正在使用相机API编写应用程序:显示预览,并拍照.第一个版本效果很好.在类预览中,SurfaceView实现了SurfaceHolder.Callback
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, acquire the camera and tell it where
// to draw.
camera = Camera.open();
try {
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
hasSurface = true;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// It will be called immediately after surfaceCreated
// I move it to Resume.
setCameraPreviewParameters();
camera.startPreview();
}
Run Code Online (Sandbox Code Playgroud)
在主要活动中:
public class CameraDemo extends Activity
Run Code Online (Sandbox Code Playgroud)
我还设置了一个成员:CameraUnit ui; 它是:
public class CameraUnit …
Run Code Online (Sandbox Code Playgroud) 我看到了不同的意见.现在,我只关心颜色数据.
在第28章图形管道性能中,它说:
避免无关的颜色缓冲区清除.如果应用程序保证每个像素都在帧缓冲区中被覆盖,则避免清除颜色,因为它需要花费宝贵的带宽.
在glClear()如何提高性能?,它引用Apple关于解决闪烁问题的技术问答(QA1650):
您必须为屏幕上的每个像素提供一种颜色.在绘图代码的开头,最好使用glClear()来初始化颜色缓冲区.在帧开始时全屏清除每个颜色,深度和模板缓冲区(如果您正在使用它们)通常也可以提高应用程序的性能.
该帖子中有一个答案:
通过发出glClear命令,您告诉硬件您不需要以前的缓冲区内容,因此它不需要将帧缓冲区中的颜色/深度/任何内容复制到较小的区块内存中.
对于这个答案,我的问题是:如果没有混合,为什么我们需要从帧缓冲区读取颜色数据.(现在,我只关心颜色数据)
但无论如何,一般来说,我需要调用glClear(GL_COLOR_BUFFER_BIT)