新的Android开发人员,请按照http://audioprograming.wordpress.com/2012/10/18/a-simple-synth-in-android-step-by-step-guide-using-the-java-sdk/
上的音频编程教程进行操作我遇到的问题是我的AudioTrack对象调用play()无法解析/编译。我注意到,如果我将方法调用放在条件中,它就可以解决了。这里发生了什么?这一切都在一个Thread中进行,顺便说一句......
更新,已解决: 问题是AudioTrack实例化发生在Thread声明中,而不是在Thread的run()方法中。在run()方法中移动代码解决了这个问题。谢谢你的建议...
//calculate the size of buffer we need for audiotrack based on sample rate...
int buffsize = AudioTrack.getMinBufferSize(
sr, //int 44100
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT);
//create an audiotrack object.
AudioTrack myTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
sr,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffsize,
AudioTrack.MODE_STREAM);
//start audio
myTrack.play(); //cannot resolve symbol 'play'
if(1) {
myTrack.play(); //no problem resolving symbol 'play'
}
我尝试过清理,重建,重新启动gradle,然后重新启动Android Studio ......没有骰子。
任何建议都会非常感激,我意识到我很可能会遗漏一些基本的东西......谢谢!
编译器输出:
Error:Error:line (41)<identifier> expected
Error:Error:line (53)illegal start of type
Error:Error:line (53)<identifier> expected
Error:Error:line (61)<identifier> expected
Error:Error:line (62)<identifier> expected