Java Android-创建循环垫音乐应用程序的信息
我想创建一个音乐循环垫,类似这样: 现在,我正在使用MediaPlayer播放声音。我有一个全局变量,它存储正在播放的第一个音频的当前时间(位置),当我按下另一个按钮时,相应的音频文件将在全局变量给定的位置开始播放 我的问题是:声音不同步 你能给我一些帮助吗?如何同步声音?喜欢这个应用吗 你能告诉我一些关于如何创建循环焊盘的信息或教程吗 谢谢Java Android-创建循环垫音乐应用程序的信息,java,android,audio,synchronization,Java,Android,Audio,Synchronization,我想创建一个音乐循环垫,类似这样: 现在,我正在使用MediaPlayer播放声音。我有一个全局变量,它存储正在播放的第一个音频的当前时间(位置),当我按下另一个按钮时,相应的音频文件将在全局变量给定的位置开始播放 我的问题是:声音不同步 你能给我一些帮助吗?如何同步声音?喜欢这个应用吗 你能告诉我一些关于如何创建循环焊盘的信息或教程吗 谢谢 理查德编写这样的程序比你想象的要难。要使声音同步播放,您必须做以下两件事: 确保所有声音的节拍都相同,并且裁剪正确-这意味着声音剪辑的开始和结束必须完全
理查德编写这样的程序比你想象的要难。要使声音同步播放,您必须做以下两件事:
Timer beatTimer;
boolean isDrumLoopEnabled;
boolean isDrumLoopCurrentlyPlaying;
Sound drumloop;
public void startMusic(){
//prepare timer
beatTimer=new Timer();
beatTimer.interval=500;//for 120 bpm
beatTimer.onTick+=onTickHandler;
isDrumLoopPlaying=false;
isDrumLoopCurrentlyPlaying=false;
//load sounds
Sound drumloop=new Sound("/storage/emulated/drumloop.ogg");
//start music
beatTiemr.start();
}
//this method will run on every beat:
public void onTickHandler(){
if(isDrumLoopEnabled){
//make sure drum loop isn't already playing
if(!isDrumLoopCurrentlyPlaying){
//begin looping drumloop in background
drumloop.startloop();
isDrumLoopCurrentlyPlaying=true;
}
}else{
if(isDrumLoopCurrentlyPlaying){
//stop playing drumloop
drumloop.stopPlaying();
}
}
}
//when the button is pressed...
public void drumloop_buttonpressed(){
//this will toggle whether to play the drum loop:
isDrumLoopEnabled=!isDrumLoopEnabled;
}