如何使用Android-NDK从本地代码中直接访问资源(如声音、图像等)?

 2023-01-20    243  

问题描述

我想知道如何从本机代码(即C ++文件)直接访问图像,声音文件等资源.实际上,我正在寻找可以帮助我使用asset_manager_jni.h方法的任何示例.

寻找建议.预先感谢.

如何使用Android-NDK从本地代码中直接访问资源(如声音、图像等)?

with with.

atul prakash singh

推荐答案

好吧,您可以访问stdio.h.因此,如果它位于已知的地方(例如在SD卡上),则可以将其用作路径.网上有很多关于使用stdio的教程(fopen,fclose等).

问题是,您将资源捆绑到APK本身(在RES/RAW或资产中),在安装后,请留在APK内.更糟糕的是,默认情况下,它们将被压缩,这使得阅读不可行.可以避免这种情况,最简单的方法是将资产重命名为.mp3扩展程序(或者还有其他).原因是因为默认情况下,.mp3不被压缩,无论它是否实际是mp3文件).您还可以使用其他扩展名,以及如果您不喜欢在末尾使用.mp3命名所有资产,则可以告诉工具不要压缩数据.

所以,您在这里有一些选择:

  1. 在您的第一次运行中从网上下载您的资源,将它们放在一个不引人注目的地方(最好是在下载时从SDK中获取该路径),然后使用它.

  2. 将您的资源存储在APK中(请记住.mp3扩展名,在资产文件夹中).在您的第一次运行中,将资产提取到您可以访问的文件夹中(并且不会惹恼用户),然后使用其中的资源.

  3. (我要做的)将您的资源存储在APK(再次.mp3)中,并使用JNI直接从APK读取.是的,JNI有点慢,但是无论如何,您都不应该从文件系统中读取很多内容,当然也不应该在绩效关键点上读取. NVIDIA有一些非常有用的代码,您可以找到它在这里,它在示例中如果我记得的话,代码.在Libs文件夹中,您可以使用与STDIO相匹配的好的通用库,除了它也从APK本身读取.

其他推荐答案

我确实使用过这个技巧:

mv $file lib/lib%${file}.so

以上所述是小编给大家介绍的如何使用Android-NDK从本地代码中直接访问资源(如声音、图像等)?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26160.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。