`
superonion
  • 浏览: 126932 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
  近期项目需要解析苹果的HLS流媒体协议,而FFmpeg从0.11.1“Happiness”版本开始,才增加了对HLS协议的支持。目前网上关于FFmpeg编译移植的文章有很多,但大多都是对旧版本的说明。新版本的源码对很多地方做了改动,包括一些变量名、常量名、函数名、函数参数、结构体等,所以在用旧版本的JNI接口时,需要相应地做出改动。这个编译移植工作确实花了本人不少时间,现在总结一下,希望能给到大家一些帮助。说明一点,本文阐述的不一定都正确,大家在编译过程中,难免会遇到各种各样的错误,可以提出来,一起讨论。   编译环境:Ubuntu 12.04、Android NDK r8   ...
歌词是播放器类App必不可少的组件,而一般的歌词组件都需要做到歌词的显示与播放进度同步。我们知道,歌词是如下所示的文件:   lrc  [ti:原来爱情这么伤][ar:梁咏琪][al:给自己的情歌][00:00.55]梁咏琪 - 原来爱情这么伤[00:05.43]作词:彭学斌 [00:06.68]作曲:彭学斌[00:09.63][00:22.27]我睁开眼睛 却感觉不到天亮[00:29.74]东西吃一半 莫名其妙哭一场[00:37.06]我忍住不想 时间变得更漫长[00:44.09]也与你有关 否则又开始胡思乱想[00:53.81]我日月无光 忙得不知所以然[00:59.96]找朋友交 ...
从打开文件开始,入口函数是avformat_open_input(),下面是对此函数的分析: //参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatContext的实例. //参数filename是媒体文件名或UR ...
         HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。         HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:   int getResponseCode():获取服务 ...
本篇收录了本人亲身经历的各大公司最新Data Structures and Algorithm面试笔试题及解题思路,持续更新,欢迎补充。   1. 给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词army和mary互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。【2012年百度实习生招聘笔试题】   思路一:使用trie树。 在字典树的前缀中再存储一个vector结构的容器: struct word { vector<string> ...
       单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。对一些类来说,只有一个实例是很重要的,比如最近我的一个Android项目中用到一个数据库管理类来封装SQLite读写操作。我们知道,SQLite对多线程支持并不是很好,如果两个线程同时操作数据库,会报 "Database is locked" 的错误。我想到的解决办法有两个:一是运用同步机制,比如在一个线程类中对数据库操作的部分加入 synchronized 关键字,这样就可以确保该线程类的多个实例操作数据库时不会发生冲突,但是如果两个不同的线程类的实例在同一时刻操作数据 ...
    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。      下面是Calendar 类的一些简单方法的使用:   import java.util.Calendar; import java.util.TimeZone; public class Test1 { pub ...
想把一个数据库db文件放在 res/raw/ 目录下,安装应用的时候就直接加载这个db文件到程序默认数据库目录下: /data/data/package_name/databases/db_name,这样就不用每次安装的时候都用SQL语句创建新的数据库。下面的代码就是将 res/raw/ 目录下的.db数据库文件拷贝到程序默认数据库目录下。   private String rootDirectory = "/data/data/org.itec.android.Classroom/databases/"; private final String DATABAS ...
      很多应用中,在点击Button后,会弹出一个带箭头的对话框,指向这个Button。网上查了,很多人都说用PopupWindow可以实现,我对PopupWindow不熟,于是试着用Dialog实现。(需要注意的是:PopupWindow是一个阻塞式的弹出框,这就意味着在我们退出这个弹出框之前,程序会一直等待,这和AlertDialog不同,AlertDialog是非阻塞式弹出框,AlertDialog弹出的时候,后台可是还可以做其他事情的。)       先选用一个带箭头的图片(pop.gif)做Dialog的背景,Dialog的布局文件如下: <LinearLayout x ...
       Android系统的消息队列和消息循环都是针对具体线程的,一个线程可以存在(当然也可以不存在)一个消息队列(Message Queue)和一个消息循环(Looper)。Android中除了UI线程(主线程),创建的工作线程默认是没有消息循环和消息队列的。如果想让该线程具有消息队列和消息循环,并具有消息处理机制,就需要在线程中首先调用Looper.prepare()来创建消息队列,然后调用Looper.loop()进入消息循环。如以下代码所示:   class LooperThread extends Thread { public Handler mHandler ...
       先说一说Java平台与Java语言的关系:          Java编程语言与Java平台是两个完全不同的概念。前者泛指一系列编程的语法,而后者包括前者,同时又超出前者的范围。一般而言,Java平台由三部分组成,分别为核心的Java API(包、框架及类库)、Java字节码(编译且可执行的形式)以及Java虚拟机(JVM,执行字节码的运行机制)Java语言只不过是Java平台中的一小部分,因为其他语言同样可以实现Java语言的功能,例如Groovy,、JRuby及JPython等,这些语言同样可以编写出运行在JVM执行的字节码。        再来说说Android:   ...
       在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver)都会跑在这个Process。        一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread。          在这么多Thread当中,有一个Thread,我们称之为UI Thread。UI Thread在An ...
      最近一项目需要从某高校教务处网站爬取各教学楼的教室安排数据,网址为:http://202.114.5.131/index.aspx 。       用firebug监视,点击页面上的“查询”按钮后,发现请求url是被加密过的,无法获取。后经人指点,可用Watij (Web Application Testing in Java) 来模拟网页控件操作,获取数据。       Watij支持模拟IE、FireFox,我用的是FireFox,需要从官网上http://sourceforge.net/projects/watij/files/ 下载webspec_xxx.zip,解压,然 ...
      在MyEclipse中imort项目后,发现个别类的中文注释全是乱码。想在Window --> Preference --> General --> Editors --> Text Editors --> Spelling 中的 Encoding 里设置,但是没有GBK的选项。发现其实通过Window进入是全局设置,如果需要对单个文件进行局部设置,可在Package Explorer中右键需要设置的文件,选Properties,Resource下有一个Text file encoding ,可以设置为GBK。        
一、数组与ArrayList的主要区别:效率、类型识别和primitive type。数组(Array):最高效;但是其容量固定且无法动态改变;ArrayList:容量可动态增长;但牺牲效率;建议:首先使用数组,无法确定数组大小时才使用ArrayList!1.效率:数组扩容是对ArrayList效率影响比较大的一个因素。每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。ArrayLi ...
Global site tag (gtag.js) - Google Analytics