代码改变世界

[置顶][原]SQLite的学习系列之获取数据库版本

2016-05-01 13:37 by 雪夜&流星, 阅读(3272) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:最先了解到SQLite是基于其作为移动客户端数据存储平台,以下是其官网(https://www.sqlite.org/)关于SQLite的一段介绍: <!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> SQLite是遵守ACID的轻 阅读全文

[置顶]Android Studio NDK 学习之接受Java传入的字符串

2015-08-18 13:30 by 雪夜&流星, 阅读(2313) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:本博客是基于Android Studio 1.3 preview版本,且默认你已经安装了Android SDK, Android NDK。用Android Studio新建一个工程叫Prompt,其目录结构如下:├── Prompt.iml├── app│ ├── app.iml│ ├── buil... 阅读全文

[置顶][原]Ubuntu 14.04编译Android Kernel

2015-02-07 18:28 by 雪夜&流星, 阅读(1854) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html在Ubuntu 14.04上编译android kernel也没有遇到什么很难的问题。主要分以下几个步骤:首先查看emulator的cpu型... 阅读全文

[置顶][原]运行编译好的Android模拟器

2015-02-07 18:21 by 雪夜&流星, 阅读(1707) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:Android源码编译好了之后,我们就可以运行它了。1、配置环境变量:/data/data/Android$ export PATH=$PATH:$(pwd)/out/host/linux-x86/bin/data/data/Android$ export ANDROID_PRODUCT_OUT=$... 阅读全文

[置顶][原]编译Android源码过程中遇到的问题

2015-02-07 18:17 by 雪夜&流星, 阅读(2241) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:编译Android源码的过程参考Android官网介绍:1、下载Android源码的步骤:https://source.android.com/source/downloading.html2、编译Android源码的步骤:https://source.android.com/source/buil... 阅读全文

[置顶][原]Android打包之Gradle打包

2015-01-22 19:24 by 雪夜&流星, 阅读(4994) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:最近尝试了一下Android的Gradle打包,发现确实比Ant打包会方便很多,特此记录下来。注:android的gradle现在插件的版本已经是0.14.3了,对于一些老的方法和api,有一些已经被移除,无法使用(http://tools.android.com/tech-docs/new-bui... 阅读全文

[置顶][原]Android打包之跨平台打包

2015-01-22 15:49 by 雪夜&流星, 阅读(425) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:Android自动打包流程详细图:在前面一些博客我们知道了如何通过命令行打包,如何通过Eclipse打包,如何通过编写shell脚本来进行打包,但是这些都不能很好的跨平台进行打包。因Python本身具有很好的跨平台特性,故本博就是通过使用Python来进行编写跨平台打包脚本,脚本如下(build.p... 阅读全文

[置顶][原]ffmpeg编译android 硬解码支持库 libstagefright

2014-11-06 11:16 by 雪夜&流星, 阅读(8205) 阅读, 推荐(5) 推荐, 收藏, 编辑
摘要:最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来。编译环境:Ubuntu 14.04 + Android NDK + FFmpeg源码。第一步:将ffm... 阅读全文

[置顶][转]Handy adb commands for Android

2014-09-23 17:17 by 雪夜&流星, 阅读(307) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:转自:http://www.growingwiththeweb.com/2014/01/handy-adb-commands-for-android.htmlView connected device(s)Use this to view all connected devices and list... 阅读全文

[置顶][原]零基础学习视频解码之android篇系列文章

2014-09-22 18:58 by 雪夜&流星, 阅读(1551) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:截止今天,《零基础学习视频解码系列文章》、《零基础学习在Android进行SDL开发系列文章》以及《零基础学习视频解码之android篇》系列文章基本算是告一段落了。就像[原]零基础学习视频解码之安装ffmpeg文章写在前面的一样,ffmpeg是一个开源的编解码框架,拥有很强大的功能。但是对于如果使... 阅读全文

[置顶][原]如何在Android用FFmpeg+SDL2.0解码图像线程

2014-09-18 21:09 by 雪夜&流星, 阅读(2133) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像,关于如何在Android使用FFmpeg+SDL2.0解码声音参考[原]如何在Android用FFmpeg+SDL2.0解码声音。但是该文章有一个问题,就是解码出... 阅读全文

[置顶][原]如何在Android用FFmpeg+SDL2.0解码声音

2014-09-11 11:45 by 雪夜&流星, 阅读(2326) 阅读, 推荐(2) 推荐, 收藏, 编辑
摘要:关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像,本文是基于上述文章和[原]零基础学习视频解码之解码声音来移植到Android设备上的,也是参考http://dranger.com/ffmpeg/tutorial... 阅读全文

[置顶][原]如何在Android用FFmpeg+SDL2.0解码显示图像

2014-09-10 14:29 by 雪夜&流星, 阅读(5169) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:如何在Android上使用FFmpeg解码图像参考文章[原]如何在Android用FFmpeg解码图像,如何在Android上使用SDL2.0来显示图像参考[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图。有了以上两篇文章的基础我们就可以在Android使用FFmpeg来解码... 阅读全文

[置顶][原]如何在Android用FFmpeg解码图像

2014-09-01 21:29 by 雪夜&流星, 阅读(6339) 阅读, 推荐(1) 推荐, 收藏, 编辑
摘要:前一篇[原]如何用Android NDK编译FFmpeg我们知道了如何使用NDK来编译Android平台下使用的FFmpeg动态库。这篇文章我们就可以使用Android下的JNI来调用FFMpeg进行解码了。一、编译出来可以使用的动态库,我们会看到如下输出则表示link完成了: CC lib... 阅读全文

[置顶][原]如何用Android NDK编译FFmpeg

2014-08-26 21:43 by 雪夜&流星, 阅读(6680) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装。那么如何使用Android的NDK编译出来可以在Android下面可以使用的FFmpeg动态链接库呢?写下这篇文章就是学习如何裁剪并... 阅读全文

[置顶][原]零基础学习在Android进行SDL开发系列文章

2014-08-22 00:21 by 雪夜&流星, 阅读(802) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:[原]零基础学习SDL开发之移植SDL2.0到Android[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图[原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片[原]零基础学习S... 阅读全文

[置顶][原]零基础学习视频解码系列文章

2014-08-06 01:31 by 雪夜&流星, 阅读(1451) 阅读, 推荐(2) 推荐, 收藏, 编辑
摘要:注:本系列文章的开发环境:Ubuntu 14.04+Eclipse4.3.2+CDT+FFmpeg2.3+SDL1.25[原]零基础学习视频解码之安装ffmpeg[原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构[原]零基础学习视频解码之解码图像[原]SDL开发教程[原]零基础学习视... 阅读全文

[置顶][原]零基础学习视频解码之后记

2014-08-06 01:22 by 雪夜&流星, 阅读(466) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:嘿嘿,在此之前从来没有用c写个一个简单的demo,最多也是用c写写数据结构练习题什么的,通过这个学习了解了很多以前不了解的东西。本人比较懒,做什么事情都是只有三分钟热度,但是一直对ffmpeg解码向往而入门不得。《零基础学习视频解码》系列文章严格意义上来说不算是原创,我无非是将按照http://dr... 阅读全文

[置顶][原]零基础学习视频解码之seek

2014-08-06 01:00 by 雪夜&流星, 阅读(1854) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:现在,我们要添加一些功能,当你看不能倒带的电影,是不是很烦? 那么函数av_seek_frame功能看起来是多么赏心悦目。我们将让左,右箭头来回走在影片中通过一个小的向上和向下箭头很多,其中“三多一少”是10秒,“很多”为60秒。因此,我们需要设置我们的主循环,用来捕获击键。然而,当我们得到一个按键... 阅读全文

[置顶][原]零基础学习视频解码之同步视频

2014-08-06 00:20 by 雪夜&流星, 阅读(1522) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:在前面几章,我们了解了视频解码的原理,了解了音频解码的原理,也将视频和音频分别放在了相应的解码线程中去了。所以这整个过程中,我们有一个基本无用的电影播放器。它可以播放视频,它也可以播放音频,但是这个并不完整,因为音频和视频并不同步,我们接下来要做的就是将音频和视频同步起来。音频流有一个采样率,并且视... 阅读全文

[原]SQLite的学习系列之获取数据库版本二

2016-05-11 16:00 by 雪夜&流星, 阅读(855) 阅读, 推荐(0) 推荐, 收藏, 编辑

本系列文章主要是使用C++语言来调用其API,达到管中窥豹的目的。另外本文使用的开发环境为mac + clion,并且基于SQLite 3.7.14来进行开发.

  一、去下载sqlite-amalgamation-3071400.zip,然后解压到文件夹(其结构目录树如下):

    .

    ├── shell.c

    ├── sqlite3.c

    ├── sqlite3.h

    └── sqlite3ext.h

 

  二、新建一个sql_tutorial的工程,景sqlite3.c和sqlite3.h文件拷贝到sql_src目录下:

    .

    ├── main.cpp

    └── sql_src

        ├── sqlite3.c

        └── sqlite3.h

 

  

  三、在main.cpp中调用sqlite的代码如下:

    

/**
 * We get the version of the SQLite database. This time we will use an SQL query.
 */
#include <iostream>
#include "./sql_src/sqlite3.h"

using namespace std;

int main() {
    sqlite3 *db;
    sqlite3_stmt *res;

    const char *file = "test.db";
    int rc = sqlite3_open(file, &db);

    if (rc != SQLITE_OK) {
        cout << "Cannot open database: " << sqlite3_errmsg(db) << endl;
        sqlite3_close(db);

        exit(1);
    }

    rc = sqlite3_prepare_v2(db, "SELECT SQLITE_VERSION()", -1, &res, 0);
    if (rc != SQLITE_OK) {
        cout << "Failed to fetch data: " << sqlite3_errmsg(db) << endl;
        sqlite3_close(db);
        exit(1);
    }

    rc = sqlite3_step(res);

    if (rc == SQLITE_ROW) {
        cout << sqlite3_column_text(res, 0) << endl;
    }

    sqlite3_finalize(res);
    sqlite3_close(db);
    return 0;
}

  四、最后的运行结果如下:

  

3.7.14

Process finished with exit code 0

  

  调用分析:

sqlite3 *db;

  1、该sqlite3的结构定义了一个数据库句柄。每个打开的SQLite数据库是由数据库句柄表示。

 

sqlite3_stmt *res;

  2、该sqlite3_stmt结构代表一个SQL语句。

 

int rc = sqlite3_open(file, &db);

  3、该sqlite3_open()函数打开一个新的数据库连接。其参数是数据库名称和数据库句柄。在“test.db的”是采用了特殊的数据库名称导致打开一个内存数据库。函数的返回码指示数据库是否被成功打开。当连接成功建立,则返回SQLITE_OK。

 

if (rc != SQLITE_OK) {
        cout << "Cannot open database: " << sqlite3_errmsg(db) << endl;
        sqlite3_close(db);

        exit(1);
    }

  4、如果返回代码指示错误,我们打印邮件到控制台,关闭数据库处理,并终止该计划。该sqlite3_errmsg()函数返回错误的描述。它是否被打开时发生错误,与数据库连接句柄相关联的资源,应通过使其向sqlite3_close()函数释放。

 

rc = sqlite3_prepare_v2(db, "SELECT SQLITE_VERSION()", -1, &res, 0);
    if (rc != SQLITE_OK) {
        cout << "Failed to fetch data: " << sqlite3_errmsg(db) << endl;
        sqlite3_close(db);
        exit(1);
    }

  5、执行SQL语句之前,必须调用首先被编译成字节代码的sqlite3_prepare功能之一。 (该sqlite3_prepare()函数被弃用。)

  sqlite3_prepare_v2()函数有五个参数。

  第一个参数是从所述sqlite3_open()函数获得的数据库句柄。

  第二个参数是要编译的SQL语句。

  第三个参数为以字节为单位的SQL语句的最大长度。传递-1会导致读取SQL字符串到第一个零终止子字符串结束了。根据该文件,可以通过传递提供的SQL字符串的字节的确切数量获得一些小的性能优势。

  第四个参数是语句句柄。这将指向预编译的语句,如果sqlite3_prepare_v2()成功运行

  最后一个参数是一个指向SQL语句的未使用的部分。只有SQL字符串的第一个语句被编译,所以参数指向剩下什么未编译。我们传入0,因为该参数对我们不是很重要。

  如果成功,sqlite3_prepare_v2()返回SQLITE_OK;否则错误代码返回

 

  

rc = sqlite3_step(res);

  6、调用sqlite3_step()运行SQL语句。 SQLITE_ROW返回码表示有另一行准备。我们的SQL语句返回只有一行数据,因此,我们调用这个函数一次。

  

sqlite3_finalize(res);

  7、该sqlite3_finalize()函数销毁准备语句对象。

 

sqlite3_close(db);

  8、该sqlite3_close()函数关闭数据库连接。

  

 

[转]Android dex分包方案

2016-02-22 13:05 by 雪夜&流星, 阅读(455) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:转载自:https://m.oschina.net/blog/308583 当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时出错,提示: Conve 阅读全文

Investigating Your RAM Usage

2016-01-26 16:39 by 雪夜&流星, 阅读(601) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:转载自:http://developer.android.com/intl/zh-cn/tools/debugging/debugging-memory.htmlBecause Android is designed for mobile devices, you should always be ... 阅读全文

Android Studio NDK 学习之接受Java传入的Int数组

2015-08-25 16:59 by 雪夜&流星, 阅读(2316) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:本博客是基于Android Studio 1.3 preview版本,且默认你已经安装了Android SDK, Android NDK。用Android Studio新建一个工程叫AndroidJNI_IntArray,其目录结构如下:├── AndroidJNI_IntArray.iml├── ... 阅读全文

[原]Android Native Debug

2015-05-21 15:57 by 雪夜&流星, 阅读(1042) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:1,安装adt插件,cdt插件2,SDK目录配置: Eclipse文件菜单选择“Window”--->“Preferences”--->“Android”--->设置“SDK Location”--->”Browse”选择SDK目录即可。 如下图: NDK目录配置: 设置完SDK后... 阅读全文

[转]Android开发最佳实践

2015-05-13 11:40 by 雪夜&流星, 阅读(370) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:——欢迎转载,请注明出处http://blog.csdn.net/asce1885,未经本人同意请勿用于商业用途,谢谢——原文链接:https://github.com/futurice/android-best-practices本文是Futurice公司的Android开发人员总结的最佳实践,遵... 阅读全文

[转]OOPC:Object-Oriented Programming in C

2015-04-27 23:55 by 雪夜&流星, 阅读(1418) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:转载自:http://www.cnblogs.com/stli/archive/2010/10/16/1853190.html OOPC是指OOP(Object-Oriented Programming)与C语言的结合,它是一个面向对象C语言编程框架。它是一套C语言的宏,定义了OOP概念的关键字,借... 阅读全文

Android NDK 学习之传递类对象

2015-04-15 15:38 by 雪夜&流星, 阅读(974) 阅读, 推荐(0) 推荐, 收藏, 编辑
摘要:本博客主要是在Ubuntu 下开发,且默认你已经安装了Eclipse,Android SDK, Android NDK, CDT插件。在Eclipse中添加配置NDK,路径如下Eclipse->Window->Preferences->Android->NDK ,选择NDK的路径,然后Apply即可... 阅读全文
点击右上角即可分享
微信分享提示