- 博客(60)
- 收藏
- 关注
原创 Binder学习资料整理
Android深入浅出之Binder机制Android进程间通信(IPC)机制Binder简要介绍和学习计划浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路Android系统进程间通
2016-06-16 10:49:06
635
原创 Audio笔记之重采样
AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTracks_l( Vector > *tracksToRemove){ mAudioMixer->setParameter( name, Audi
2016-01-24 20:04:54
3155
转载 如何编写LINUX设备驱动程序
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。以下的一些文字主要来源于khg,johnsonm的Write linux
2016-01-19 10:27:34
1103
1
原创 ALSA用户空间之TinyAlsa
TingAlsa在android source code的目录为external/tinyalsa。具体编译脚本如下,使用mmm external/tinyalsa/ 命令可以build出一个动态库libtinyslas.os,提供接口给audio_hw调用;三个可执行文件tinyplay/tinymix/tinycap,提供给开发者的调试工具;tinymix: 查看配置混
2016-01-17 15:47:50
7319
转载 Android音频底层调试-基于tinyalsa
由于Android中默认并没有使用标准alsa,而是使用的是tinyalsa,所以就算基于命令行的测试也要使用libtinyalsa。Android系统在上层Audio千变万化的时候,可以能这些个工具实时查看到,比如音频通道的切换等等. 1.编译tinyalsa配套工具$ mmm external/tinyalsa/编译完后会产生tinyplay/tinymix/tinycap等等
2016-01-17 13:00:52
1598
原创 AAC
/** * \brief This structure gives information about the currently decoded audio data. * All fields are read-only. */typedef struct{ /* These five members are the only really relevant one
2016-01-13 11:01:20
1065
原创 Audio笔记之AudioPlayer流程
status_t AwesomePlayer::play_l() { modifyFlags(SEEK_PREVIEW, CLEAR); if (mFlags & PLAYING) { return OK; } if (!(mFlags & PREPARED)) { status_t err = prepare_l();
2015-02-01 15:46:38
5559
1
转载 Android平台Log输出规范
1、 目的:为了规范软件工程师在android代码编写过程中输出Log的行为,使得发布的产品中打印的Log是必须的,打印的Log的级别是能真实反映此Log对应的级别,标签、Log内容具有很好的可读性。2、 适用范围android平台java、c++、c代码编写。3、 Log的调用及等级介绍(1)、Log的等级有Verbose,Debug,Info,Warn,Error。
2015-01-31 17:36:39
1452
转载 安卓开发之常见死机问题--log分析
一般在平时工作中,基本上很多代码可以在eclipse+ndk进行调试,但如果需要用到具体的硬件设备,如媒体播放设备无法模拟的情况下,只能上硬件(盒子或手机)上进行调试。此时唯一的调试手段就是logcat产生log信息进行分析问题了。 什么时候会有Log文件的产生 ?一般在如下几种情况会产生log文件 。 1、程序异常退出 uncaused exception 2、程序强制关闭 F
2014-12-13 16:23:52
999
转载 浅谈ANR及log分析ANR
一:什么是ANRANR:Application Not Responding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10 seconds)BroadcastReceiver在
2014-12-13 16:09:14
857
转载 Android调试方法
Android调试方法 1 dump虚拟内存 cat /proc/xxxx/maps 虚拟内存的位置可能有如下地方: -内核的defconfig文件 -build/core/prelink-linux-arm.map -build/tools/apriori/prelinkmap.c -bionic/linke
2014-12-13 15:26:26
813
转载 Measuring kernel latencies to ensure real-time constraints
Device drivers in the kernel often need to perform some task in response to some events. To do this, there is not one but many different ways. These deferred execution methods include the Linux workqu
2014-12-13 14:34:17
901
转载 Android Tombstone/Crash的log分析和定位
有一句话叫做常在河边走,哪有不湿鞋。我们这些研究和开发Android的工程师正应了这句话,相必大家在调试的时候经常会遇到这么个东西吧*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***Build fingerprint: 'XXXXXXXXX'pid: 1658, tid: 13086 >>> system_s
2014-12-13 14:04:15
866
转载 Android 调试中 addr2line 工具的使用
我们在解bug的时候经常能碰到一些段错误。下面是我从一个bug的log中截取的一个段错误:////////////////////////////////////////////////////////////////////////////////////////////////////// 08-19 19:08:27.132 2105 2105 I DEBUG
2014-12-13 13:53:35
2176
原创 Audio笔记之AudioSystem::getOutput
audio_io_handle_t AudioSystem::getOutput(audio_stream_type_t stream, uint32_t samplingRate, audio_format_t format,
2014-12-07 02:11:58
3076
原创 Audio笔记之耳机插拔检测
System Server是Android系统的核心,他在Dalvik虚拟机启动后立即开始初始化和运行。其它的系统服务在System Server进程的环境中运行。在main函数中,首先检查系统时间设置和SamplingProfiler。然后加载一个叫android_servers的本地库,他提供本地方法的接口(源程序在framework/base/services/jni/目录中)。然后调用
2014-12-07 01:40:50
5715
原创 Audio笔记之MediaPlayerService:prepare
status_t MediaPlayer::prepare(){ ALOGV("prepare"); Mutex::Autolock _l(mLock); mLockThreadId = getThreadId(); if (mPrepareSync) { mLockThreadId = 0; return -EALREADY;
2014-12-01 00:04:11
924
原创 Audio笔记之MediaPlayerService启动
int main(int argc, char** argv){ signal(SIGPIPE, SIG_IGN); char value[PROPERTY_VALUE_MAX]; bool doLog = (property_get("ro.test_harness", value, "0") > 0) && (atoi(value) == 1); pid_t
2014-11-16 15:10:01
1478
原创 Audio笔记之ServiceManager
我们知道,Service Manager在Binder机制中既充当守护进程的角色,同时它也充当着Server角色,然而它又与一般的Server不一样。对于普通的Server来说,Client如果想要获得Server的远程接口,那么必须通过Service Manager远程接口提供的getService接口来获得,这本身就是一个使用Binder机制来进行进程间通信的过程。而对于Service Man
2014-11-16 13:44:38
667
原创 Audio笔记之MediaPlayerService:setDataSource
MediaPlayer mp = new MediaPlayer();mp.setDataSource(PATH_TO_FILE); ...... (1)mp.prepare(); ........................ (2)、(3)mp.start(); .......................... (4)
2014-11-15 22:00:30
1778
原创 Audio笔记之SoftAAC2
SoftAAC2::SoftAAC2( const char *name, const OMX_CALLBACKTYPE *callbacks, OMX_PTR appData, OMX_COMPONENTTYPE **component) : SimpleSoftOMXComponent(name, callbacks, a
2014-11-05 10:34:19
4143
原创 Audio笔记之AudioEffect
public AudioEffect(UUID type, UUID uuid, int priority, int audioSession) throws IllegalArgumentException, UnsupportedOperationException, RuntimeException { int[] id = n
2014-11-01 22:55:36
2975
原创 Audio笔记之EffectChain::process_l
void AudioFlinger::EffectModule::process(){ Mutex::Autolock _l(mLock); if (mState == DESTROYED || mEffectInterface == NULL || mConfig.inputCfg.buffer.raw == NULL || m
2014-10-31 21:18:13
1693
原创 Audio笔记之AudioFlinger::AsyncCallbackThread
AudioFlinger::AsyncCallbackThread::AsyncCallbackThread( const wp& playbackThread) : Thread(false /*canCallJava*/), mPlaybackThread(playbackThread), mWriteAckSequence(0),
2014-10-28 15:26:39
1315
原创 Audio笔记之MixerThread::threadLoop_mix
void AudioMixer::process(int64_t pts){ mState.hook(&mState, pts);}
2014-10-28 11:17:55
2242
原创 Audio笔记之PlaybackThread::threadLoop
bool AudioFlinger::PlaybackThread::threadLoop(){ Vector > tracksToRemove; standbyTime = systemTime(); // MIXER nsecs_t lastWarning = 0; // DUPLICATING // FIXME could this b
2014-10-27 17:32:54
6458
原创 Audio笔记之AudioTrack::play
public void play() throws IllegalStateException { if (mState != STATE_INITIALIZED) { throw new IllegalStateException("play() called on uninitialized AudioTrack."); }
2014-10-27 17:19:29
3911
原创 Audio笔记之AudioTrack::write
public int write(byte[] audioData, int offsetInBytes, int sizeInBytes) { if (mState == STATE_UNINITIALIZED) { return ERROR_INVALID_OPERATION; } if ( (audioData ==
2014-10-27 17:08:15
6653
原创 Audio笔记之Track::attachAuxEffect
status_t AudioTrack::createTrack_l( audio_stream_type_t streamType, uint32_t sampleRate, audio_format_t format, size_t frameCount, audio_output_flags_t flags,
2014-10-22 18:04:14
2446
1
原创 Audio笔记之AudioTrackThread
{ // initialize the native AudioTrack object switch (memoryMode) { case MODE_STREAM: //STREAM模式,现在没有申请共享内存,后续Track对象通过 //AudioFlinger中的Client对象申请heap空间给mCblk进行数据传输
2014-10-22 09:09:56
10220
原创 Audio笔记之AudioTrack
/*cts/tests/tests/media/src/android/media/cts*/ public voidtestSetStereoVolumeMax() throwsException { final String TEST_NAME= "testSetStereoVolumeMax"; final int TEST_SR =22050
2014-10-21 20:55:13
7886
原创 Audio笔记之MixerThread::prepareTracks_l
// prepareTracks_l() must be called with ThreadBase::mLock heldAudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTracks_l( Vector > *tracksToRemove){ mixe
2014-10-20 23:58:05
3503
原创 Audio笔记之FastMixer
// FastMixer线程,负责进行mix fast track,从MonoPipe中获取数据,经过mix运算,输出到AudioStreamOutSink中 bool FastMixer::threadLoop() { static const FastMixerState initial; const FastMixerState *previous = &in
2014-10-20 17:11:53
5818
原创 Audio笔记之AudioFlinger::createTrack
static volatile int32_t nextTrackId = 55;// TrackBase constructor must be called with AudioFlinger::mLock heldAudioFlinger::ThreadBase::TrackBase::TrackBase( ThreadBase *thread,
2014-10-20 11:32:02
5715
原创 Audio笔记之MixerThread
AudioFlinger::PlaybackThread::PlaybackThread(const sp& audioFlinger, AudioStreamOut* output, audio_io_handle_t
2014-10-19 17:09:45
2480
原创 Audio笔记之AudioMixer
// Ensure mConfiguredNames bitmask is initialized properly on all architectures.// The value of 1 = 32.AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate, uint32_t maxNumTracks)
2014-10-19 15:52:33
2505
转载 Android安全——权限机制
Android权限说明Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,Android系统权限相关的内容,(一)linux文件系统上的权限-rwxr-x--x system system 4156 2012-06-30 16:12 test.apk.代表的是相应的用户/用户组及其他人对此文件的访问权限,与
2014-06-14 21:17:54
2333
转载 Android安全——Root机制
怎样使androidapk 获取system权限最近在回答客户的问题时,提到怎么将apk 升级到root权限。 1.一般权限的添加一般情况下,设定apk的权限,可在AndroidManifest.xml中添加android:sharedUserId="android.uid.xxx>例如: 给apk添加system权限 ... ... android:sh
2014-06-14 20:26:04
1846
转载 Android安全——签名机制
Android签名机制 为了说明APK签名比对对软件安全的有效性,我们有必要了解一下Android APK的签名机制。为了更易于大家理解,我们从Auto-Sign工具的一条批处理命令说起。在《APK Crack》一文中,我们了解到,要签名一个没有签名过的APK,可以使用一个叫作Auto-sign的工具。Auto-sign工具实际运行的是一个叫做Sign.bat的批处理命令。用文本编辑
2014-06-14 18:06:58
1497
转载 Android系统启动流程 -- android
第三部分:Android启动 Android的启动过程是从进程init开始的,所以它是后续所有进程的祖先进程。一、init进程源码位于system/core/init目录。主要做了以下事情:1. 重新设置子进程终止时信号SIGCHLD的处理函数。act.sa_handler = sigchld_handler; //调用了wait函数等待子进程退出。act.
2014-06-14 12:10:06
784
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人