我正在使用音频轨道以流模式播放不同的声音。 我想知道是否有方法知道每个声音的生命/结束时间。AudioTrack - 如何知道声音何时开始/结束?
我创建的音轨是这样的:
AudioTrack tmpAudioTrack = new AudioTrack(
STREAM_TYPE,
SAMPLE_RATE,
CHANNEL_CONFIG_TYPE,
AUDIO_FORMAT_TYPE,
getOptimalBufferSize(),
AUDIO_TRACK_MODE);'
,并在后台线程启动:
backround_thread = new Thread(new MyRunnable(aTrack));
backround_thread.start();
我写的每一个声音这样可运行的内部:
byte generatedSnd[] = new byte[2 * beepSamples];
<code for filling the buffer with sound here>
int bytesWritten = track.write(generatedSnd, 0, generatedSnd.length);
可以使用任何AudioTrack API,例如setNotificationMarkerPosition或setLoopPoints或se tPositionNotificationPeriod完成此任务吗?他们是如何工作的?
每个声音可以是不同的持续时间。我认为这是关键。
我不完全理解这些API的文档。每个框架与样本相同吗?如何为每个声音开始/结束的位置指定一个标记?
谢谢,
至少有人知道setNotificationMarkerPosition和setPositionNotificationPeriod之间的区别吗? – mikemeli