Android 共享内存(ashmem)
项目中接入讯飞语音合成,在sdk中看到 MemoryFile,了解下用法发现,看到的只是冰山一角。
SharedMemory enables the creation, mapping, and protection control
over anonymous shared memory.
SharedMemory 启用对匿名共享内存的创建,映射和保护控制。
简单用法:将data数组内容写入到sd卡上。
MemoryFile memFile=nullprivate void writeToFile(byte[] data) throws IOException {if (data == null || data.length == 0)return;try {if(memFile == null){Log.e("MscSpeechLog_","ffffffffff");String mFilepath = Environment.getExternalStorageDirectory()+"/1.pcm";memFile = new MemoryFile(mFilepath,1920000);memFile.allowPurging(false);}memFile.writeBytes(data, 0, (int)mTotalSize, data.length);mTotalSize += data.length;} finally {}
}
看到上面内容一脸蒙,内存共享解决的是跨进程高效数据交换问题,通过MemoryFile进行byte[]转文件操作,就这这?
至少应该有跨进程吧。
翻看sdk没看到Aidl,大概率so文件中。
用工具看下so中是否有相关方法如图:找到两个speech 语音合成相关函数。
看了一通blog,没有明白 MemoryFile的使用
引用:
https://developer.android.com/reference/android/os/SharedMemory SharedMemory
https://blog.csdn.net/WAN_EXE/article/details/56484664 共享内存(Shared Memory)介绍 Linux
https://www.jianshu.com/p/d9bc9c668ba6 Android匿名共享内存(Ashmem)原理
https://blog.csdn.net/goodlixueyong/article/details/53151959 Android匿名共享内存和MemoryFile