Android 基于系统音频内录(不采用AudioRecoder,基于AOSP 7.1系统)

 PS :在网上找了很多系统内录的功能帖子,都是基于AudioRecoder 然后加系统签名。。。

这种方法在真机上没有测试过,不知道可不可行。但是这种方案对于虚拟设备,是肯定不行的,因为虚拟设备没有对应的硬件驱动,所以是肯定取不到的。

那么就的从系统里面去截取。

直接上代码:

在framework的audiofliger中去截取:

在  aosp/frameworks/av/services/audioflinger/Thread.cpp中:

ssize_t framesWritten = mNormalSink->write((char *)mSinkBuffer + offset, count);
        ATRACE_END();
        if (framesWritten > 0) {
            bytesWritten = framesWritten * mFrameSize;
        } else {
            bytesWritten = framesWritten;
        }
        /*int tmpFd = open("/data/misc/audioserver/AudioFlinger.pcm", O_WRONLY | O_APPEND);
        if ( tmpFd < 0 ) {
            ALOGE("Creat AF dump file failed!");
        } else {
            write(tmpFd, (char *)mSinkBuffer + offset, bytesWritten);
            close(tmpFd);
       }*/

其中 (char *)mSinkBuffer + offset  即每一个声音帧 , bytesWritten  就是长度

猜你喜欢

转载自blog.csdn.net/qq_33023933/article/details/109050733
今日推荐