我正在开发一个包含文本和录制音频的应用程序(在波斯语 - 波斯语中)。是否有任何API可以将这两者相互同步。有没有办法在播放音频时突出显示文本。
答案 0 :(得分:0)
我认为没有任何标准的api,因为它听起来像一种特定的功能。提供它的全面实施将是如此广泛,但是 尽管我可以给你一个研究方向,因为我认为这是一个很好的问题。
您应该为每个音频文件创建某种类型的字幕文件,例如srt,其中可分配的单词将与音频上的代词时间映射。之后,您应该在应用中parse that file创建一个<a class="one">One</a>
<a class="two">Two</a>
句点。因此,使用Map
回调,根据音频时间突出显示文本不会成为问题。此解决方案使您可以动态地向应用程序添加带字幕的音频文件。当然,您可以直接将字幕硬编码到您的应用程序中,如果您不需要这样的灵活性,请避免这种复杂的解析过程。
答案 1 :(得分:0)
我认为我来回答这个问题为时已晚,也是非常困难和耗时,但我建议你,但如果你有多个音频,如audio1,audio2,audio3等,你就是一个接一个地播放然后循环播放在Mediaplayer中,您可以通过保留文本记录来突出显示文本[如果在数组中]。例如,如果text1 [在数组中]然后播放audio1。我在listview中实现了这个:
mPlayer.start();
a++;
z=1;
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
if (a!=b+1) {
if(mPlayer != null) {
if(mPlayer.isPlaying()) {
mPlayer.stop();
}
mPlayer.reset();
}
try {
mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + a + ").mp3");
mPlayer.prepare();
quranlst.setFocusableInTouchMode(true);
quranlst.setSelection(z);
quranlst.requestFocus();
quranlst.getChildAt(z).setBackgroundColor(Color.WHITE);
} catch (Exception e) {
e.printStackTrace();
}
mPlayer.start();
a++;
z++;
其中z是文本位置。希望这会给你一些想法。