- 博客(35)
- 资源 (35)
- 收藏
- 关注
原创 MediaCodec 初探
最近分析了一个关于MediaCodec的花屏问题,记录一下文档以备后面使用。 MediaCodec这个类是Android4.1开始引入的,API16。这个类可以在设备上直接访问媒体的解码,一般称为硬解码。 在Android4.3之后,API18,MediaCodec扩展了一个方法createInputSurface,提供了一个通过Surface作为输入。这样允许输入来自...
2018-12-06 14:48:25
714
原创 WLAN 入门(二)
我们都知道其他应用都是使用WifiManager来访问wifi.文件位于./frameworks/base/wifi/java/android/net/wifi/WifiManager.java它是public 类,并且有很多public方法。public 状态属性。通常是直接打开关闭wifi,读取wifi的状态,或者添加一个过滤器和receiver,这样wifi有何种状态变化都会通...
2018-10-31 10:22:26
544
原创 WLAN 入门(一)
梳理一下整个WLAN流程的文章:一、WLAN 和 其他应用的关系,以及初始化的服务二、SystemUI 中的显示按钮以及启动关闭wifi,例子:在SystemUI 中添加信号显示三、Setting 中的WLAN设置,例子: 设置WIFI 黑白名单四、Framework中的WIFI流程,例子 : 规避和减少WIFI漫游断线次数五、Wpa_supplicant:例子:添加WIFI调...
2018-10-30 20:39:38
377
原创 CTS 源码分析(三)--CTS PC端环境配置
PC端的环境配置比较简单,容易出问题的是手机和电脑的连接问题。一、手机连接PC先以展讯为例写一下流程。1、sudo cp (adb 文件路径) /bin2、sudo chmod 777 adb3、展讯因为有专有的VID,进入~, 快捷按键 Ctrl+H ,让隐藏文件显示出来, 然后 find –name .android cd .a...
2018-10-25 20:08:46
605
原创 CTS 源码分析(二)--CTS手机端环境配置
一、手机环境预置集成和手动配置 1、GMS包集成到手机软件。 a、GMS包的获取和拷贝。 在谷歌那里准备过认证的厂家可以拿到,让项目经理拿到之后,可以到我们手中。我们可以拿到之后解压。 包非常大,6.0的时候就已经有近4.5G的大小,解压就更大了。 预置代码中非常简单,按照目录 vendor/googl...
2018-10-25 13:49:17
1163
原创 CTS 源码分析(一)--CTS概况
CTS 源码分析(一) --CTS概况 1、什么是CTS? Compatibility Test Suite 兼容性测试套件说白了,就是一套工具。一套软件组成的测试工具。2、哪里有这套工具? http://source.android.com/compatibility/downloads.html 什么?要翻
2016-06-20 16:14:02
4484
原创 Gallery3d 学习笔记(19)
上次我们讲了单张图片的上下界面的显示和隐藏,已经左上角名字的刷新,现在我们讲一下分享以及右边的一堆菜单他们涉及到一个类ShareActionProvider,这个类专门是用来用于分享的。界面在photo.xml中,整体是一个菜单 <item android:id="@+id/action_import" android:title="@str
2015-03-20 14:32:02
732
原创 Gallery3d 学习笔记(18)
上一节课,我们讲了ActionBar 的左边部分,那么现在我们讲一下ActionBar的右边部分我们先熟悉一下我们要看的内容,看看再不同的界面下ActionBar是不是有不同的状态?刚刚进去相册集的时候是不是有拍照按钮?并且右边的菜单是只有一个选择相册?继续进相册的时候,拍照按钮是不是消失了?右边的菜单变成了多个,包括播放幻灯片?继续进入单张图片的时
2015-03-19 10:42:34
1045
原创 Gallery3d 学习笔记(17)
private class ClusterAdapter extends BaseAdapter { @Override public int getCount() { return sClusterItems.length; } @Override public Object getIte
2015-03-17 14:56:55
789
原创 Gallery3d 学习笔记(16)
前面我们详细了解了Gallery中如何组织各种页,并且如何用工厂模式生成这些页面,并且使用栈的压入和弹出实现页面的切换,下面我们就直接看看细节问题,首先是ActionBarpublic class AbstractGalleryActivity extends Activity implements GalleryContext { private static final S
2015-02-06 15:01:41
942
原创 设置屏幕亮度的办法
private void setBrightness(int brightness){ Log.i(this, "setBrightness"+ brightness); Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS,brigh
2015-01-23 13:46:40
794
原创 Android 锁屏探究
最近接受了Android上添加一个眼纹识别锁的任务,开始研究Android的锁屏。不看Android的源代码,首先想象一下,如果没有源代码,公司让你设计一套锁屏的机制,你会怎么做?
2014-04-07 18:09:10
1200
原创 Gallery3d 学习笔记(15)
上次讲到了StateManager如何用工厂模式创建出很多Page,然后将这些Page放在一个栈里面管理 我们先看下所有Page的父类 abstract public class ActivityState { public static final int FLAG_HIDE_ACTION_BAR = 1; public static final int FL
2013-06-27 11:27:08
1431
1
原创 Gallery3d 学习笔记(14)
上次我们研究了新的代码和原来2.3的代码的不同处,视频播放器的控制条从Framework中改变到了本地代码中,但是Framework中的控制条并没有删除,因为什么?为了向下兼容。另外我们还研究了触摸消息的分发,发现新的触摸分发更为规范一些,并且也没有像以前那样分层了,而是分页面,这样也更好一些,一旦有问题,可以到指定的Page中去找,而不是在透明的层里面到处找代码了。既然研究完
2013-06-17 09:35:45
1586
原创 Gallery3d 学习笔记(13)
上次我们探讨了Android 4.0中Gallery3d中的视频播放器,现在剩下的代码非常的多,我们先整体看下有那些包com.android.gallery3d.anim;//动画com.android.gallery3d.app;//应用com.android.gallery3d.common;//通用com.android.gallery3d.data;//数据源com
2013-06-17 07:35:46
2396
原创 Gallery3d 学习笔记(12)
从今天开始我们就开始研究Android 4.0里面的Gallery3d (Gallery2)4.0的代码就庞大许多,而且现在的包名变成了com.android.gallery3d了,是真正的Android写的了。我们看下AndroidManifast.xml,我们先看一个简单的Activity,熟悉下代码 <activity android:name=
2013-06-16 23:12:06
3105
1
原创 Gallery3d 学习笔记(11)
前面我们把Gallery3D的消息流程 刷新流程 数据流程 界面切换流程全部理清楚了,是不是很有成就感觉。如果弄懂了,添加两个按钮的作业应该没有什么问题,甚至添加一个新的层都不会有问题。我们讲了这么久其实才讲了一个Activity,其实还有一个比较重要的Activity.我们去看下配置文件AndroidManifast.xml <activity android
2013-06-16 20:58:35
1404
原创 Gallery3d 学习笔记(10)
上次我们了解了一些层在做什么,对应是什么,也看了对应的图片,也知道他们是一层层放着的,也知道触摸消息是怎么分发处理的。但这些都在哪里组织的呢?又是怎么切换的呢?我们还是一个控件(我估且叫他们控件吧,应该是一个层里面的一部分东西),先看HudLayer里面的代码。 // Camera button - launches the camera intent
2013-06-16 19:52:54
1165
原创 Gallery3d 学习笔记(9)
为了更好的了解界面的情况,还是去使用下Gallery3d的界面后再看代码刚进去是一个相册的缩略图界面,一堆一堆的图片,左上角是个Gallery(PathBar),右上角是个摄像头(ImageButton)再进入一个相册后,是这个相册的,网格化的缩略图,左上角是个Gallery+目录名字(PathBar),右上角是两个图表,一个是网格缩略图,一个堆缩略图,可以切换(Image
2013-06-16 16:15:17
1250
原创 Gallery3d 学习笔记(8)
前面7节我们讲了很多东西,我们再来回顾一下: 在程序还没有开始的时候,系统的一个程序com.android.providers.media就把内置存储器和外置存储器默默的扫描了一遍,建立了数据库和缓存缩略图,我们还弄清楚了Gallery3D是通过RenderView通过OpenGL 刷的界面,而且界面分为很多层,而且将层分了5个层列表:刷新列表 不透明列表 半透明列表 触摸列表 系统列表
2013-06-16 11:03:46
1252
原创 Gallery3d 学习笔记(7)
上次找到了缩略图的绘制的地方,但没有找到缩略图数据是如何来的,也不知道其他界面是怎么刷新的,更不知道界面是如何切换的。让我们开始,先在Gallery.java 里面的OnCreate中找到一个函数 sendInitialMessage();顺着这个函数找下去 private void sendInitialMessage() { mNumRetries
2013-06-15 14:49:45
1440
原创 Gallery3d 学习笔记(6)
继续讲解前,我们先回顾一下前面5节的分析。首先在开机或者加载外部存储器时,在mediaprivder里面receiver会得到广播消息,receiver开启服务进行扫描,生成数据库,并在T卡上生成缩略图临时文件,然后在第一个Activity里面有两个关于opengl的成员,RenderView和作为Root Layer 的GridLayer成员,并且关联了RenderView和Ro
2013-06-15 11:18:05
1383
原创 Gallery3d 学习笔记(5)
上个回合我们讲到触摸的响应在一个层的列表中找到,但是没有找到层的关联和添加。到底又几个层被加入了?有几个层LIST?到底什么时候添加进去的?还是先看RenderView.java private static final Lists sLists = new Lists();看下这个内部类的组成 public static final class Lists {
2013-06-14 21:45:56
1043
原创 Gallery3d 学习笔记(4)
发现每次都是要下岗前写博客,真不吉利啊,平时都没有空写。言归正传,上次的讲到RenderView和RootLayer,看起来必须把OpenGL的相关类弄清楚才能理解。我们知道要使用的OpenGL 是画图的一堆接口(当然包括3D 纹理 渲染很多东西),在用这些的同时,我们的Activity本身还有响应触摸按键事件,重现绘制界面,这两者必须同时良好的运行,怎么做到这些?不用着急,andro
2013-06-14 15:56:33
1276
原创 Gallery3d 学习笔记(3)
Android 的多媒体数据库文件存在什么地方呢 ?/data/data/com.android.providers.media/databases 只要有权限的手机都可以看到有两个数据库文件,internal.db和external-**.db,分别对应内部存储器数据库文件和外部存储器数据库文件。都第三节了,各位可能都着急还没有Activity的分析,其实外围分析清楚了,内部才
2013-06-14 13:55:29
1182
原创 Gallery3d 学习笔记(2)
上一次我们只是研究了一下Gallery3d的大致情况,发现了一些问题,就是什么时候发出开始扫描信息的和何时扫描的处理没有找到。 我们不得不扩大研究范围了,开始看在package\provider\mediaprovider,否则我们理解不了上述疑问。 mediaprovider 也是一个相关的APK,这个应用是对多媒体相关应用提供支持,如gallery3D musi
2013-06-14 11:49:14
1616
原创 Gallery3d 学习笔记(1)
最近有空回忆下前一段时间工作中学习的东西,先确定下环境版本 Android 2.3版本。(刚接触Android 一年,有错误请指正) 负责这个模块后第一步就是静态分析。 首先看 AndroidManifest.xml里面的内容。首先看的是包名 com.cooliris.media看过其他模块的人都会发现,其他都是com.android.***的包名,这
2013-06-14 10:23:09
1939
转载 泛型:volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件(race conditions)
Andrei Alexandrescu我不想破坏你的情绪,但这篇专栏针对多线程编程中最可怕的问题。如果说——正如前面一篇泛型所说的——写出意外安全(exception-safe)的程序很难,但写意外安全的程序和多线程编程比起来就是小孩子的玩意。 用到多线程的程序是众所周知地难写,难验证,难调试,难维护,总的来说难以驾御。不正确的多线程程序可能会运行几年都不出问题,但在某些时间条件符合时就会导致
2004-09-29 16:42:00
1579
原创 手写MFC----第四讲 BEGIN_MESSAGE_MAP
首先看定义#defineBEGIN_MESSAGE_MAP(theClass, baseClass) / const AFX_MSGMAP* theClass::GetMessageMap()const / { return &theClass::messageMap; } / AFX_COMDAT A
2004-07-11 21:45:00
11852
8
原创 手写MFC---第三节DECLARE_MESSAGE_MAP()
首先看定义#defineDECLARE_MESSAGE_MAP() /private: / staticconst AFX_MSGMAP_ENTRY _messageEntries[]; /protected: / static AFX_DATAconst AFX_MSGMAP messageMap; / v
2004-07-11 21:43:00
4786
3
原创 手写MFC---- 第二节 IMPLEMENT_DYNCREATE (mydoc,CDocument)
还是先看定义#defineIMPLEMENT_DYNCREATE(class_name, base_class_name) / CObject* PASCAL class_name::CreateObject() / { returnnew class_name; } / IMPLEMENT_RUNTI
2004-07-11 21:41:00
3725
原创 手写MFC----第一节DECLARE_DYNCREATE(mydoc)
DECLARE_DYNCREATE(mydoc)定义为#defineDECLARE_DYNCREATE(class_name) / DECLARE_DYNAMIC(class_name) / static CObject* PASCAL CreateObject();等同于 DECLARE_DYNAMIC(mydoc) /
2004-07-11 21:39:00
6075
12
原创 手写MFC的深入浅出
前言MFC的#define和typedef将C++弄得面目全非,下面的程序是一个单文档的程序,其功能是创建一个单文档的窗体,当鼠标左键点击窗体时,则在该文档窗体的点击处出现字符串“Welcome to SDI”.#include#include#include"resource.h" class mydoc:public CDocument{
2004-07-11 21:36:00
6775
9
原创 MFC的RUNTIMECLASS 的探讨
高手请指教在多文档的程序中, InitInstance()这个关键的初始化函数中有这样一段代码************************************************************CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_PAINTET
2004-06-27 09:10:00
5116
4
programming in Object - C 2.0
2009-06-02
Tcl/Tk Engineering Manual
2009-02-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人