首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OpenSL添加到安卓

将OpenSL添加到安卓
EN

Stack Overflow用户
提问于 2017-09-18 17:23:28
回答 1查看 556关注 0票数 2

我对NDK和OpenSL非常困惑,我正在尝试将OpenSL添加到我的项目中。并且有一些问题。当我创建ndk项目时-我没有文件Android.mk,但我有CMakeList

在教程中,到处都在谈论android.mk,其中需要编写一个字符串来实现OpenSL到项目。

这里是我的build.graddle(模块)文件

代码语言:javascript
复制
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path 'CMakeLists.txt'
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:26.+'
}

CMakeList.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.4.1)
add_library( # Specifies the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             src/main/cpp/native-lib.cpp )

             # Specifies a path to native header files.
             include_directories(src/main/cpp/include/)

             # Include libraries needed for native-audio-jni lib
             target_link_libraries(native-audio-jni
                                   android
                                   log
                                   OpenSLES)

一个简单的ndk测试

代码语言:javascript
复制
#include <jni.h>
#include <string>

extern "C"
JNIEXPORT jstring JNICALL
Java_ndk_test_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

调用函数stringFromJNI是正常的,我在日志中看到这一行。但主要的问题是我做错了什么。如何在没有Android.mk的情况下实现OpenSL

在google.devandroid部分,它的tell add LOCAL_LDLIBS += -lOpenSLES to android.mk In tells讲述了关于Android.mk的所有内容。但我没有这份文件。有什么可以帮我的吗?在goolink to example示例中

EN

回答 1

Stack Overflow用户

发布于 2017-09-29 21:23:26

我建议将此添加到源文件或.h文件中:

代码语言:javascript
复制
#include "OpenSLES.h"
#include "OpenSLES_Android.h"
#include "OpenSLES_AndroidConfiguration.h"

我的解决方案基于这个示例:https://android.googlesource.com/platform/system/media/+/bd2fc031926582ee8b0df40673c66dfa4cc45a61/opensles/tests/examples/slesTestRecBuffQueue.cpp

在CMakeList.txt中:

代码语言:javascript
复制
target_link_libraries(
                      android
                      OpenSLES)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46275819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档