gpt4 book ai didi

android - 从 Android 上的 native 代码读取铃声文件

转载 作者:行者123 更新时间:2023-11-30 17:54:04 28 4
gpt4 key购买 nike

我一直在开发一个应用程序,它要求我从 native 代码播放适当的铃声。到目前为止我还没有找到解决我的问题的方法。是否有任何已知的方法可以获取铃声字节进行解码并在 OpenSL ES 上播放?

我目前的印象是,这些文件通常受到保护,并且需要 root 或其他一些可疑机制才能访问。这是正确的吗?

提前致谢。

最佳答案

我已经为这个问题找到了一个可行的解决方案,它涉及 1 个 JNI 调用来获取 ParcelFileDescriptor,以便获得可在 OpenSLES 上本地使用的适当 FD。只需记住保存 ParcelFileDescriptor 以便在最后关闭 FD 并且不会被垃圾收集。

注意:获取 FD 所需的 API 级别为 12

注2:如果您愿意,可以detachFd(),然后您必须在 native 代码上关闭FD,并且不需要保留引用。

static public ParcelFileDescriptor getFileDescriptor(Context context) {
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);

ContentResolver contentResolver = context.getContentResolver();

ParcelFileDescriptor openFileDescriptor;
try {
openFileDescriptor = contentResolver.openFileDescriptor(uri, "r");
} catch (FileNotFoundException e) {
return null;
}

return openFileDescriptor;
}

关于android - 从 Android 上的 native 代码读取铃声文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com