NDK学习 mp3解码器等相关
来源:互联网 发布:中华网络一条龙公司 编辑:程序博客网 时间:2024/04/29 21:01
C写文件
#include<stdio.h> main(){ // java // File file = new File("1.txt") // 打开一个文件的c语言的函数 // sharedpreference db content.openoutput() // 获取到文件的指针 FILE* fp = fopen("1.txt","wt"); char* str ="haha wirte file"; // fwrite方法接受4个参数 // 第一个参数 写什么内容 // 第二个参数 是一次 数据写多长 // 第三个参数 是写多少次 // 第四个参数 写到哪个文件里面 int len = fwrite(str,sizeof(char),15,fp); printf("len =%d\n",len); //释放文件句柄 fclose(fp); system("pause"); }
c读文件
#include<stdio.h> main(){ FILE* fp = fopen("1.txt","rt"); char arr[20]={}; //第一个参数 是读出来内容放在哪里 // 第二个 参数 一次读的数据的长度 // 第三个参数 读多少次 // 第四个参数 从哪个文件里面读 int read = fread(arr,sizeof(char),15,fp); printf("arr = %s\n",arr); printf("读了%d个char类型\n",read); fclose(fp);//必须加入 否则会造成一直在占用这个文件 system("pause"); }
编写编码器应用的流程
1.明确需求
2.研究技术实现 如果没有做过 需要进行一定时间的调研,如果还不能ok 只能想办法绕过这个知识点实现需求
3.实施:
-1 研究c源码解码器的工作过程,找到核心代码 找到入口等
-2将核心代码放入jni然后编译 注意头文件的引入
-3测试
注意android需要在
LOCAL_SRC_FILES 描述中把所有的c文件都知名 可以做个 程序获取
这次老师代码有个不好的地方是没有吧解码器的代码进行封装 如果封装成一个方法 然后输入文件输出文件就可以了
另外
含有进度的进度条有两种 一种是真正计算出来的进度去 一种是估算出来的 会在99%哪里卡住.
进度条的实现
pd = new ProgressDialog(this); pd.setMessage("转换中...."); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMax(size); // 设置进度条的最大值
然后在c代码中调用用
public void setConvertProgress(int progress){
pd.setProgress(progress);
}
来实现pd的刷新
c代码
void publishJavaProgress(JNIEnv * env, jobject obj, jint progress) {// 调用java代码 更新程序的进度条// 1.找到java的LameActivity的class// jclass (*FindClass)(JNIEnv*, const char*);jclass clazz = (*env)->FindClass(env, "cn/itcast/lame/LameActivity");if (clazz == 0) {LOGI("can't find clazz");}LOGI(" find clazz");//2 找到class 里面的方法定义// jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);jmethodID methodid = (*env)->GetMethodID(env, clazz, "setConvertProgress","(I)V");if (methodid == 0) {LOGI("can't find methodid");}LOGI(" find methodid");//3 .调用方法// void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);(*env)->CallVoidMethod(env, obj, methodid, progress);}
然后是使用exec方法执行bin文件这个自己在截屏那里已经用过 现在知道了是使用那个Sourcery G++ Lite Edition for ARM工具来交叉编译
但是这里老师执行bin文件后可以传出一个值
try { //Process process = Runtime.getRuntime().exec("/data/data/hello"); Process process = Runtime.getRuntime().exec("date"); InputStream is = process.getInputStream(); DataInputStream dis = new DataInputStream(is); String result ; StringBuilder sb = new StringBuilder(); while((result = dis.readLine())!=null){ sb.append(result); sb.append("\n"); } System.out.println(sb.toString()); } catch (Exception e) {e.printStackTrace();}
- NDK学习 mp3解码器等相关
- OpenSUSE11.3解码器安装(MP3等)
- OpenSUSE11.4解码器安装(MP3等)
- 安装mp4,mp3等媒体解码器
- symbian-创建MP3解码器
- 创建MP3解码器
- JAVA编写MP3解码器
- fedora20 MP3解码器
- 用JAVA编写MP3解码器
- linux配置mp3. rmvb解码器
- 用JAVA编写MP3解码器
- Fedora15安装RMVB,MP3解码器
- linux 配置 MP3 RMVB 解码器
- Fedora MP3 解码器 yum 安装
- centos 7 安装mp3解码器
- Android上实现H.264解码器(一)——开发环境搭建篇NDK等
- MP3相关
- 用JAVA编写MP3解码器-Index
- jquery 小技巧
- 数据库设计经验谈 (二)
- 11.7十八大新闻发布会直击2013年考研政治5个必背考点
- 基础语言-题目57(6174问题)
- keil编译http_demo的web.inp不能编译问题之解决
- NDK学习 mp3解码器等相关
- 10个速背哲学原理绝杀2013考研政治马哲分析题
- C++继承:公有,私有,保护
- 判断二叉树是不是平衡[数据结构]
- 具有竞争条件的程序 | Unix进程控制
- ldd3 scull错误移除
- 产品线工程:软件产品线-规模化产品开发介绍
- dev c++使用glut
- JavaSE 第二十一讲:多态详解 续2