通过字符串将wav数据从Java发送到Cpp

Send wav data to from Java to Cpp via string

本文关键字:Java Cpp 数据 字符串 wav      更新时间:2023-10-16

我需要能够将wav文件发送到android中的后台进程,该进程正在从不同的包运行我的音频插件代码:三星音频SDK。

后台进程的唯一接口是发送字符串 - 因此解决方案似乎是在 Java 中将 wav 转换为字符串,然后在 cpp 中再次加载它。wavs 的格式可以固定(它不需要考虑所有可能的参数)

解决这个问题

的好方法是什么? 另外,以这种方式发送一个巨大的字符串是否有任何问题(即我应该将其分解成块吗?

你应该放一个字符来分隔每个值,这样你就可以通过拆分它来轻松解析另一端的字符串,例如 "1,2,3" -> split on "," = "1" "2" "3"

在您的情况下,我会首先尝试发送整个内容,看看是否有任何问题。如果没有...很好,否则按大小将整个字符串分成几部分,但保持可以轻松拆分值的方式。此外,您应该注意字符串的编码在两端相等,否则您将遇到问题。

我从三星网站的常见问题解答部分找到了一种方法来做到这一点

  1. 将文件从java复制到"getApplicationInfo().dataDir"指向的目录。 我在使用此方法时遇到问题,因为我没有将文件设置为可读(例如 outFile.setReadable(true,false);

  2. 您可以通过执行以下操作来读取文件(如果您的包 example.com):

    void readFile() {
        FILE* fp = fopen("/data/data/example.com/file_test_1.txt","r+");
        if(fp!=NULL)
        {
            // do something
            fclose(fp);
        }
    }