0

我正在使用在 Eclipse 中构建的用于录音和使用 Giss.tv 服务器播放的应用程序。现在我已将该应用程序代码迁移到 Android Studio。在成功构建此应用程序之前,我遇到了很多错误。

现在,我的代码正在生成 apk,它正在模拟器和设备中打开。但是当我开始录制语音时,出现错误“不幸的是 xxx 已停止”并且应用程序被关闭。

当我检查 logcat 的错误和异常时,我得到以下异常-

01-14 11:51:22.875 3711-3775/com.vorbisdemo E/art: No implementation found for int org.xiph.vorbis.encoder.VorbisEncoder.startEncodingWithQuality(long, long, float, org.xiph.vorbis.encoder.EncodeFeed) (tried Java_org_xiph_vorbis_encoder_VorbisEncoder_startEncodingWithQuality and Java_org_xiph_vorbis_encoder_VorbisEncoder_startEncodingWithQuality__JJFLorg_xiph_vorbis_encoder_EncodeFeed_2)
01-14 11:51:22.875 3711-3775/com.vorbisdemo E/AndroidRuntime: FATAL EXCEPTION: Thread-175
                                                              Process: com.vorbisdemo, PID: 3711
                                                              java.lang.UnsatisfiedLinkError: No implementation found for int org.xiph.vorbis.encoder.VorbisEncoder.startEncodingWithQuality(long, long, float, org.xiph.vorbis.encoder.EncodeFeed) (tried Java_org_xiph_vorbis_encoder_VorbisEncoder_startEncodingWithQuality and Java_org_xiph_vorbis_encoder_VorbisEncoder_startEncodingWithQuality__JJFLorg_xiph_vorbis_encoder_EncodeFeed_2)
                                                                  at org.xiph.vorbis.encoder.VorbisEncoder.startEncodingWithQuality(Native Method)
                                                                  at org.xiph.vorbis.recorder.VorbisRecorder$AsyncEncoding.run(VorbisRecorder.java:512)
                                                                  at java.lang.Thread.run(Thread.java:818)

我有来自 VorbisRecorder.java 的代码(https://github.com/vincentjames501/libvorbis-libogg-android/blob/master/src/org/xiph/vorbis/recorder/VorbisRecorder.java

我试图检查(第 511 行)的输入值

case WITH_QUALITY:
                    result = VorbisEncoder.startEncodingWithQuality(sampleRate, numberOfChannels, quality, encodeFeed);
                    break;

和值如下所示 -

“sampleRate”=44100,“numberOfChannels”=2,“质量”=0.2,“encodeFeed”= org.xiph.vorbis.recorder.VorbisRecorder$OutputStreamEncodeFeed@19b5c49c

所以我不明白为什么这里会抛出异常,即使值似乎有效。

4

1 回答 1

0

startEncodingWithQuality是本机函数(请参阅此处),您的应用程序搜索本机实现但没有找到它。

不幸的是,我要告诉你一个坏消息:AndroidStudio 还不完全支持 NDK 开发。我认为你有两个选择:

  • 您将在此处找到有关如何使用实验性 Gradle 插件的教程。准备好 NDK 支持后,它应该可以工作了。

或者

于 2016-01-14T08:31:30.353 回答