自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 JNI中jstring 和char* 之间的转换方法

在java中由于是unicode编码,无论是英文字母还是汉字每个字符都是占用2个字节。但是在jni中的字符时utf-8编码,每个字符不是等长的。所以在java和jni调用的时候要注意这个问题。 下面是我在网上找到的一些把jstring和char*转换的一些sample代码: jstring to char* char* jstringTostring(JNI

2016-08-29 18:04:21 6056 2

翻译 JNI基础知识

JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的Android中有着重要的意义,这儿的内容比较多,也是最基本的,如果想彻底了解JNI的机制,请查看:http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/de

2016-08-28 21:20:25 2854

转载 Android NDK环境搭建

在Android上要想开发出高效率的软件,还是需要用到C/C++语言,要想在Java上开发C/C++语言就需要在IDE上安装NDK;在Android的官网上SDK开发环境已经包含了ADT插件,最新的Android开发IDE可以到官网下载:http://developer.android.com/sdk/index.html由于最近Android官网和google在国内经常进不去,我就把下载的放

2016-08-28 21:11:27 579

原创 视频播放器底层框架解析

存在问题:说到视频编解码,就得谈谈ffmpeg有人说vlc很强大,但是你它的基础编解码也用ffmpeg。小伙伴们问什么是ffmpeg呀?解决方案:FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂。本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一些编解码部分,只有

2016-08-28 21:10:36 1717

转载 浅谈C中的malloc和free释放

在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是 malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助!

2016-08-27 17:38:21 2769

转载 Android开发:安装NDK,移植OpenCV2.3.1,JNI调用OpenCV全过程

开发环境:Fedora14 , 操作中以root权限操作,这年头Android移植上OpenCV就强大了,可以做很多复杂的视频分析、图像处理工作了!如火灾、人脸、视频行为的分析等。欢迎Android OpenCV爱好者,加入OpenCV4Android联盟群:66320324。备注:yanzi一:NDK的安装     首先是安装NDK,安装之前需要安装CDT,具体的

2016-08-26 15:48:03 506

转载 android JNI使用curl库进行文件下载和http请求

1.CURL几个基本函数的说明:1) curl_global_init();这个函数是进行curl库的初始化,这个函数与curl_global_cleanup配套使用,当调用了一次后,在没有调用curl_global_cleanup之前不要再次调用。2) curl_global_cleanup();对curl_global_init进行的一些操作进行清理。

2016-08-26 15:27:21 1813

转载 【JNI】 Android调用JNI的进阶实例(摄像头预览数据转码RGB播放)

前一篇的博文介绍了:Android调用JNI的简单实例(附详细步骤),现在带来一个进阶版的,虽然时间隔得有点久远。这里要说下,尽量不要用Java写编解码的东西,就算你是大神,你写的出来,但那也是不实用的,就像切西瓜一样,拿一把削水果刀去切西瓜,肯定比不上用西瓜刀方便吧,还是老老实实写个JNI调用得了,也不复杂C/C++方便的很,当然,这里不是说Java不行,语言只是工具,做什么事情用什么语

2016-08-26 14:58:34 4212

转载 Java学习之通过JNI调用C/C++编写的dll链接库(图文教程)

看了网上几个主要的教程,都会导致出现各种错误,对于初学者来说会造成一些困扰。在这里详细记录一下JNI调用过程。本案例的基本配置:Eclipse+VS2015,Win10  64位(1)编写Java Project打开Eclipse,新建一个Java Project,如:LearnJNI。新建包名,如:com.cogito。新建一个类TestNative。编写代码,如下:

2016-08-26 14:34:33 608

转载 android之JNI参数传递 (Java方法调用)

从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。让我们看一些使用JNI的简单例子吧。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做

2016-08-26 14:23:06 2620

转载 C语言union关键字

union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union StateMachine{   char character;   int number; 

2016-08-26 14:16:26 491

转载 JNI官方规范中文版——如何使用JNI中的global reference和local reference

JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。这样的话,你有必要了解一下JNI中的几种不同的引用:1、 JNI支持三种引用:局部引

2016-08-26 13:50:06 558

转载 JNI官方规范中文版——如何在JNI中抛出Java异常

很多情况下,本地代码做JNI调用后都要检查是否有错误发生,本章讲的就是怎么样检查错误和处理错误。我重点放在JNI函数调用引发的错误上面。如果一个本地方法中调用了一个JNI函数,它必须遵守下面几个步骤来检查和处理这个JNI函数调用时可能引发的错误。至于其它可能的错误,比如本地代码中调用了一个可能引发错误的系统方法,那只需要按照该系统方法的标准文档中规定的来处理就可以了。6.1 概述

2016-08-25 16:24:53 1010

转载 Android NDK之JNI异常处理

处理本机代码中的异常     为了处理以Java代码实现的方法执行中抛出的异常,或者是以本机代码编写的方法抛出的Java异常,JNI提供了Java异常机制的钩子程序。该机制与C/C++中常规函数实现的标准错误处理无关。JNI提供一个函数集来在本机代码中检查、分析和处理Java异常。    (1).如果一个异常已经抛出,下面的函数返回JNI_TRUE,否则返回JNI_FALSE:

2016-08-25 16:24:09 1014

转载 FFMPEG结构体分析:AVCodec

注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体

2016-08-25 16:03:06 299

转载 android 集成第三方静态库的编译方法

最近为java层将一个静态库通过jni层封装成了一个动态库工他们调用,遇到了一些编译上的疑惑,所以索性将其彻底搞清楚算了,免得以后误事。             下面的图片列出了所有相关文件,可以看到引用静态库的文件是com_xxx.cpp文件,而.a文件是放在lib目录下的libHWRecog.a,而库提供出来的头文件在include下的两个.h文件。       

2016-08-25 15:48:30 1535

转载 JNI注册调用完整过程-安卓4.4

在Android系统中,JNI方法是以C/C++语言来实现的,然后编译在一个so文件里面,以我之前的例子为例Android Studio使用JNI,调用之前要加载到当前应用程序的进程的地址空间中:static{System.loadLibrary("JniTest");}private native int Add(double num1,double num2);priv

2016-08-25 15:03:49 1339

转载 【重点】深入了解android平台的jni---注册native函数

注册native函数有两种方法:静态注册和动态注册。1、静态注册方法根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联联系,以后在调用时会直接使用这个函数,这部分的操作由虚拟机完成。静态方法就是根据函数名来遍历java和jni函数之间的关联,而且要求jni层函数的名字必须遵循特定的格式,其缺

2016-08-25 14:48:31 927

转载 <sys/stat.h>的含义!

stat.h头文件,轻松获取文件属性以前还为了获取文件的长度,费劲从头读取一遍,一个一个字节的算。做webserver时候,发现原来stat函数可以返回一个结构,里面包括文件的全部属性。真是曲折啊。】#i ncludestat.h>int stat(const char *restrict pathname,struct stat *restrict buf);

2016-08-25 14:38:28 1118

转载 fcntl.h头文件和unistd.h头文件

fcntl.h定义了很多宏和open,fcntl函数原型unistd.h定义了更多的函数原型 close(关闭文件)表头文件#include定义函数int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为先前由open()或creat()所返回的文件

2016-08-25 14:33:35 474

转载 编写第一个NDK程序

在上一篇文章中搭建好了Eclipse下NDK环境,现在开始NDK的开发:1、打开Eclipse,新建一个Android Project,名字就叫HelloNdk,package:org.android.code2、然后在org.android.code 包里新建一个helloNdk的Class。.      在该类中声明本地调用的方法,如下图:       

2016-08-25 14:16:12 557

转载 Android NDK 开发教程:调试

开发应用一个关键的步骤是调试,对于NDK的C代码调试有很多种方法,对于和Android平台相关性不大的部分代码,可以单独创建一个C/C++项目,编写测试代码,测试完成后,再编译成NDK动态库或静态库模块。使用NDK-GDB,NDK-GDB的命令行调试方法和GDB类似,网络有很多关于GDB的教程使用Eclipse+CDT+GDB调试android NDK程序 实时调试,不过这种方法设置起

2016-08-25 14:13:39 303

转载 Application.mk

配合android.mk 使用的make 文件还有一个application.mk ,大部分情况无需修改该文件,下面也来自网络翻译Application.mk文件简介:—————————–要将C\C++代码编译为SO文件,光有Android.mk文件还不行,还需要一个Application.mk文件。本文档是描述你的Android应用程序中需要的本地模块的Applica

2016-08-25 14:10:41 200

转载 Android.mk文件

NDK项目一个重要组成是它的make 文件 –android.mk. 下面部分来自网络翻译(省得我再翻译了:-).注:大部分情况只需参考HelloJni 和twoLibs 的android.mk 文件即可,如果你想搞清楚android.mk 中定义变量的具体含义,可以参考下面翻译。Android.mk文件语法详述介绍:————这篇文档是用来描述你的C或C++源文件中An

2016-08-25 14:07:43 306

转载 eclipse里配置Android ndk环境,用eclipse编译.so文件

做Android NDK开发时,c代码需要用ndk-build来进行编译,而java代码则需要用Android sdk编译。编译c代码有两种方法:一、写好c代码后,然后用cygwin搭建ndk-build环境,用ndk-build来编译出相关的.so文件(libs目录)之后,      再用eclipse里去编译java程序,从而使用.so文件。该方法在上一篇搭建NDK环境

2016-08-25 14:06:21 1732

原创 Material Design简单实践

好了,现在来讲讲上图是怎么实现的吧!讲之前先讲讲几个控件:CoordinatorLayout 该控件也是Design包下的一个控件,然而这个控件可以被称为Design包中最复杂、功能最强大的控件:CoordinatorLayout。为什么这样说呢?原因是:它是组织它众多子view之间互相协作的一个ViewGroup。CoordinatorLayout 的神奇之处就在

2016-08-23 11:58:01 208

原创 RecyclerView实现瀑布流

我们在使用RecyclerView时,更多的是通过网络请求得到数据,比如在加载图片或者列表项时,我们往往需要判断当前屏幕上显示的第一个item的postion是多少,最后一个item的postion是多少,当前屏幕共显示了几个item项,如果使用ListView或者GridView来判断当然好判断,只要实现AbsListView.OnScrollListener这个接口就可以得到,那么在Recyc

2016-08-23 11:45:28 444

转载 ToolBar与AppcompatAcitivity实现浸入式Statusbar效果

上面的介绍的重点是,toolbar是api21 新增的组件,其主要用来弥补actionbar带来的不足,其继承自viewgroup,自由的属性包括导航按钮(类似向上按钮),logo图片,标题和子标题,一个或者多个自定义view,菜单。其中有一句介绍尤为介绍 An application may choose to designate a Toolbar as the action bar

2016-08-23 10:48:26 1429

原创 NDK学习:C与C++在Ndk中的区别

使用C++做ndk 某些代码简单一些原因是 他给你封装了一个 env结构体#include#include"cn_itcast_cpp_DemoActivity.h"#include #include#include#define LOG_TAG "System.out"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG

2016-08-21 23:03:31 1643

转载 ItemTouchHelper,让你轻松打造RecyclerView中Item的滑动删除,拖拽交换

ItemTouchHelper是v7包中的用于为RecyclerView中Item操作提供帮助的工具类。[java]  view plain copy/**  * This is a utility class to add swipe to dismiss and drag & drop support to Recyc

2016-08-18 21:51:56 837

原创 v7包报错问题

Android 导入v7包常见错误,以及项目引用v7包错误解决,androidv7        android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理。        android的扩展包主要是用来兼容低版本的,比如android3.0以后出现了actionbar,如果要使用actionbar,那么手机系统必须

2016-08-18 14:47:48 451

转载 ListView优化机制及滑动时数据时出现的数据错乱重复问题

该篇内容主要是记录我在实际开发中遇到的ListView滑动时数据错乱的几种情况,以及解决方法。在进行ListView滑动时数据错乱问题讨论之前会对ListView所谓的进行说明。文章末尾分享了几篇文章,增强对ListView使用以及Adapter优化的理解,其中有对adapter优化方法的耗时测试的介绍。Getting Start遇到过的ListView在滑动时数据错乱的几种情况:

2016-08-15 09:44:14 560

转载 Android 多渠道打包原理和使用

每次中午吃饭总会和技术同学聊天。当做 iOS 开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS 开发难还是安卓开发难。 这个时候做安卓开发的同学最激动说安卓开发要自己画界面、机型复杂、操作系统多 rom 又被各家改的四不像....开发一个安卓 APP 的时间将近是开发 iOS 所需时间的 2 倍。iOS 开发的同学可能就会反驳说 iOS 开发入门难度比安卓高,开发中第三方库不

2016-08-14 21:33:07 5183 1

翻译 Android中的AOP编程

面向切面编程(AOP,Aspect-oriented programming)需要把程序逻辑分解成『关注点』(concerns,功能的内聚区域)。这意味着,在 AOP 中,我们不需要显式的修改就可以向代码中添加可执行的代码块。这种编程范式假定『横切关注点』(cross-cutting concerns,多处代码中需要的逻辑,但没有一个单独的类来实现)应该只被实现一次,且能够多次注入到需要该逻辑的地

2016-08-11 20:54:33 1897

转载 深入理解Android之AOP

深入理解Android之AOP格式更加精美的PDF版请到:http://vdisk.weibo.com/s/z68f8l0xTgCLK 下载一、闲谈AOP大家都知道OOP,即ObjectOriented Programming,面向对象编程。而本文要介绍的是AOP。AOP是Aspect Oriented Programming的缩写,中译文为面向切向编程。OOP和AOP是什么关系呢

2016-08-11 20:53:22 660 1

转载 Android中Socket通信之TCP与UDP传输原理

一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信中基于TCP/IP协议的通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要

2016-08-04 15:17:20 847

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除