安卓应用
文章平均质量分 73
笑看江湖路6
这个作者很懒,什么都没留下…
展开
-
Android灯光系统(电池灯/通知灯)
首先别人的APP要能直接访问到你写的硬件或者不经过任何修改的APP能直接使用你的驱动,就需要使用系统自带的JNI,所以我们需要写出符合系统自带JNI文件的HAL文件和驱动程序,下面具体分析一个这个HAL和驱动程序需要实现什么。灯光系统由以下四个部分组成APP:电池灯APP,通知灯APP,背光灯APPJNI :com_android_server_lights_LightsService.cppHAL:我们自己实现,实现一个lights.c驱动:leds_nanopi3.c(JNI需要什么这里就给原创 2022-04-01 23:06:03 · 2571 阅读 · 0 评论 -
ArrayMap的使用与详解
数据集合在任何一门编程语言中都是很重要的一部分,在 Android 开发中,我们会实用到List,ArrayList, HashMap等。List和ArrayList配合使用,其中HashMap是用来处理键值对需求的常用集合。 而Android中引入了一个新的集合,叫做ArrayMap,为键值对存储需求增加了一种选择。而ArrayMap这个集合是从4.4版本的时候推出的,到现在已经经历过几个版本的修改,前期的append()方法,已经被删除了等。至于今天为什么要把ArrayMap拿出来说呢,是因为Arra原创 2022-03-10 00:13:06 · 3095 阅读 · 0 评论 -
Android消息处理机制
原理在一个循环下有多个线程,当一个线程休眠时另一个线程如何唤醒的呢?1、通过epoll机制,当没有数据时就休眠,有数据就立刻唤醒。2、A线程不断地发送消息给B线程,当B线程消息处理不过来时,得用消息队列分析源码:创建MessageQueue,用Looper.prepare当前线程中,设置 new looper,创建looper的实例化对象并在looper中创建了消息队列.使用Handler构造消息,发送消息有很多不同的构造方法,Callback是回调函数就是那些消息的处理函数,Lo原创 2022-03-09 00:54:50 · 3836 阅读 · 0 评论 -
Android硬件访问服务编写HAL代码
android HAL是什么?为什么有它?来看一下网上的说法:硬件抽象层是介于android内核kernel和上层之间的抽象出来的一层结构。他是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件具体怎么实现工作的,它屏蔽了底层的实现细节。它在整个android架构中的位置如下图所示:传统的linux对硬件的操作基本上在内核空间的linux驱动程序中实现了,那么现在为什么那么多此一举把对硬件的操作分为两部分,hal和linux驱动呢?而且hal属于用户空间,linux驱动属于内原创 2022-03-04 01:23:00 · 617 阅读 · 0 评论 -
Android硬件访问服务
上一章JNI直接访问硬件可能导致多个应用同时访问一个驱动,就可能导致驱动出现问题,所以我们可以只让一个应用程序来访问硬件,这个应用程序成为“SystemServer”,APP有应用请求统一发给它,由它统一管理所有的service。而我们这章的目的也是建立一个led service。SystemServer使用java写的,访问硬件只能用C,所以中间也需要使用JNI。SystemServer的源码在android目录下:frameworks\base\services\java\com\android\原创 2022-03-01 01:55:36 · 604 阅读 · 0 评论 -
android程序操作led
上章节中app通过jni访问c库,本章学习led驱动程序。1.创建驱动文件leds_4412.c#include <linux/kernel.h>#include <linux/module.h>#include <linux/miscdevice.h>#include <linux/fs.h>#include <linux/types.h>#include <linux/moduleparam.h>#include &原创 2022-02-24 00:06:16 · 2787 阅读 · 0 评论 -
Android应用程序访问c库
Android应用程序通过JNI访问C库,我们要在开发板上控制led,需要实现这几个函数jni文件ledCtrl(int which,int status) //控制led亮灭ledOpen() //ledClose()HardControl.java java文件声明native方法 在对应的hardcontrol.c实现对应的C函数1. 新建HardControl.java,编写代码package com.example.ndk.ndk.hardlibrary;public c原创 2022-02-23 00:25:49 · 876 阅读 · 0 评论 -
Android UID的分配、查看及相关知识
1.UID概念uid: android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变。一个应用程序只能有一个uid,多个应用可以使用sharedUserId 方式共享同一个uid,前提是这些应用的签名要相同。2.查看应用UID 的几种方式方法1: ps 命令计算这个 u0_a106 就表示该应用是 user 0(主用户)下面的应用,id是 106,前面说过 普通应用程序的UID 都是从 10000开始的,所以 最终计算出的 UID 就是 10106原创 2021-08-29 11:38:43 · 9519 阅读 · 0 评论 -
Android开发基础之了解AndroidManifest.xml清单文件
首先Manifest是清单的意思,是送货单的意思。那我们要怎么理解呢?很简单,我们类比就可以了,既然是送货单,它是用于描述所送的货们物的嘛。因些,AndroidManifest.xml是用于描述应用程序的。它描述权限,描述这个应用的四大组件。权限权限前面我们已经用到了,同学们不用去记。随着你代码写多了,就就知道什么时候需要获取权限了,写的时候不知道怎么写也没关系,因为会提示你的。这个不需要去记,实在不知道什么时候添加权限,你放心,会报错的嘛!报错会打出来告诉你需要什么权限的,OK!到这里的话,权限就搞定原创 2021-08-17 00:23:05 · 2662 阅读 · 0 评论 -
控件Toolbar
(1)简介Toolbar 是 Android 5.0 推出的一个 Material Design 风格的导航控件 ,用来取代之前的 Actionbar 。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。(2)修改主题当我们新建一个工程时,我们发现默认是有导航栏的, 如图:我们发现系统自带的是一个actionBar,在\src\main\res\values\themes.xml中如下:原创 2021-08-08 23:00:03 · 1445 阅读 · 0 评论 -
ProgressBar
ProgressBar进度条的常用属性这里实现一个进度条,每次点击模拟下载按钮时进度会加10,最大进度值为100;另外增加一个按钮控制进度条的显示和影藏状态切换。布局文件如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"原创 2021-08-01 00:32:05 · 104 阅读 · 0 评论 -
控件ImageView
ImageView继承自View组件,主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用ImageView来显示。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。属性:scaleType缩放类型如下:android:maxHeight和android:maxWidth表示图片的高和宽的最大值,同时加上android:adjustViewBounds="true"才生效,表四高或者宽两个满足一个最大时,另一个属性就会按原创 2021-07-31 23:08:12 · 410 阅读 · 0 评论 -
控件EditText
EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是用户跟Android应用进行数据传输的窗户,比如实现一个登陆界面,需要用户输入账号密码,然后我们获取用户输入的内容,提交给服务器进行判断主要属性:这里设计一个密码框,输入密码,通过点击button键获取密码。在布局文件中配置如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.andr原创 2021-07-31 22:05:07 · 278 阅读 · 0 评论 -
控件button
StateListDrawable是Drawable资源的一种,可以根据不用的状态,设置不同的图片效果。当使用StateListDrawable作为目标组件的 背景和前景图片时,StateListDrawable对象所显示的Drawable对象会随着目标组件状态的改变而改变, 说白了就是给某个组件添加颜色选择器, 比如一个按钮 按下和离开状态会有不同颜色。关键节点,我们只需要将button的background属性设置为该drawable资源即可轻松实现,按下按钮时不同的按钮颜色或者背景。举一个例子,.原创 2021-07-30 23:47:09 · 353 阅读 · 0 评论 -
Textview的学习
TextView的属性android:textColor 文本颜色android:textColorHighlight 文本高亮颜色android:textColorHint 文本提示颜色android:textColorLink 链接文本颜色android:textIsSelectable 文本能够被选中android:textScaleX 水平缩放参数android:textSize 文本大小android:textStyle 文本风格android:typeface 文本字体and原创 2021-07-30 00:30:46 · 158 阅读 · 0 评论