- 博客(31)
- 资源 (1)
- 收藏
- 关注
转载 Android系统权限和root权限
1. Android权限说明 Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,Android系统权限相关的内容,(一)linux文件系统上的权限-rwxr-x--x system system 4156 2012-06-30 16:12 test.apk. 代表的是相应的用户/用户组及其他人
2012-11-28 17:04:55 15522
转载 snd_pcm_ops
ALSA驱动主要是实现snd_pcm_ops中的相关函数。1. snd_pcm_ops接着我们看一下snd_pcm_ops结构体,该结构体的操作函数集的实现是本模块的主体。struct snd_pcm_ops { int (*open)(struct snd_pcm_substream *substream); int (*close)(struct
2012-11-27 17:44:25 6728
转载 alsa-lib如何解析asound.conf
1. 简介无论是在录音还是在放音,都要打开一个PCM流,具体对应的函数原型为:int snd_pcm_open(snd_pcm_t **pcmp, const char *name, snd_pcm_stream_t stream, int mode); 本文以录音为例介绍一下它的流程。录音时传入name==AndroidCapture 先解一下各个参数的函义:pcm
2012-11-27 16:18:22 9157
转载 open("/dev/dsp")函数调用流程 --OSS接口
open("/dev/dsp")==> sys_open==> soundcore_open (所有的fops以iminor为索引放在全局static struct sound_unit *chains[SOUND_STEP];中)==> snd_pcm_oss_f_reg.snd_pcm_oss_open/* * 下面是内核对soc_pcm_open函数的简短描述 * C
2012-11-27 11:45:53 4022
转载 snd_pcm_open打开流程
aplay.c==> main==> snd_pcm_open(&handle, pcm_name, stream, open_mode); // 打开一路pcm,刷新config配置如果是"default",同时type等于SND_CONFIG_TYPE_COMPOUND那么这里对应"empty"static const char *const build_in_pcms[] =
2012-11-27 09:22:33 23925 3
转载 Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_s
2012-11-26 16:59:50 2790
转载 Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介 在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理,
2012-11-26 15:23:13 2169
转载 Linux ALSA声卡驱动之六:ASoC架构中的Machine
1. 简介 前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必
2012-11-26 11:51:42 2403
转载 Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
1. ASoC的由来 ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动
2012-11-16 08:39:02 2170
转载 Linux ALSA声卡驱动之四:Control设备的创建
1. Control接口 Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的。 ALSA已经为AC97定义了完整的控制接口模型,如果你的
2012-11-15 14:51:16 2455
转载 Linux ALSA声卡驱动之三:PCM设备的创建
1. PCM是什么 PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输
2012-11-15 11:46:49 14204 1
转载 Linux ALSA声卡驱动之二:声卡的创建
1. struct snd_card 1.1. snd_card是什么 snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。正因为如此,本节中,我们也从 struct cnd_card开始吧。 1.2. sn
2012-11-15 11:23:56 2504
转载 Linux ALSA声卡驱动之一:ALSA架构简介 .
一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。 在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,
2012-11-15 09:49:57 2655
原创 如何编写Linux设备驱动程序
一、Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能: 1. 对设备初始化和释放。 2. 把数
2012-11-14 17:11:14 3611 1
转载 Android WiFi 应用程序例子
首先需要强调一点的是wifi只能在真机上测试! 在Android里,所有的wifi操作都在android.net.wifi包里,而常用的类也就只用几个,对于一般的开发人员来说,常用的操作也是有限的,不需要刻意的去记,用的时候现查就ok了,下面是《Android应用开发揭秘》里面关于wifi的范例,个人感觉还挺齐全,跟大家分享一下!package com.yarin.andro
2012-11-14 09:57:08 5866
原创 Android应用程序--获取待机、唤醒、关机、网络状态变化消息
1) 待机:广播消息:android.intent.action.SCREEN_OFF (代码)2) 唤醒:广播消息:android.intent.action.SCREEN_ON (代码)3) 关机:广播消息:android.intent.action.ACTION_SHUTDOWN (XML或代码)4) 网络状态变化: 广播消息:android.net.conn.C
2012-11-12 16:28:45 12007
转载 android 彻底关闭应用程序(back按键)
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下:1.@Override 2.
2012-11-12 12:54:20 8881
转载 Android中使用ALSA声卡及alsa.conf asound.conf
1. 配置文件总共有三个配置文件: 1) /system/usr/share/alsa/alsa.conf :它指定了另外两个配置文件的路径 2) /etc/asound.conf 3) .asoundrc可通过cat /proc/asound/cards查看当前系统有哪些声卡。 2. 第一步cd到Android源码树根目录下:cd /home/xxx/and
2012-11-08 12:04:58 15218
原创 Android系统--事件读取及分发
1. 简介 WindowManagerService分发事件是通过它的InputManager来完成的。 在初始化时,各部分状态如下: • InputManager.InputReader:正在睡眠等待事件的发生 • InputManager.InputDispatcher:正在等待InputReader从睡眠中醒过来并且唤醒它
2012-11-07 16:42:44 10537 1
转载 Android UI管理系统
Activity可以看做是整个android系统的人机接口,它提供了一个窗口来绘制UI,每个Activity在启动时,我们都需要给它设置一个Content view,作为Activity所呈现的UI内容,这个过程是通过setContentView()方法来实现的。 众所周知,android系统中强化了view的概念,主要是体现在对view的管理上,Android中的view以2种形态
2012-11-06 18:12:48 2484
原创 Activity启动分析
1. Activity简介 一个Activity是用户要做的一件单一工作。它包括与用户交互的所有功能,因此它负责创建Window,以便你通过setContentView放置你的UI。其所有派生类将实现以下两个方法: 1) onCreate:初始化你的activity,通常调用setContentView设置定义UI的资源,并且通过findViewById获取UI中的控件,以便程
2012-11-06 16:49:58 5463
原创 Android AIDL分析
1. AIDL接口 对于WindowManagerService,如果client需要访问它,需要通过AIDL接口来访问,其接口在IWindowManager.aidl中定义,ADIL接口在编译时将生成一个IWindowManager.java文件(此文件在out目录下),其主要相关代码如下: /** * System private interface to the wind
2012-11-06 16:14:32 8148 1
原创 Android4.x 如何处理Power按键
1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HOME)键做了处理,不会把这些键传送上层应用程序。如需要把这些键发送给Activity和Service,需要在PhoneWindowManager处理这些键时“发送一个广播出去,然后在
2012-11-03 15:53:21 33816 12
转载 Android修改源代码控制永不锁屏
锁定屏幕对于移动终端来说是非常有必要的,但是对于机顶盒产品就没有这个必要了。所以本文介绍一下怎样让Android设备永不锁屏。Android系统的锁屏时间存放在Setting数据库中,字段为Settings.System.SCREEN_OFF_TIMEOUT。查看SettingsProvider源码,查看如下文件的源码:frameworks/base/packages/SettingsPr
2012-11-03 15:25:58 6110 1
转载 android 获取正在运行的应用程序列表 .
PackagesInfo pi = new PackagesInfo(this); 02. 03. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 04. //获取正在运行的应用 05. List run = am.
2012-11-03 14:44:39 3122
转载 Android LockScreen
大体的思路:系统启动成功后SystemServer调用wm.systemReady()通知WindowManagerService,进而调用PhoneWindowManager,最终通过LockPatternKeyguardView显示解锁界面。当按Power键时,系统会像向外广播消息Intent.ACTION_SCREEN_OFF, 同样当在锁屏的情况下按Power键会向外广播Intent.AC
2012-11-03 14:42:47 3623 1
原创 Android睡眠唤醒机制--系统架构
一、简介 Android在Linux内核原有的睡眠唤醒模块上基础上,主要增加了下面三个机制: • Wake Lock 唤醒锁机制; • Early Suspend 预挂起机制; • Late Resume 迟唤醒机制; 其基本原理:当启动一个应用程序的时候,它可以申请一个wake_lock唤醒锁,每当申请成功之后都会在内核中注册一下(通知
2012-11-01 17:57:37 16661 1
原创 Android睡眠唤醒机制--HAL-->Kernel
一、Kernel与HAL接口分析 Kernel与HAL接口是通过/sys/power下面的一系统文件来实现的,如:/sys/power/state Kernel中/sys/power下的文件实现过程如下:1. sysfs的属性文件 在kernel/power/main.c中,定义了一组sysfs的属性文件: static struct att
2012-11-01 17:22:16 7555
转载 Android睡眠唤醒机制--Kernel态
一、简介 Android系统中定义了几种低功耗状态:earlysuspend、suspend、hibernation. 1) earlysuspend: 是一种低功耗的状态,某些设备可以选择进入某种功耗较低的状态,比如 LCD可以降低亮度或灭掉; 2) suspend: 是指除电源管理以外的其他外围模块以及cpu均不工作,只有内存保持自刷新的状态;
2012-11-01 14:47:06 32887
转载 Linux睡眠唤醒机制--Kernel态
一、对于休眠(suspend)的简单介绍 在Linux中,休眠主要分三个主要的步骤: 1) 冻结用户态进程和内核态任务 2) 调用注册的设备的suspend的回调函数, 顺序是按照注册顺序 3) 休眠核心设备和使CPU进入休眠态, 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文. 当这些进程被解冻的时候,他们是不知道自己被冻结过的
2012-11-01 11:54:10 15770
转载 Android驱动开发之earlysuspend睡眠模式--实现代码
(1)添加头文件:#include (2)在特定驱动结构体中添加early_suspend结构:#ifdef CONFIG_HAS_EARLYSUSPENDstruct early_suspend early_suspend;#endif(3)在驱动probe函数中注册相关early_suspend结构体:#ifdef CONFIG_HAS_EARLYSUSPEND
2012-11-01 11:34:57 11816
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人