
Android相关
Android相关
风雨兼程8023
这个作者很懒,什么都没留下…
展开
-
Android5.0 输入系统(一)————InputManagerService服务及相关对象的创建与启动
frameworks\base\services\java\com\android\server\SystemServer.javapublic static void main(String[] args) { new SystemServer().run();}frameworks\base\services\java\com\android\server\Syste原创 2017-10-22 23:26:58 · 421 阅读 · 0 评论 -
Android5.0 显示系统(三)————Surface的创建
sp surfaceControl = client->createSurface(String8("resize"), 160, 240, PIXEL_FORMAT_RGB_565, 0);sp surface = surfaceControl->getSurface();原创 2017-10-19 22:31:46 · 2028 阅读 · 1 评论 -
Android5.0 显示系统(一)————从一个简单的例子开启
我们从一个简单的例子开始,这个程序可以运行,比较简单。#include #include #include #include #include #include #include #include using namespace android;int main(int argc, char** argv){ // set up the thread-pool原创 2017-10-19 22:05:43 · 780 阅读 · 2 评论 -
Android5.0 显示系统(二)————SurfaceComposerClient
图1 每个应用程序在SurfaceFlinger中都对应一个Client 每一个应用程序都要和SurfaceFlinger通信,为了能够区分哪一个应用程序,所以有了SurfaceComposerClient。在原创 2017-10-19 22:11:57 · 3735 阅读 · 2 评论 -
Android消息处理机制(三):进入循环
消息的处理是一个不间断的过程,所以他实在死循环中进行了。为了节省CPU的资源,当消息队列中没有消息的时候,会在该线程中休眠,等待其他线程的唤醒。下面看一个该过程的时序图。 下面我们从源码的角度来分析进入消息循环的过程。frameworks\base\core\java\android\os\Looper.javapublic static void loo原创 2017-09-04 23:45:48 · 418 阅读 · 0 评论 -
Android消息处理机制(二):循环和消息队列的创建
Android应用程序线程的消息队列是使用一个MessageQueue对象来描述的,它随着Looper类的创建而创建,即通过调用Looper类的静态成员函数prepareMainLooper或者prepare来创建,其中,prepareMainLooper用来为应用程序的主线程创建消息队列;而prepare用来为应用程序的其他子线程创建消息队列。 注意:prepareMainLoo原创 2017-09-04 14:27:18 · 1642 阅读 · 0 评论 -
Android消息处理机制(一):简介
Android应用程序的消息处理机制是围绕消息队列来实现的。每个线程最多有一个消息队列,有了消息队列之后,就可以进入到一个消息循环中(进入loop中,每个线程最多有一个Looper对象,且主线程创建之后,系统会自动为其创建一个Looper对象和消息队列MessageQueue),同时其他线程以及线程本身可以往这个消息队列发送消息,以便可以在这个消息被处理时执行一个特定的操作。这样我们就将一个线程的原创 2017-09-01 15:52:15 · 284 阅读 · 0 评论 -
Android JNI(五)————JNI_JNI函数编码风格(C风格与C++风格)
在实现JNI本地函数,调用JN函数时,C与C++的调用方式略有不同,以GetStaticFieldID()为例,说一下两种语言调用方式的不同。jfield GetStaticFieldID(JNIEnv * env, jclass clazz, const char * name, const char * signature);11在C++代码中,调用GetStaticFieldID原创 2017-05-30 15:30:27 · 307 阅读 · 0 评论 -
Android中JNI(二)------java调用C和C回调java
一、交叉编译* 在一个平台上去编译另一个平台上可以执行的本地代码* cpu平台 arm x86 mips* 操作系统平台 windows linux mac os* 原理 模拟不同平台的特性去编译代码 ##jni开发工具* ndk native develop kit * ndk目录 * docs 帮助文档* platforms 好多平台版本文件夹 选择原创 2017-11-24 16:03:13 · 447 阅读 · 0 评论 -
Android中的JNI(一)------JNI介绍和C基础介绍
#android下JNI开发##what 什么是JNI* JNI java native interface native本地 java本地接口* 通过JNI可以实现java和本地代码之间相互调用* jni可以看做是翻译 实际上就是一套协议## why 为什么要用JNI* Java 一处编译到处运行 * ①java运行在虚拟机上 JNI可以扩展java虚拟机的能力 让原创 2017-11-24 15:58:28 · 284 阅读 · 0 评论 -
Android JNI(二)————JNI_在java中调用C库函数(隐式建立)
第一步:编写、编译java代码class HelloJNI { /*1、本地方法声明 * 本地方法和本地函数:jni实现,方法在java代码中声明的,而具体实现实在C/C++代码中。在 *一般的JNI书籍中,将这两种情况下的方法都成为本地方法,容易混淆。故将尽在java代码中声明 *的方法称为本地方法,使用C/C++实现的函数称为本地函数。 * 在java类中,使用“nativ原创 2017-05-30 13:03:55 · 593 阅读 · 0 评论 -
Android JNI(三)————JNI_在java中调用C函数(显示映射)
第一步:编写、编译java程序class HelloJNI { native void printHello(); static { System.loadLibrary("hellojni"); } public static void main(String args[]) { HelloJNI myJNI = new HelloJNI(); myJNI.prin原创 2017-05-30 14:23:15 · 782 阅读 · 0 评论 -
Android JNI(六)————JNI_C/C++程序中运行Java类
第一步:java程序public class Hello { private String name; private int age; public static void main(String args[]) { System.out.println("Hello, world!"); } public int sayhello_to(Stri转载 2017-05-30 15:52:28 · 362 阅读 · 0 评论 -
Android JNI(四)————JNI_在由C语言编写的JNI本地函数中如何控制Java端的代码
第一步:java端代码class JniTest { private int intField; public JniTest(int num) { intField = num; System.out.println("[java] JniTest(int num):intField = " + intField); } public int callByNative(i原创 2017-05-30 15:05:49 · 423 阅读 · 0 评论 -
Android JNI(一)————JNI介绍
1. JNI引入JNI概念 : Java本地接口,Java Native Interface, 它是一个协议, 该协议用来沟通Java代码和外部的本地C/C++代码, 通过该协议 Java代码可以调用外部的本地代码, 外部的C/C++ 代码可以调用Java代码;C和Java的侧重 : -- C语言 : C语言中最重要的是 函数 function;转载 2017-05-30 12:25:51 · 565 阅读 · 0 评论 -
常用对话框
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_par原创 2017-11-18 10:42:07 · 204 阅读 · 0 评论 -
Android中传感器的使用:传感器和指南针
一、传感器public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);原创 2017-11-24 09:25:50 · 417 阅读 · 0 评论 -
Android中的fragment
一、fragment概念(1)碎片、片段(2)允许我们更新界面上的某一部分,它实际上就是嵌入到了activity中的一部分 ,一个轻量级的activity(3)事务:把事务封装起来,一组事务同时都执行成功了,那么它就成功了,就算执行失败,那么它也可以回到执行前的时期.(4)android系统引出事务的概念:我们在更新界面上的某一个部分,为了保证界面完全更新.所以用事务包装起来.原创 2017-11-24 09:56:18 · 228 阅读 · 0 评论 -
Android中View动画
一、view动画* 帧动画 FrameAnimation类似放电影,图片一张接一张的播放* 属性动画* 补间动画 TweenAnimation(1)平移动画 translatepublic void translate(View v) { // 定义一个平移动画 /* * TranslateAnimation animation = new TranslateA原创 2017-11-24 10:31:55 · 240 阅读 · 0 评论 -
Android中XML和JSON数据的解析小案例
一、XMLpackage com.itheima.ceshouji.domain;/* * 13691689238 广东深圳移动神州行卡 名虽可得,利则难获,艺界发展,可望成功 凶带吉 * */public class Product { private String type; private String phonenum;原创 2017-11-24 11:16:02 · 287 阅读 · 0 评论 -
Android中的播放音频的API和SurfaceView控件
一、播放音频的API1.1 MediaPlaypublic void play(View v) { String path = et_path.getText().toString(); //1.判空操作,2,判断是否真的存在这个文件,有可能用户输入的是非法的文件路径 try { //1,创建一个多媒体播放器 mediaPlayer = new MediaPlay原创 2017-11-24 09:24:02 · 1356 阅读 · 0 评论 -
Android中关于图片的一些操作
一、加载图片到内存ImageView iv = (ImageView) findViewById(R.id.iv);//iv ---- jpg---bitmapfactory---bitmap//创建位图图像 //显示大图的时候抛出来了内存溢出的异常,看起来图片也不大,为什么会抛出异常呢?//> 原因是Android系统计算位图的时候,使用32位去表示 argb 8 + 8 +原创 2017-11-24 09:19:42 · 348 阅读 · 0 评论 -
Intent的详解
Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同时还是组件之间通信的重要媒介.使用Intent启动组件的优势1, Intent为组件的启动提供了一致的编程模型. 无论想要启动的组件是Activity, Service, 还是BroadcastReceiver, 都可以使用Intent封装启动的意图.2, 在某些时候, 应转载 2017-11-21 22:55:07 · 222 阅读 · 0 评论 -
Android应用程序的调试方法
Android调试测试方法原创 2017-11-15 22:31:18 · 2246 阅读 · 0 评论 -
Android中网络连接的一个简单示例
package com.heima.Internet;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import javax.net.ssl.HttpsURLConnection;import android.app.Activity;import android.原创 2017-11-18 12:57:28 · 573 阅读 · 0 评论 -
Android中的handler机制
直接在UI线程中开启子线程来更新TextView显示的内容,运行程序我们会发现,如下错 误:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.翻译过来就是:只有创建这个控件的线程才能去更新该控原创 2017-11-18 12:28:11 · 181 阅读 · 0 评论 -
listView入门
listView入门原创 2017-11-18 10:33:40 · 280 阅读 · 0 评论 -
android五种数据存储方式
本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据下面详细讲解这五种方式的特点第一种: 使用SharedPrefe转载 2017-11-18 10:31:28 · 382 阅读 · 0 评论 -
Android中的数据存储方式
Android中的数据存储方式原创 2017-11-18 10:27:44 · 260 阅读 · 0 评论 -
android源码编译
1、Ubuntu环境配置硬盘:120G内存:4G注:配置很重要,直接影响能否编译成功。2、安装JDKsudo apt-get updatesudo apt-get install openjdk-7-jdk注:验证是否安装成功java -version3、配置JDKsudo gedit /etc/profile转载 2017-05-30 12:02:33 · 282 阅读 · 0 评论 -
Intent的应用(一):隐式意图和显式意图
* 显式意图能从intent上直观的看到跳转到哪一个界面应用场景: 一般是自己内部跳转的时候,用显式意图 效率高* 隐式意图要指定action(动作) 、data(数据) 来达到跳转的目的应用场景:一般是跳转到其他应用中的某个界面,或者自己的应用界面想被其他应用打开。 效率低第一步:编写布局XML文件和Activity文件第二步:在清单文件中注册Activity第三原创 2017-11-21 22:59:27 · 374 阅读 · 0 评论 -
横竖屏切换时候Activity的生命周期
1、新建一个Activity,并把各个生命周期打印出来2、运行Activity,得到如下信息onCreate-->onStart-->onResume-->3、按crtl+f12切换成横屏时onSaveInstanceState-->onPause-->onStop-->onDestroy-->onCreate-->onStart-->原创 2017-11-22 19:48:23 · 281 阅读 · 0 评论 -
Android的内容观察者、通知、内容提供者
一、内容提供者的作用1. 应用成需创建的数据库文件,默认都是私有的,其他应用程序不具备读写权限2. 如果真的想把自己的数据库数据暴露给其他程序访问,那么就应该通过内容提供者来暴露。3. 与aidl有点类似,但不太一样,aidl是提供内存中的数据给其他应用访问,内容提供者是提供磁盘中的数据给其他应用访问。二、使用内容提供者的步骤1. 自定义一个类,继承ContentProvi原创 2017-11-23 22:45:46 · 1448 阅读 · 0 评论 -
Android中的本地服务、远程服务和系统服务
一、本地服务和远程服务本地服务 --local service:服务运行在当前的应用程序里面远程服务 --remote service:服务运行在其他的应用程序里面二、重要的概念* 进程:所谓的进程就是指系统给每一个应用程序分配的一块独立的内存工作空间* IPC:inter process communication 进程间通讯* AIDL:andrid inte原创 2017-11-23 21:17:49 · 2949 阅读 · 0 评论 -
Android中的Service组件(二)
一、服务的概念windows:长期运行在后台,并且运行在独立的一个进程中,没有界面android:长期运行在后台,运行与当前应用程序的进程中 ,没有界面二、服务的应用场景1. 轮询有没有新的设备接入2. 在后台不断的间隔时间去请求数据3. 在后台播放音乐注意:服务虽然长期运行在后台,但是它是运行于主线程的,里面不允许执行太多耗时的操作。三、进程的优先级别原创 2017-11-23 20:27:26 · 315 阅读 · 0 评论 -
Android中的Service组件(一)
一、 Service简介Service是android 系统中的四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互。service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放转载 2017-11-23 20:20:18 · 205 阅读 · 0 评论 -
Intent的应用(二)——数据传递
一、隐式意图和显式意图隐式意图> 一般要给intent对象指定action动作、data数据、category分类> 使用隐式手法注册的时候:action 、 category> 作用:启动其他应用中的某个界面,或者是自己应用中某个界面想被其他应用所打开> 详细的参数: scheme 、 host 、 port 、path 、mimetype(规定了数据类型)显式意图原创 2017-11-22 20:55:29 · 399 阅读 · 0 评论 -
Android组件Activity的生命周期
Activity有三种状态:1.当Activity处于屏幕的最前端时属于运行状态 2.当Activity被其他Activity半覆盖(比如弹出对话框)但是对用户仍然可见(只是失去焦点)时处于暂停状态 3.当Activity被其他Activity完全覆盖时处于停止状态生命周期的应用当Activity从一个状态到另外一个状态转变时就会调用相应的方法,包括 onCreate(原创 2017-11-22 19:44:21 · 250 阅读 · 0 评论 -
Activity四种启动模式
一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置; 启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有转载 2017-11-22 19:51:21 · 561 阅读 · 0 评论 -
Android框架
由上图,我们可以看出Android系统架构由5部分组成,分别是:Linux Kernel(linux内核)、Android Runtime(运行时环境)、Libraries(类库)、Application Framework(应用框架)、Applications(应用)。2.1、Linux KernelAndroid基于Linux 2.6提供核心系统服务,例如:安全、内存管理、转载 2017-05-28 23:29:59 · 347 阅读 · 0 评论