L*MM开发小结
muximuxi525
有些事情暂时可以放下但是绝不能放弃
展开
-
Switch case的一个小问题...
今天码code的时候碰到一个奇怪的现象。最后找到是switch case有一个case语句忘了加break了,然后程序会执行到下一个有break的case才会结束。QAQ...switch case如果匹配了一个常量,在该常量的程序范围内没有break出去的话,会一直运行到break为止..之后的常量不会再去比较的..原创 2017-01-09 21:53:22 · 705 阅读 · 0 评论 -
looper,handler,msg
looper是一个线程的本地变量 ThreadLocal 这里是方便该线程的管理而建立的android之类的东西。looper prepare之后就会产生一个looper线程,就是可以使用handler这玩意了,主线程自带looper所以可以随便使用handler。looper loop之后就会驱动队列开始工作了。参考博客,侵删。http://www.cnblogs.com原创 2016-07-18 20:20:26 · 349 阅读 · 0 评论 -
Android 文件名含有空格/中文/特殊符号 导致网络下载失败
今天碰到一个bug,samba播放下,因为使用了httpserver和mediaplayer进行交互,有空格的文件竟然找不到,后来一check是要编码Android 文件名含有空格/中文/特殊符号 导致网络下载失败编码转化为UTF-8格式。String path = Uri.decode(String path);附上参考博客:http://blog.csdn.原创 2016-07-07 18:09:45 · 3828 阅读 · 0 评论 -
M**tar CTS环境搭建
CTS 操作(0)拷贝Android MM Test Files整个目录的内容到sdcard和u盘的根目录,插入开发板里面(1)下载android-cts-6.0_r7-linux_x86-arm.zip,解压到marshmallow-mstar-master\android-cts,然后chmod 777 -R android-cts(1.1)將CtsMstarTestCases.a原创 2016-07-18 15:12:22 · 583 阅读 · 0 评论 -
Android TV gridview 的按键事件响应巧变 && 事件分发机制
在gridview点击事件之后,打log看了下,看到gridview的onclick事件响应的竟然排在onkeyup之后,这造成100~200ms的延迟啊,后来换了在其它响应事件里面截取,但是在onkeydown不行,因为在onkeydown截取不了onkeyup的消息。要在dispatchKeyEvent这个方法里面截取。只有这样才不会继续把消息往onkeydown onkeyu原创 2016-07-26 21:06:58 · 2158 阅读 · 0 评论 -
AN 外置字幕CTS crash(memcpy) && backtrac文件分析
报错的backtrace01-01 20:16:43.110 1687 1687 F DEBUG : backtrace:01-01 20:16:43.110 1687 1687 F DEBUG : 00 pc 0001692c /system/lib/libc.so (__memcpy_base+88) 01-01 20:16:43.111 1687 1687原创 2016-07-15 20:34:57 · 973 阅读 · 0 评论 -
Android L**MM music Service笔记
(1)首先AndroidManifest.xml要添加service <service android:name="com.jrm.localmm.ui.music.MediaService" android:enabled="true" > (2)添加aidl文件作为进程管道的声明m原创 2016-06-18 17:56:24 · 861 阅读 · 0 评论 -
Android 网络字幕文件保证编码一致的文件读写
这是一段读入网络字幕文件并写出在本地的code。 private String writeToLocalPath(String url){ String tmpPath = null; String subtitleLocalPath = null; if (Tools.isSambaPlaybackUrl(url)) {原创 2016-06-18 15:10:54 · 502 阅读 · 0 评论 -
repo sync 出错:does not point to a valid object
可能是.repo 包烂掉了,删了重新repo init原创 2016-07-13 15:11:12 · 5690 阅读 · 0 评论 -
一次activity弹出dialog 的按键事件记
AN TV平台。在activity的onkeyup没有拦截一个enter事件,activity弹出dialog之后,dialog的按键事件onkeyListener竟然也还能接收到 KeyEvent.ACTION_UP 事件。然后如果单纯用遥控的话,dialog是无法接受到Onkeydown和OnkeyUp事件的;但是鼠标操作,dialog是可以接受到Onkeydown和Onkey原创 2016-07-23 18:00:39 · 1138 阅读 · 0 评论 -
Android 西班牙语字幕乱码 && 字符编码
今天碰到一个西班牙语字幕乱码的问题。首先使用JcharDet jar包验证字幕文件编码类型为:windows-1252 其实和 ISO8859-1 类似。 将其转化为万能的UTF-8 或者UTF-16就ok了一篇很详细对各种字符编码进行述说的文章:http://www.crifan.com/files/doc/docbook/char_encoding/release/html/c原创 2016-06-29 21:05:10 · 4849 阅读 · 0 评论 -
openStream打开网络地址获取文件流
InputStream is = new URL(path).openStream();相当于String url.HttpURLConnection conn = (HttpURLConnection)url.openConnection();InputStream is = conn.getInputStream();原创 2016-06-07 11:31:51 · 3749 阅读 · 0 评论 -
Android 播放视频UI的功耗优化 && 动态增加view小结
背景:优化前播放视频的UI是直接用XML文件描述,这样确实方便调试和绘图。但是如果不是动态添加surafaceview到activity的话,dumpsys sufaceFlinger会发现有一层activity的view一直存在。但是如果我们是动态增加view到activity的话,播放视频的时候只会显示surfaceview,从而达到功耗优化的目的。动态增加view的话,主原创 2016-07-28 21:15:03 · 1463 阅读 · 0 评论 -
Android wait notify sleep 与死锁问题举例
http://kyfxbl.iteye.com/blog/1370377原创 2016-07-08 18:10:00 · 831 阅读 · 0 评论 -
android自动化测试
目前有去了解的的两种是:(1)monkey 随机发送按键事件 比较容易理解monkey -p com.htc.Weather –v -v 100参考:http://www.cnblogs.com/manuosex/p/3215270.html(2)robotium可以对apk或者apk源码进行测试,有专门的api来获取UI,然后进行UI的自动化测试(原创 2016-07-19 17:15:32 · 308 阅读 · 0 评论 -
git push code: merge pending
(1)一般出现在一个人同时上了几包code之后,即ABCDEFG,然后按照GFEDCBA的顺序merge code之后,一般A都很merged,后面的都会呈现merge pending的情况这个时候就需要先rebase B然后可以直接merged B,用这种方法依次处理CDEFG原创 2016-12-08 10:35:24 · 1414 阅读 · 0 评论 -
C语言小知识笔记
(1)memset对没有malloc的字符数组,会发生crash(2)非成员函数声明要在使用其函数前面,不然会报函数找不到的错误。待续..原创 2016-11-23 21:23:27 · 685 阅读 · 0 评论 -
Android 7.0 apk bring up
build code出现这样的问题(1) 关掉串口,重新Build整包an code,然重新进入到子目录build。(2)LMM apk没有build出来。在device.mk 或者device-common.mk里面检查,看到注释掉了LMM。原创 2016-09-08 21:35:48 · 525 阅读 · 0 评论 -
上code原则
(1)是否应该修改,不应该帮底层掩护问题(2)是否多加code,code加的越多,逻辑越复杂,是否做到简化,是否画逻辑图,是否写伪代码(3)上code之前的test case是否充分,现在打盹,后面痛苦(4)是否让review的人明白自己上code的逻辑(5)待续...原创 2016-11-18 10:27:15 · 632 阅读 · 0 评论 -
一个Camera两个Encoder
昨天在一个平台搞了个apk,做到一个Camera两个Encoder:第一个MediaRecorder绑定Camera,第二个MediaRecoder则是使用Surface SourceCamera source的就会从摄像头录制内容,然后Surface Source的则会是决定于Surface上面的内容。最后同时录了两个视频出来。原创 2016-12-01 17:12:41 · 577 阅读 · 1 评论 -
Java反射实现接口
(1)点击打开链接(2)点击打开链接利用代理+反射,实现在反射的方法里面传入实现的代理接口,从而达到反射了一个带有(需要反射的)接口参数的方法的目的转载 2016-10-10 19:40:40 · 3042 阅读 · 0 评论 -
The surface has been released
昨天在搞一道image类型的字幕的时候,设置setSubtitleDisplay (surfaceHolder)的时候出现这个错误The surface has been released。当时在想,以前也碰过这个情况貌似,就是播放视频setDisplay(surfaceHolder)的时候,想到这种情况应该是surfaceView还没有Created,所以在OnSurfaceCr原创 2016-08-19 10:17:50 · 2177 阅读 · 0 评论 -
[Android TV]setZOrderMediaOverlay 调整surfaceView Z-Order使用发现
最近使用了dual decode ,并且dual subtitle.需要对四个surfaceview进行排序。好奇怪!addView的顺序和Z-Order的顺序相反,即 addView(subtitleView0), addView(videoView1), addView(subtitleView2),addView(videoView3)。然后dumpsys surface原创 2016-08-17 18:24:40 · 13067 阅读 · 0 评论 -
Android TV 视频surfaceview 变化导致的闪烁
背景:视频先是旋转90度,把surfaceview左右两边都砍掉了一部分,涂黑处理。然后旋转180度的时候,重新开始播放视频,需要全屏surfaceview,这个时候会闪一下最后一帧视频,正常是虽然surfaceview由窄变宽,但是是没有画面的,所以才不会旋转。分析过程:一开始以为surfaceview需要重新setDiaplay(null)下,发现不是这个问题。后面发现原来原创 2016-08-01 16:17:48 · 2665 阅读 · 0 评论 -
使用add2line 找出lib crash的行数和函数
关注backtrace 的log http://www.tuicool.com/articles/ve2eMb6原创 2016-07-09 16:05:36 · 1335 阅读 · 0 评论 -
上code之前的test plan
(1)上code时跟reviewer sync root cause和 solution(2)含有内存分配的code煲机测试是否有内存泄漏问题(3)提交含有多线程的代码,增加CPU性能测试test case.(4)修改了UI,则刷一下monkey自动化测试(5)Release code之前,test case文档的test都要pass.(6)修改比较多的 code,例如原创 2016-07-19 17:29:16 · 453 阅读 · 0 评论 -
ExoPlayer
Chinese GuidLinehttp://www.cnblogs.com/lsjwzh/p/3890405.htmlhttp://www.jianshu.com/p/3251a5189f56原创 2016-06-08 18:12:07 · 544 阅读 · 0 评论 -
LOCAL_REQUIRED_MODULES 在apk的使用
有两个用到的so文件没有编译到system/lib下面apk直接修改makefile 文件引用该模块 使得可以编译出来 LOCAL_REQUIRED_MODULES := \ libnbtscan \ libsamba_jni \编译的时候先make clean 然后再make原创 2016-05-25 21:33:01 · 8037 阅读 · 1 评论 -
父类由子类赋值 & 父类由子类实例化
class B extends AB b = new B();割裂:A a = b实例化: A a = new B() ,也是多态原创 2015-07-07 10:37:22 · 1348 阅读 · 0 评论 -
No rule to make target
make: *** No rule to make target `device/mstar/common/apps/MLocalMM3/MLocalMM3/src/com/android/localmmservice/ILocalMediaService.aidl', needed by `out/target/common/obj/APPS/MLocalMM3_intermediates/sr原创 2015-07-06 15:54:30 · 1194 阅读 · 0 评论 -
获取分辨率 尺寸、样式
尺寸:px:屏幕像素in:物理英寸pt或pts:物理点(磅),文件信息多用磅值来进行描述,磅的尺寸大小是固定的,这样就可以保证用磅值描述的文本信息在不同的设备上显示的大小一致。mm:物理毫米dp或dip:相对于160-dpi(dots per inch)的屏幕的非密度制约的像素,也称“分辨率无关像素”sp:缩放比例无关(scale-independent)的像素,多转载 2015-07-27 10:45:19 · 381 阅读 · 0 评论 -
cli**ppers连接
hdmi线,新的电源,母开发板切source到hdmi上,debug线在cli**ppers上面原创 2015-06-12 10:51:27 · 479 阅读 · 0 评论 -
java 回调函数与匿名内部类
java匿名内部类的一个经典使用时在回调函数上:一、首先回调最经典的是在监听者模式上面:(1)比如一个button.setOnClickListener(new OnClickListener(){ void onClick(){TODO...}})这个new OnClickListener()主要是为了传递一个A的匿名对象。后面的花括号原创 2015-06-09 16:38:22 · 1086 阅读 · 0 评论 -
AN service读code小结
1、android service 包含本地service 的和远程的service 本地的没有复用性,直接是在本应用程序中使用;可以在后台调用,一般用来处理一个耗时的线程操作,不占用UI线程而远程的则有复用性,可以被其他应用程序调用2、本地的service如果没有和activity有数据交互,则可以使用startService,stopService开启关闭服务如果有交互原创 2015-06-24 17:54:24 · 482 阅读 · 0 评论 -
AN 动态添加布局基础
LinearLayout dualmodeLayout = (LinearLayout) inflater.inflate(R.layout.dual_mode,null).findViewById(R.id.dualmodelayout);(1)find the xml called dual_mode's layout:which id is dualmodelayout(原创 2015-04-27 15:33:45 · 600 阅读 · 0 评论 -
LruCache缓存girdview 加载的缩略图
最近在项目中使用gridview分页加载缩略图,为了使得缩略图加载速度更快些,所以想到保存起来,所以使用了LruCache试了下目前效果不错。核心代码:private LruCachemMemoryCache;@Overrideprotected void onCreate(Bundle savedInstanceState){ int maxMemory = (int原创 2015-03-10 11:46:00 · 637 阅读 · 0 评论 -
samba扫描没有触发扫描完成的Msg
只是因为在返回到上一层的时候,btn还是为1。但是在topdata中也有btn为1的判断,所以去执行别的地方的handler去了总结:以为不会找到bug来源,那就把来源好好的回滚一遍原创 2015-01-21 11:08:46 · 914 阅读 · 0 评论 -
重构L**MM图标浏览模式的文件管理器
1、切换浏览方式的逻辑改变原本:先回到上一层然后再回到当前这一层 优点:上层调用方面的代码复用率高 缺点:但是较下层的数据管理层方面的实现逻辑较复杂,较难维护(估计只有我能看懂-_-)现在:直接使用当前的数据更换view来显示 优点:业务逻辑容易看懂,数据层实现简单化了,容易维护 缺点:上层侵犯了一些业务原创 2015-01-23 12:30:35 · 954 阅读 · 0 评论 -
L*MM 文件管理器小结
1、点击local disk device的时候,刚好传过来的index=0;接着在 update top data的时候点击index=0返回;大概的过程是:点击了local disk decive之后,触发了按键响应,然后获取到了index,之后然后handler到主线程进行刷新显示内容,然后因为加了标志,这里还要返回到上一层,所以又逻辑控制点击了进入到devices页面的index=原创 2015-01-09 11:42:40 · 2328 阅读 · 0 评论 -
bitmap转化为file
public void saveBitmapFile(Bitmap bitmap){ File file=new File("/mnt/sdcard/01.jpg"); try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f原创 2015-08-26 20:51:38 · 2689 阅读 · 0 评论