Android JNI学习之旅
文章平均质量分 70
不会写代码的丝丽
这个作者很懒,什么都没留下…
展开
-
Android NDK独立编译链
参考独立工具链(已弃用)Cross-compilation using Clang这段时间复习NDK的时候发现已经在(r21)里面已经完全找不到gcc/g++的影子了,后来发现改用LLVM套件了。于是乎想爽一把单独使用clang进行单独编译成arm的可执行文件,但是--sysroot 等设置了都死活编译不起来报错如下:clang: error: unable to execute command: program not executableclang: error: linker comman原创 2021-05-29 14:21:39 · 725 阅读 · 0 评论 -
JNI字符编码
前言这段时间看MMKV的时候突然忘了JNI字符编码的= =,于是乎测试了下并记录笔记.首先要明白的概念:在JVM内存中字符串是UTF-16编码.具体可以看参考3其中部分描述如下:In the Java SE API documentation, Unicode code point is used for character values in the range between U+0000 and U+10FFFF, and Unicode code unit is used for 16原创 2021-05-26 13:45:31 · 495 阅读 · 0 评论 -
stl标准函数1
#ifndef _ITERATOR_DEBUG_LEVEL#define _ITERATOR_DEBUG_LEVEL 0#else#undef _ITERATOR_DEBUG_LEVEL#define _ITERATOR_DEBUG_LEVEL 0#endif#include <iostream>#include <string>#include <algorithm> //算法usi原创 2017-05-14 13:45:13 · 394 阅读 · 0 评论 -
STL标准函数2
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <queue>using namespace std;//队列(没有迭代器)/*void main(){ queue<int> q; q.push(78); q.push(18); q.push(20); q.push(33);原创 2017-05-14 13:46:27 · 456 阅读 · 0 评论 -
Fmod变声学习2 自行写播放代码
准备工作修改MainActivity文件编写cmakelisttxt文件编写jni 实现文件准备工作请先阅读 Android Specific Starter Guide(安卓指定入门指南) 本文参考官方demo 然后播放一个普通的音乐文件doc文档有这么一句话: This means telling the IDE or build system where to find the原创 2017-05-04 10:14:53 · 2872 阅读 · 2 评论 -
Fmod学习3将音频文件变音播放
本文在FMOD学习2基础简介:本次变音大量借鉴 xxx学院的教学 。我这里做下笔记 参考官方demo:effects.cpp dsp_effect_per_speaker.cpp这里的代码是基于FMOD1的代码MainActivitypackage com.example.fmy.selfplaymusic;import android.content.Context;import androi原创 2017-05-05 21:55:37 · 5921 阅读 · 1 评论 -
c++ 基本语法学习
命名空间命名空间定义方法命名空间属性调用案例上述案例说明命名空间引用冲突命名空间嵌套输出函数案例结构体如果修饰符含有privat 不能创建变量引用二级指针和引用三目运算符指针常量和常量指针实参形参bool类型字符串string函数重载类 class简单创建一个类 实例化析构函数拷贝构造方法拷贝函数问题类静态属性方法初始化在头文件中声明类和实现直接在原创 2017-04-27 13:34:28 · 985 阅读 · 0 评论 -
用surfaceview播放FFmpeg解码视屏
关于FFmpeg解码请看第一篇教程:FFmpeg解码下载转码库libyuv一般我们用surfaceview播放视频都是才用RGBA格式等播放的,但我们解码之后的视频可能是h.264等等 所以我们这里不管解码的是什么格式直接转化为RGBA即可. 所以我们这里用ffmeg解码再用libyuv转码(谷歌推出的一个转码库)转码库:libyuv是谷歌推出一个转码库 libyuv官网地址(请科学上网)我原创 2017-06-04 20:14:16 · 3759 阅读 · 2 评论 -
安卓用ffmeg解码
本文章是用ffmeg解码封装格式(如mp4)转换为yuv420p保存到本地,本文是结合雷霄骅博客ppt和某地方学习的一个笔记(说出来等下被认为做广告就尴尬了)封装格式视频编码数据将封装格式解压后可以得到压缩过的音视频等. 将压缩过的视频解压后可以得到 视频像素数据(RGB,YUV等).常见的视频压缩格式有H.264, MPEG4等… YUV420P格式介绍YUV是视频像素格式,在压缩视频格式解原创 2017-05-31 13:16:32 · 3002 阅读 · 0 评论 -
FFmpeg解码音频
基于第一篇文章: 第一篇解码视频 我们知道mp4是视频格式,其实内部封装了音频的压缩数据,和视频的压缩数据,这篇文章将从视频中读取音频压缩数据,并且解压缩音频以下图片转载自 雷霄骅博士ppt音频的压缩格式有aac,和MP3等等.他们都是通过采样格式(pcm)转化而来如图: 几个术语采样率:采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(原创 2017-06-10 16:59:15 · 3567 阅读 · 1 评论 -
android编译x264
本人在linux下编译。下载ndk官方下载地址这里推荐用 linux指令下载 wget 命令wget 目标URL地址 下载后解压配置NDK环境变量这一步其实可以省略 运行如下命令: 1. vim /etc/profile 2. 在最后添加如下代码 NDKROOT=/home/fmy/android-ndk-r14b(你NDK的目录) export PATH=$原创 2017-08-08 22:10:04 · 3674 阅读 · 0 评论 -
NDK报错将报错行转换
使用sdk的工具arm-linux-androideabi-addr2line -e J:/mars-jee/dn_ffmpeg_player/obj/local/armeabi/libmyffmpeg.so 0x580001d原创 2017-08-23 22:15:01 · 546 阅读 · 0 评论 -
交叉编译
在android开发的时候需要经常编译第三方c库文件,可你编译的时候在电脑 运行在adnroid上,所以需要交叉编译实现。–sysroot 的作用 如果在编译时指定了-sysroot就是为编译时指定了逻辑目录。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录。这里可以简单的理解我需要目标平台系统的某个文件这时候我可以同过这个地址去获取原创 2017-08-24 00:06:45 · 2573 阅读 · 0 评论 -
Android压缩图片和libjpeg库
前言一些额外知识补充知识的结论参考文献前言:在android开发时我们往往有如对图片如下的需求: 1. 希望压缩图片方便网络传输 2. 修改图片分辨率 防止在Android加载Bitmap的时候oom(内存溢出)一些额外知识:Android的Bitmap对象在加载时 内存大小为:宽的像素*高的像素*位图格式(如ARGB8888)注意: 这里的原创 2017-09-01 00:16:34 · 5181 阅读 · 3 评论 -
c++文件操作
#include<iostream>#include <fstream>using namespace std;/*文本文件void main() { char* fname = "d://dest.txt"; ofstream fout(fname); //如果节点流发生致命错误返回true if (fout.bad()) { ret原创 2017-05-12 23:41:20 · 495 阅读 · 0 评论 -
Jni遇到一些坑
在用c++开发的jni的时候 注意函数名加extern “C”extern “C” void a(int t){ } 会用c去编译 生成 函数名为 avoid a(int t){ } 会用c++去编译 生成 函数名为 a_int (为了函数重载)参考点击跳转原创 2017-05-04 17:20:17 · 607 阅读 · 1 评论 -
C语言文件操作
读取文本读取文本#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>void main(){ char * path = "D:\\a.txt"; FILE *fp = fopen(path,"r"); if (fp == NULL){ printf("文件打开失败");原创 2017-02-28 17:13:15 · 1995 阅读 · 0 评论 -
c语言 include 预编译 结构体快捷命名 typedefine
include 解释include 和include区别include 进行文本替换include 定义函数声明 并写一个实现类include 循环套用define 文本替换ifdef __cplusplus检测是c还是c宏函数typedefine结构体include 解释include”” 和include<>区别include”“可以导入系统已经定义的头文件和自定义的文件原创 2017-03-02 22:36:04 · 1511 阅读 · 0 评论 -
JNI 案例1-----java调用c方法
操作环境win10ide :eclipse和visual Studio 2013 我并不是一个很厉害的程序员,但我知道每天都要进步一点点,所以大家私信我的时候别说什么大神之类的话了,我很喜欢编程 我只是把他当成了我的爱好,很感谢CSDN这个平台分享交流的机会,但CSDN手机版app 不知道为什么点击博客不是加载不出来就是代码显示有问题,一个国内最大交流平台能一个像样的app都做不出来?前言JN原创 2017-03-04 21:43:26 · 796 阅读 · 0 评论 -
C语言基本变量语法输出和输入方法
其他基本数据类型java有这里就不介绍了 ide:visual studio2013 操作系统:win10 64 bit 从这篇开始 我会记录下我每天学习jni的过程。ide下载地址:visual studio2013百度云连接 我只是一个初学c(大学学过忘了差不多)Android开发者 想学习jni中。。。文章仓促而成加上自己不成熟错漏在所难免。还请您多多海涵和指明union原创 2017-02-26 22:25:21 · 5122 阅读 · 0 评论 -
C语言 动态内存分配
前言 :我们知道内存分为 栈 堆 其实在计算机中是不存在差别的,只是程序员手动分类 方便处理案例1 我们直接创建一个在栈区的40m大小数组案例2 在堆区创建一个40m的数组案例3 多次动态分配堆内存 不释放案例4 手动释放内存案例5 申请内存另一个api案例6 DEMOreallocC语言内存分配: 1. 栈区(stack) windows下,栈内存分配2M(确定的常数)原创 2017-02-27 17:13:52 · 734 阅读 · 0 评论 -
NDK拆分合并文件
分割文件合并 可以用于上传大文件的时候进行分割上传等等java 源码:package com.fmy.androidsplit;import java.io.File;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.provider.Settin原创 2017-03-22 21:15:58 · 592 阅读 · 0 评论 -
JNI乱码问题
我们看看我们从java通过native方法传入一个字符串给c函数并在c函数输出jni返回一个字符串乱码我们看看我们从java通过native方法传入一个字符串给c函数,并在c函数输出JAVA源码:package com.fmy;import java.io.UnsupportedEncodingException;public class FMY { static{ Sys原创 2017-03-15 15:35:46 · 2996 阅读 · 0 评论 -
JNI基础语法1
JNI学习笔记1我们看看用javah生成的头文件的两种区别jni基本数据类型转换访问java对象非静态属性写得太晚了后台再继续吧JNI学习笔记1我们看看用javah生成的头文件的两种区别package com.fmy;public class FMY { //静态 public static native String getStringStatic(); //非静态原创 2017-03-14 23:36:44 · 1064 阅读 · 0 评论 -
c++基本语法学习2 继承 多态 模板
继承前言父类变量访问权限指定调用父亲的构造方法多继承虚继承继承方式继承方式函数模板继承前言:和java一样c++同样有继承不过是多继承继承样式如下class B : [继承方式] [继承类名][继承方式]:publicprotectedprivate 继承方式不写默认是private,继承方式最要影响的是孙子类,不写继承方式默认是private 后面详细解释父类变量访原创 2017-04-28 14:38:18 · 454 阅读 · 0 评论 -
最全的增量更新入门 包含linux端和Android
简介增量更新大量用于 Android各大应用市场.本文想做网络上从服务器到app客户端完整讲解.app用eclipse和android studio 最新版cmark开发ndk 如下图: 以前一直好奇怎么做的直到知道了bsdiff库. 地址附上: bsdiff源码地址和简介大家可以从简介看到bsdiff是基于bzip2源码(bsdiff和bspatch一个用于生成差异文件补丁,另一个用于差原创 2017-04-19 19:16:25 · 3760 阅读 · 2 评论 -
Android.mk代码记录
Android.mkLOCAL_PATH := $(call my-dir)## FMOD Shared Library# include $(CLEAR_VARS)LOCAL_MODULE := fmodLOCAL_SRC_FILES := ../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.soLOCAL_原创 2017-05-02 11:57:37 · 515 阅读 · 0 评论 -
C++异常
最基本的异常捕获捕获其他异常捕获异常顺序捕获对象未完待续 最基本的异常捕获#include<iostream>using namespace std;void main() { try { throw 3; }catch (int aa) { cout << "捕获到int 异常:"<<aa << endl; } ge原创 2017-05-11 13:53:02 · 348 阅读 · 0 评论 -
c++类型转化
在c中我们可以如下转化 A a = (A)b; 但是可读性差 来看看C++的四种数据类型: 以下内容为复制。点击跳转原作者 1. static_cast 最常用的类型转换符,在正常状况下的类型转换,如把int转换为float,如:int i;float f; f=(float)i;或者f=static_cast(i); 2. const_cast 用于取出const属性,把const原创 2017-05-12 10:03:48 · 352 阅读 · 0 评论 -
C语言常用字符串函数
C语言字符串函数速查#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//字符串相关函数//strcat字符串拼接函数//在线API文档://http://www.kuqin.com/clib/string/strcpy.htmlvoid main(void){原创 2017-02-28 15:55:56 · 440 阅读 · 0 评论