我目前有一个字节数组形式的PCM音频.格式是16位小端的签名.我想将它转换为Android上的一些可播放格式,最好是版本3.2或更高版本.有人建议如何做到这一点?我做了一些研究并尝试了下面的内容,但都没有成功.如果有人能提出更好的方法或指出我出错的地方,我们将不胜感激.
我尝试使用正确的音频设置创建AudioFormat,但Android不支持javax.sound.sampled库.
我也尝试将PCM数据写入wave文件,但是我遇到了所有必要的wav头信息.
我也尝试使用Android提供的AudioTrack类来播放PCM数据.但是,我似乎听不到任何声音.这是我的方法:
public void playback(){
try{
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 500000, AudioTrack.MODE_STATIC);
audioTrack.write(audio, 0, 500000);
} catch(Throwable t){
Log.d("Audio","Playback Failed");
}
}
Run Code Online (Sandbox Code Playgroud)
任何建议,将不胜感激.
我是初次使用Proguard和Dagger的Android应用程序,所以如果有人能给我一些指示,我真的很感激.
Proguard和Dagger已在应用程序中实现.当通过调试模式安装应用程序(即从Eclipse推送)时,运行应用程序没有问题.但是,当我运行应用程序的发布版本时,它崩溃了以下跟踪:
No injectable members on com.example.test.d. Do you want to add an injectable constructor? required by com.example.test.d com.example.test.SampleActivity.a
No injectable members on com.b.a.b. Do you want to add an injectable constructor? required by com.b.a.b com.example.test.SampleActivity.b
at dagger.internal.h.a(ThrowingErrorHandler.java:34)
at dagger.internal.Linker.a(Linker.java:136)
at dagger.d.a(ObjectGraph.java:264)
at dagger.d.a(ObjectGraph.java:238)
at com.example.test.SampleApplication.a(SampleApplication.java:24)
Run Code Online (Sandbox Code Playgroud)
我已按照以下建议进行操作:https://plus.google.com/108620120050432268974/posts/AAjvwg3Hmgg,将以下内容实施到proguard-project.txt中:
-keep class * extends dagger.internal.Binding
-keep class * extends dagger.internal.ModuleAdapter
-keep class * extends dagger.internal.StaticInjection
Run Code Online (Sandbox Code Playgroud)
但它似乎没有解决问题.建议?提前致谢.