- 博客(105)
- 资源 (2)
- 收藏
- 关注
原创 Android framework层获取Binder调用者的pid,uid
原文出处:http://www.ccbu.cc/framework/framework-get-pid-uid.html1.1 Java层int pid = Binder.getCallingPid();int uid = Binder.getCallingUid();String callingApp = mContext.getPackageManager().getNameForUid(uid);还可通过ActivityManager来跟进进程PID来获取进程名public String
2020-08-16 22:21:28
3859
原创 Android 修改系统默认输入法
原文出处:http://www.ccbu.cc/framework/modify-default-inputmethod.html1. 修改系统默认输入法Android系统的默认输入法在很多情况下是无法满足我们的需求的,因此就需要OEM自己集成输入法,基础输入法到系统,并需要修改系统默认输入法的配置。在frameworks/base/packages/SettingsProvider/res/values/defaults.xml添加<string name="def_input_meth
2020-08-16 22:13:39
4789
2
原创 Fragment生命周期及基本使用
原文出处:http://www.ccbu.cc/index.php/android/fragment-lifecycle.html什么是FragmentFragment实在是Android 3.0(API 11)中引入的,译作“碎片”。Fragment作为应用用户接口或行为的一部分而放置在Activity中。Fragment不能独立存在,只能依赖与Activity存在。Fragment拥有自己的生命周期,其生命周期受宿主Activity的控制,状态会随着Activity的状态的改变而发生改变。因And
2020-06-13 12:25:33
712
1
原创 ContentProvider使用简介
原文出处:http://www.ccbu.cc/index.php/android/android-contentprovider.htmlContentProvider中文名“内容提供者”,是Android系统不同应用程序之间进行数据交换的标准API,ContentProvide以Uri的形式对外提供数据,允许其他应用访问和修改数据;其他应用使用ContentResolve根据Uri进行访问操作指定的数据。Android内置的许多数据也都是使用ContentProvider形式,供开发者调用的;如视频,
2020-05-30 10:42:50
437
原创 BroadcastReceiver使用介绍
BroadcastReceiver 介绍原文出处:http://www.ccbu.cc/index.php/android/broadcast_receiver_intro.htmlBroadcastReceiver是Android开发4大组件之一。正如其名BroadcastReceiver作为广播接收者,用来监听系统全局的广播消息。广播(Broadcast)在Android系统中是在各组件之间传播数据的一种机制,这些组件可以位于不同的进程中。作为一个全局的广播监听组件,BroadcastReceive
2020-05-30 10:38:12
500
原创 Android JNI开发详解(7)-线程操作,异常处理
线程操作JNIEnv指针仅在创建它的线程有效。C/C++创建的线程默认是没有附加到JVM的,如果我们需要在本地线程线程访问JVM,那么必须先调用AttachCurrentThread将当前线程与JVM进行关联,然后才能获得JNIEnv对象。线程退出或不再需要使用JNIEnv时,我们必须通过调用DetachCurrentThread来解除连接,否则可能会导致线程不能正常退出或程序奔溃等问题。函数说明AttachCurrentThread将当前线程附件到JVMDetachCurr
2020-05-24 15:36:14
239
原创 Android JNI开发工具篇(1)-开发环境搭建
原文出处:http://www.ccbu.cc/index.php/android/android-jni-dev-env.html工欲善其事,必先利其器。1. 开发环境准备搭建开发环境是我们进行开发前首先要完成的任务,进行Android jni开发,依赖的基本开发环境包括:Android sdkandroid ndkcmakeandroid studioAndroid studio的sdk manager已经包括了上面所说的sdk,ndk,cmake等工具的安装,所以一般只用下载and
2020-05-24 11:54:33
553
原创 Android JNI开发详解(6)-对象操作
原文出处:http://www.ccbu.cc/index.php/android/android-jni-object-operate.html1. 对象操作基本步骤Jni是沟通Java世界和Native世界的纽带,Java层调用本地方法只用调用Java中定义的本地(native)方法就可用了,那么,本地的C/C++代码如何调用Java层的代码呢?这就是本章节对象操作要解决阐述的内容。一般的,C/C++层要调用Java层代码,需要进行以下步骤。获取Java层对应的jclass,通过jclass来
2020-05-24 11:49:01
600
原创 Android JNI开发详解(5)-引用篇
原文出处:http://www.ccbu.cc/index.php/android/android-jni-ref.html在JNI规范中定义了三种引用:局部引用(Local Reference)、全局引用(Global Reference)、弱全局引用(Weak Global Reference)。1. 局部引用1.1 局部引用通过NewLocalRef和各种JNI接口创建(FindClass、NewObject、GetObjectClass和NewCharArray等)。会阻止GC回收所引用的对
2020-05-24 11:47:23
392
原创 Android JNI开发详解(4)-数据操作
原文出处:http://www.ccbu.cc/index.php/android/android-jni-data-operation.html在前面关于JNI介绍的文章中我们知道,Java层和Navice层是两个世界,而JNI正是为了这个两个世界能够友好的相互沟通而设计的。既然是不同的两个世界,所有他们各自的数据类型定义也是不一样的,Java层和Native层都有自己的数据类型,在JNI中,这些数据类型又可以分为基本数据类型和引用数据类型,其中,基本数据类型是可以直接相互转换的,而引用数据类型则需要进
2020-05-24 11:44:41
421
原创 Android JNI开发详解(3)-JavaVM和JNIEnv
原文出处:http://www.ccbu.cc/index.php/android/android-jni-jnivm-jnienv.htmlJavaVM 和 JNIEnvJNI 定义了两个关键数据结构,即JavaVM和JNIEnv。两者本质上都是指向函数表的二级指针。在 C++ 版本中,它们是一些类,这些类具有指向函数表的指针,并具有每个通过该函数表间接调用的 JNI 函数的成员函数。1. JavaVMJavaVM是虚拟机在JNI中的表示,一个JVM中只有一个JavaVM对象,这个对象是线程共享的
2020-05-24 11:41:43
694
原创 Android JNI开发详解(2)-函数注册
原文出处:http://www.ccbu.cc/index.php/android/android-jni-function-register.html1. JNI开发流程创建Native C++工程,这部分可用参考[Android JNI开发详解(2)-开发环境搭建](Android JNI开发工具篇(1)-开发环境搭建.md)创建Java层本地接口调用类,并定义好相应的本地函数。将Java源代码编译成class字节码文件(Android studio会自动生成)。创建对应的本地
2020-05-24 11:37:56
310
原创 Android JNI开发详解(1)-JNI开发介绍
原文出处:http://www.ccbu.cc/index.php/android/android-jni-intro.html什么是JNIJNI是Java Native Interface的缩写,中文译为“Java本地接口”,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)进行相互调用,从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。所以,JNI技术是JAVA与本地世界的通信桥梁,通过这种技术可以做到以下两点:
2020-05-24 11:33:57
448
原创 PathFromUri(Android 4.4 kitkat以上及以下根据uri获取路径的方法)
原文出处:http://www.ccbu.cc/android/android-pathfromuriAndroid4.4开始,Uri的格式定义发生了变化,与之前的固定形势相比较,出现了几种不同的格式定义,分别对应不同的Provider(DocumentProvider,DownloadsProvider,MediaProvider),对于Uri,可以通过DocumentsContract.is...
2020-01-03 20:57:36
461
原创 Android 硬件加速(Hardware acceleration)
原文出处:http://www.ccbu.cc/android/android-hardware-acceleration硬件加速Android 3.0 (API level 11), 开始支持所有的View 的canvas都会使用GPU,但是硬件的加速会占有一定的RAM。在API >= 14上,默认是开启的,如果你的应用只是标准的View和Drawable,全局都打开硬件加速,是不...
2020-01-03 20:54:37
280
原创 Android.os.SystemClock 介绍
Class OverviewCore timekeeping facilities.Three different clocks are available, and they should not be confused:System.currentTimeMillis() is the standard “wall” clock (time and date) expressing m...
2019-12-23 22:38:39
363
原创 WindowManager.LayoutParams
WindowManager.LayoutParams 是 WindowManager 接口的嵌套类;它继承于 ViewGroup.LayoutParams; 它用于向WindowManager描述Window的管理策略。定义public static class WindowManager.LayoutParams extends ViewGroup.LayoutParams impleme...
2019-12-23 22:37:13
158
原创 ProgressBar简介
ProgressBar是Android系统提供的进度条view控件。ProgressBar有两个进度,一个是Android:progress,另一个是android:secondaryProgress。后者主要是为缓存需要所涉及的,比如在看网络视频时候都会有一个缓存的进度条以及还要一个播放的进度,在这里缓存的进度就可以是android:secondaryProgress,而播放进度就是and...
2019-12-21 21:01:08
392
1
原创 ActionBar简介
ActionBar是Android 3.0以后Anrdoid系统增加的导航栏功能控件。它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。使用ActionBar的好处是,它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕。由于ActionBar是在3.0以后的版本中加入的,如果想在2.x的版本...
2019-12-21 20:59:12
428
原创 Android Drawable之GradientDrawable
GradientDrawable可以在res/drawable目录下以xml文件用标签来定义。看看官方文档给出的xml定义说明吧。<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectang
2016-11-14 22:44:18
1154
原创 Android Drawable介绍
Android Drawable介绍Android系统中将可绘制对象被抽象为Drawable,不同的绘制资源对应着不同的Drawable类型。Android FrameWork提供了常用的Drawable,Android控件的绘制资源基本都是通过Drawable形式实现的。一般情况下,开发者是不会直接接触Drawable的具体实现的,Drawable资源一般都放在res/drawabl
2016-10-21 17:01:07
927
原创 Android自定义View实现简介
Android系统原生的为我们提供很多的功能强大的基础view控件,但即使如此,很多时候,他们还是不能够满足我们的需求,那么我们就需要通过自定义View来实现自己的view。在Android系统种已经为我们提供了一套很好的机制来实现自定义view,下面我们就自定义view的实现过程做一个简单的介绍。1.创建自己的view类通过继承Android的view类或view的子类来创建我们自...
2016-09-25 19:38:51
654
原创 Android之AsyncTask
AsyncTask是android提供的轻量级的异步类。在Android系统种,UI的绘制必须在主线程种进行进行。对于耗时的后台操作可以通过AsyncTask执行。应用中可以通过直接继承AsyncTask,在类中实现异步操作,并通过相应的接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。Android系统提供的AsyncTask,并对其进行了封装,在使
2016-09-23 21:25:27
348
原创 Android进程间通信之AIDL
在Android系统中,进程之间不能共享内存,为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。Android系统中提供了一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。而这种可以提供跨进程访问的服务称为AIDL(Android
2016-09-12 22:31:12
404
原创 Android Studio进行Jni应用开发
Android studio是谷歌推出的新一代Android应用开发工具,随着Android studio的版本的稳定性的逐步提高,越来越多的开发者开始投入到Android studio的怀抱;毋庸置疑,Android studio确实较eclipse高效了不少。Jni开发无论是在eclipse中还是在Android studio中都支持的很不好,因此这部分的环境搭建,包括后期的调试(基本都是靠看
2016-08-15 20:35:44
1170
原创 Android ListView几种Adapter用法简介
ArrayAdapter<T> 适合非常简单的数据显示,很方便,很简单。SimpleAdapter 可以自定义Item布局,用于显示交简单的布局及控件,但布局内的控件如按钮等无法获取到焦点,当然也就无法获取到他们的点击事件。SimpleCursorAdapter 与SimpleAdapter相似,只是他的数据源是Cursor类型而已。BaseAdpter子类 最常用的ListView数据适配器,通过继承BaseAdpter可以较灵活的实现数据的绑定,同时通过使用View
2016-07-23 23:23:35
8357
原创 简单的单例实现
/////test.h#include "stdio.h"class A{public:~A();static A m_a;static A* getAinstance();void Seta(int aa);private:A();int a;};/////test.cpp#include "test.h"
2014-03-17 09:36:44
607
转载 static_cast和reinterpret_cast
static_cast和reinterpret_cast揭秘 收藏 本文讨论static_castreinterpret_cast reinterpret_cast可以转换任意一个32bit整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,威力最为强大!但不能将非32bit的实例转成指针。总之,只要是32bit的
2014-03-03 10:43:46
531
转载 总结Android HAL层的使用方法
1、使用HAL的方法下面以Sensor传感器为例介绍使用HAL的方法,具体流程如下所示。 step1. Native code通过 hw_get_module 调用 HAL stub。[cpp] view plaincopyhw_get_module( LED_HARDWARE_MODULE_ID, (const hw_mod
2014-02-24 16:41:19
909
转载 浅析Android binder机制
linux下进程间通信 :管道,共享内存,信号量,Socket等,java的进程间通信有RPC,RMI,CORBA,Socket等。 Binder作为Android系统进程间通信方式不同于上面传统的IPC,它有着自己的优势。Binder是基于CS(client-service)软件架构,Binder通信是同步,非异步的。为什么选择 Binder
2014-02-24 16:40:04
598
转载 Android设备驱动之——V4L2
Video for Linux Two V4L2的是V4L的第二个版本。原来的V4L被引入到Linux内核2.1.x的开发周期后期。Video4Linux2修正了一些设计缺陷,并开始出现在2.5.X内核。Video4Linux2驱动程序包括Video4Linux1应用的兼容模式,但实际上,支持是不完整的,并建议V4L2的设备使用V4L2的模式。现在
2014-02-24 16:38:40
665
转载 Linux设备驱动之——PCI 总线
PCI总线概述 随着通用处理器和嵌入式技术的迅猛发展,越来越多的电子设备需要由处理器控制。目前大多数CPU和外部设备都会提供PCI总线的接口,PCI总线已成为计算机系统中一种应用广泛、通用的总线标准[1]。Linux因其开放源代码以及稳定的性能,越来越受到广大用户青睐。同时,基于Linux内核的嵌入式操作系统应用势头强劲,开发基于Li
2014-02-24 16:36:19
626
转载 Linux设备驱动之——I2C总线
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。
2014-02-24 16:33:02
830
转载 Linux设备驱动之——serio总线
什么是总线 总线是处理器与一个或者多个设备之间的通道。在设备模型中所有的设备都是通过总线相连的。甚至那些内部的虚拟"平台"总线。总线可以互相插入,比如一个 USB 控制器通常是一个 PCI 设备。 linux系统中包含的总线有 i2c、ide、pci、pci express、platform、 pnp、 scsi、 serio、 usb等
2014-02-24 16:28:54
1019
转载 Android 开发之 ---- bootloader (LK)
LK是什么 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代码 ,little kernel 是小内核小操作系统。 LK 代码 在 bootable/bootloadler/lk 目录下 LK 代码结构 +ap
2014-02-24 16:24:58
788
转载 Android系统驱动概述
说到 android 驱动是离不开 Linux 驱动的。Android 内核采用的是 Linux2.6 内核 (最近Linux 3.3 已经包含了一些 Android 代码)。但 Android 并没有完全照搬 Linux 系统内核,除了对Linux 进行部分修正,还增加了不少内容。android 驱动 主要分两种类型:Android 专用驱动 和 Android 使用的设备驱动(linux)。
2014-02-24 16:23:01
3684
转载 Android通过JNI调用驱动程序(完全解析实例)
--作者:赖玉平(Peter Lai)aulyp@163.com 要达到的目的:android系统中,用JAVA写界面程序,调用jni中间库提供的接口,去操作某个驱动节点,实现read,writer ioctl等操作!这对底层驱动开发人员是很重要的一个调试通道,也是android 系统下提供一些特殊功能接口的方法!本文前提:我们假设已经写了一个驱动程序,它是控制LED
2014-02-24 15:55:33
1151
转载 android驱动例子(LED灯控制)
本例子,讲述在android2.1上完全自已开发一个驱动去控制硬件口并写应用测试该驱动,通过这样一个例子,解析android下的驱动开发流程的应用调用流程,可以说是很好的入门引导要达到的效果:通过android的应用,调用驱动程序,在开发板上控制4个LED的亮灭。一、硬件原理如上图,通过4个IO口控制这LED,低电平LED亮,这4个IO口分别是GPM1, GPM
2014-02-24 15:54:09
848
转载 基于linux-2.6.35的class_create(),device_create解析
作者:苗德行,华清远见嵌入式学院讲师。从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。提醒一点,udev是应用层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用device_create创建对应的设备。大致用
2014-02-24 15:48:09
635
转载 批量删除目录下的文件夹
因为.net项目里的debug和release文件夹不需要提交到svn,项目多了,不方便挨个删,写个批处理,以后删除.svn目录也用得着。批量删除debug和release@echo offfor /r %%d in (.) do if exist "%%d\debug" rd /s /q "%%d\debug"for /r %%d in (.) do if exist "
2014-01-22 16:21:22
675
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人