- 博客(78)
- 资源 (14)
- 收藏
- 关注
原创 Android 亮度调节
DisplayPowerState是和LightService交互的,LightService是和HAL层的lights.c或lights.cpp和内核交互。BrightnessController.java中有个onChanged事件,这个是更新 setBrightness(val)接下来就HAL层的处理,每个产商有所差异,找到LIGHTS_HARDWARE_MODULE_ID的定义。内核里面生成结点:/dev/disp,通过ioctl到内核中去设置PWM引脚的值。
2024-12-01 19:40:17
565
原创 Android USB
endUsbDeviceAdded mDevices.put(mNewDevice.getDeviceName(), mNewDevice)把上面的值都保存起来,供app调用。开启UsbService的内部类LifeCycle,内部类中有两个方法:onStart优先执行,onBootPhase后执行?)发现等系统某个Service启动完成后,就会调用。usb_device_removed (设备移除时的回调,和上面的context->cb__removed对应)
2024-12-01 19:31:57
585
原创 Android Audio
https://blog.youkuaiyun.com/weixin_41004543/article/details/132862206
2024-12-01 19:24:22
240
原创 Android Vold
从时序图中我们得知挂载相关联的类有VolumeManager、Disk、VolumeBase、StorageManagerService。挂载步骤如下:1.到VolumeManager中接收到驱动层中的挂载信息后,会创建Disk对象并且调用其Create方法。2.Disk中的Create方法会先通过binder方式调用onDiskCreated(getId(), mFlags)通知framework层的StorageManagerService,告诉其创建了Disk;
2024-12-01 19:22:03
697
原创 Linux 字符设备操作-hello
#include <linux/module.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/init.h>#include <linux/cdev.h>#include <asm/u...
2019-08-04 18:19:08
569
原创 Android studio 断点调试
首先导入Android某个模块的源码,放到Android studio目录下。点击Run ->Attach Debugger to Android Process选择要调试的进程在某个文件中设置断点,出现界面如下:在手机或者主板上运行APK程序跑到断点处断点起作用界面:在这里插入图片描述...
2019-07-28 22:03:53
1080
原创 Window 搭建opengork 查看Android源代码
下载搭建源码的文件,opengrok,ctags 和tomcat服务器至于如何搭建tomcat请自行百度,网上很多。下载地址:最为重要的就是下面命令去生成索引:java -Xmx524m -jar C:\server\opengrok-0.12.1\lib\opengrok.jar -W E:\opengrok\A63\configuration.xml -P -S -v -s E...
2019-07-28 21:57:11
374
原创 Linux i2c通信
i2c通信的协议原理:可参考博客:https://blog.youkuaiyun.com/pengliang528/article/details/79522644I2C通信内核中操作方法#define I2C_BUS_ID (2) //设备挂载在i2c总线的ID#define I2C_SLAVE_ADDR (0x68) //high 7bits 从设备地址,第一个字节的高7...
2019-07-27 17:14:33
1398
1
原创 开源项目ALive
想来许久,自己花了些时间去研究了某些内容,如果不在此记录,等到某天回想起,早已经忘却。回想以前自己积累的一些技术,好久不触碰,早已经陌生,有的和自己的工作不相关,可能在某一天内,消失在茫茫的苍空下。可是谁也说不准哪一天,又需要以前接触到的知识了。怎么...
2018-08-05 22:58:33
246
转载 Android7.0 数据拨号前的准备工作
背景 在介绍PhoneApp的创建过程时,我们知道为了支持双卡手机,PhoneFactory创建了两个Phone对象。 然而由于通信制式、功耗等的限制,目前底层的芯片厂商规定modem工作于DSDS模式下,于是同一时间内只有一个Phone具有上网的能力。 本文旨在揭示激活Phone拨号能力的过...
2018-03-04 22:58:03
785
原创 android telephony模块——serviceStateTracker
学习android telephony模块最为重要的是学会处理流程,这是ServiceStateTracker里面的一小部分的时序图 serviceStateTracker.java的功能是去获取网络服务状态,包括运营商的信息,数据服务,通话服务,以及网络选择模式(手动或自动)。当SIM卡加载完成时,手机会发起四个查询,最终将RIL层返回的数据在handleMessage中做对应的处理,当处理完成
2017-10-11 21:30:06
2034
原创 微信生成带参数的二维码
现在微信开发平台的开发已经越来越火,主要微信端的入口人数多,造成现在开发者很多。今天遇到一个问题,就是微信端生成的带参数的二维码,来为后续推广做准备,准备记录一下微信公众号方面的技术。<?php $access_token ="fwefweffweoifwoieo88888*****"; $url = "https://api.weixin.qq.com/cgi-bin/qrcode
2016-08-02 16:50:58
4378
原创 php 发送邮件到邮箱
stmp协议:我们发送的邮件通过先将邮件发送到stmp服务器上,然后stmp服务器在去发送到对应的邮件的地方,这里面我采用了163的邮箱,端口号25,在使用的时候需要开启邮箱的stmp服务,但在QQ上的服务开启没有通过这个程序,163通过了。我们采用了别人的框架和程序,可以参考一下<?php/** * Created by PhpStorm. * User: zhouchenglin * D
2016-07-26 20:47:10
1165
原创 java的mysql api封装
Mysql api函数:具体的api操作package com.fasterry.dao;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import
2016-06-14 20:29:17
2635
原创 设计模式(23种,java)
工厂模式工厂模式,主要是在不知道哪个具体的对象去某个事情的时候,我们需要一个帮助类去管理这些对象,因为这些对象都可以干这件事情,只是具体做法不同而已,如果我们每次都去new一个对象的化,代码变的非常繁杂和无序,而通过工厂类的办法,我们只需要修改类名,就可以轻松的完成功能了,这就是工厂模式。具体看代码,好好体会一下了。package com.ation;//动物接口interface IAnimal
2016-05-22 22:49:31
421
原创 Linux下 java+tocmat环境搭建
1.需要下载java的JDK。 http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载压缩包:红色标注出来,根据自己实际情况来选择 在debian里面的usr目录下,新建java目录,通过ftp将jdk-8u91-linux-x64.tar.gz传到java目录下,解压文件(完成后,可直接删除) tar zx
2016-05-17 11:25:50
885
原创 查找算法
在查找算法中,有几种最为常见,分别是顺序查找,二分查找,分块查找,插补查找,二叉树查找。顺序查找顺序查找最为简单,就是一个一个的进行比较,找到匹配的那个。时间复杂度为O(n)。int Find::orderFind(int *a,int len, int key){ for (int i = 0; i < len;i++){ if (a[i] == key)
2016-05-12 23:34:21
518
原创 Linux 多线程
实例先看一个多线程编程的实例,一般我们的程序只有一个线程,但是在许多大型的编程中,往往涉及到多线程编程的问题,例如Android操作系统里面对于复杂耗时的操作通常在其他线程中完成。 Linux系统下的多线程遵循POSIX标准。编写Linux下的线程需要包含头文件pthread.h,在生成可执行文件的时候需要链接库libpthread.a或者libpthread.soLinux下线程创建函数pthr
2016-05-05 17:26:41
1590
原创 Linux 进程通信
Linux的进程操作方式主要有产生进程、终止进程,并且进程之间存在数据和控制的交互,即进程间通信和同步。进程的产生过程进程的产生有多种方式,其基本过程是一致的。 (1)首先复制其父进程的环境配置。 (2)在内核中建立进程结构。 (3)将结构插入到进程列表,便于维护。 (4)分配资源给此进程。 (5)复制父进程的内存映射信息。 (6)管理文件描述符和链接点。 (7)通知父进程。• 进程的
2016-05-05 17:06:18
1790
原创 数据结构(栈,队列,链表,二叉树)
栈栈作为一种数据结构,用途十分广泛。在回调函数等许多场景中都有应用。我们需要了解它的基本用途,那就是先进后出和队列的先进先出正好相反。最近在学习数据结构和算法,于是自己来实现。我特别喜欢C语言的指针,我发现很好用,于是用C++来实现一个简单的范例。 主要实现就是函数就是Pop,Push Push将数据放到一个到顶层位置。 Pop将数据从已有的数据中取出来。 Stack.h文件,主要描述里面的
2016-05-04 17:03:53
5425
原创 排序算法(不断更新)
今天发现算法还是挺有意思的,可以锻炼脑袋,有时还是听考验脑力的。排序算法冒泡排序法: 冒泡排序法最为核心的部分,就是交换数据,每次进行相邻数据的比较,条件成立的时候,交换位置,直到所有数据全部排完为止。/*冒泡排序法 n^2首先遍历每个元素在将这个元素和前面的每一个元素进行比较大小不同进行交换,*/void BubbleSort(int a[], int n){ int i,
2016-05-04 11:07:22
451
转载 Activity生命周期
我们来看一下这一张经典的生命周期流程图: 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂
2016-04-29 21:15:00
410
原创 Android 小游戏 2048
昨晚看到android的编程小游戏视频,一时兴起,就看了下,觉得介绍的好简单,觉得自己也可以试试,然后就尝试嘛,也是一个不错的体验。 编程就是拿来玩的,娱乐精神,服务精神,这就是coder的使命。activity_main.xml 布局文件:GameView就是自定义的布局控件<?xml version="1.0" encoding="utf-8"?><RelativeLayout x
2016-04-28 00:02:56
736
1
原创 Android 技术总结(不断更新)
下载文件Andorid的下载通过开启下载服务在后台执行,通过下载器来进行管理,通过下载请求来执行请求,在通过调用enqueue方法来下载,下载完成后,会发送一个广播,这个广播为ACTION_DOWNLOAD_COMPLETE,下载完成后接收到。 //设置下载服务 String servicestring = Context.DOWNLOAD_SERVICE;
2016-04-23 21:41:16
693
原创 Android练习项目 Mp3播放器实现 歌词同步播放(四)
其实到后面就需要我们如何显示歌词,对于歌词的同步显示还是比较好实现的,主要通过判断当前播放的时间和每个结点的歌词的时间的大小,来同步对应到结点的数据,现在就是如何来实现这个问题。其实,这个时候就需要自定义控件来实现。 第一步需要自定义View的属性。 第二步需要实现在View的构造方法中获得我们自定义的属性。 主要通过初始化函数,init() 第三步,重写ondraw函数。LrcView.j
2016-04-22 17:03:47
8816
2
原创 Android练习项目 Mp3播放器实现 歌词解析(三)
这是系列博客的第三篇,这一篇主要讲讲如何实现lrc歌词的解析,这个对于很多mp3的播放的同时看到歌词,十分重要。这也是其中比较重要的功能。那就需要首先看下lrc文件的基本构造,这样才能够按照固定的规律去解析。[ar:许嵩] [ti:半城烟沙] [00:00.79] 《半城烟沙》[00:04.20] 词/曲/制作人/演唱:许嵩[00:08.42] 和声编写/和声:许嵩[00:11.62] 录
2016-04-20 23:57:44
2654
原创 Android练习项目 Mp3播放器实现(二)
在经过几天的折腾之后,迎来了Mp3播放器的第二篇博客,这篇文章主要将如何实现播放器的播放,下一首,上一首,顺序播放,循环播放,随机播放,单曲循环等操作。 其实操作的过程中主要是通过参数的传递来实现功能的。 在activity里面互相传参有很多中方法,但对于activity和service进行交互有些方法并不适合,通过对Broadcast和BroadcastReceiver等操作,来控制播放的实现
2016-04-19 15:50:53
4737
1
原创 Android 练习项目 ——简单记账软件的实现
一、需求分析在我们生活中经常不知道钱花在什么地方,但是我们自己又不是很想写在记账本上进行管理,由于智能手机的兴起,手机离我们越来越近,导致我们生活时时刻刻都有手机的存在,所以说手机的操作离我们越来越近,趋势越来越明显。但是对于记账,我们往往每个人都有自己的需求,所以对于自己来说,开发一个简单的软件来记账是个非常好玩且有趣的事情。所以自己趁着学习Android开发的机会,顺便做一个练习项目,本人小白
2016-04-18 17:27:00
41461
70
原创 Android练习项目 Mp3播放器实现(一)
对于Android的学习,需要掌握的东西有点多,需要我们认真,小心,不断的进取。前天突然有个想法,觉得Mp3播放器是一个可以练习的项目,于是在网上搜了下,发现有人已经写了博客,看了他们的博客后,我觉得他们说的一点很对,Mp3播放器基本用到了Android里面的许多知识点,做完这个过后,可能对于Android整个架构有了一定了解,我于是也想尝试下,于是准备边做,编写博客,来记录自己开发的过程,这个也许
2016-04-16 23:09:38
8688
4
原创 Android 自定义RecyclerView布局(一)
今天在优快云上面看博客的时候,发现了许多人发现升级版的listview控件的RecyclerView特别好用,好且功能强大,但本人现在菜鸟级别,学习Android不到一个月,参考大神的博客终于实现了一个简答的自定义布局文件。showplan.xml文件布局如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and
2016-04-12 23:53:36
803
原创 Linux C语言 UDP
UDP和Tcp模型差别不大,但是我也准备写个示范的例子,方便自己以后再学习。server.c#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <time.h>#include <string.h>#include <unistd.h>#include <stdio.h>#define
2016-04-10 16:24:14
1369
原创 Linux C语言 网络编程(二) 服务器模型
前面介绍了关于连接linux服务端方式,但是服务端的资源是有限的,所以我们通常需要重新思考,设计一套服务器模型来处理对应的客户端的请求。第一种:并发服务器,通过主进程统一处理客户端的连接,当客户端连接过后,临时fork()进程,由子进程处理客户端请求,将连接请求和业务进行了分离。server.c#include <sys/types.h>#include <sys/socket.h>#inclu
2016-04-10 16:21:25
5231
原创 Android socket AsyncTask和linux服务端通讯
android 3以后,在UI主线程里面不能访问网络,因为访问网络可能导致程序崩溃,UI界面无法刷新,所以只有通过线程来完成,但对于线程许多人不是很清晰,而且代码会 很多,但是现在android提供了AsyncTask来处理异步任务。客户端代码:package com.test;import android.app.Activity;import android.os.AsyncTask;imp
2016-04-09 23:46:24
1788
原创 Linux C语言 网络编程(一)
TCP并发服务器的写法:server.c#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <time.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <sig
2016-04-09 21:52:01
3047
原创 Java 通过HttpClient Post方式提交json,并从服务端返回json数据
直接上代码吧,和前面几篇文章都差不多java代码:package PostPager;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util
2016-04-08 12:43:53
47192
原创 Java 通过HttpURLConnection Post方式提交json,并从服务端返回json数据
这个技术和xml差不过,主要是服务端代码稍微修改,客户端代码修改部分传递参数就可以完成,但在之前需要导入json所需要的jar包。 PostJson.java代码package PostPager;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import ja
2016-04-08 12:35:11
59136
1
原创 Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据
这里面简单介绍下,HttpURLConnection连接服务器,并返回数据客户端代码java代码:import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;public class PostXml { public stati
2016-04-08 11:42:15
13353
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人