Java 如何在android studio中设置音频延迟?
我对这段代码的问题是,我的所有音频文件在同一时间播放。我正在尝试创建一个应用程序,根据您在EDITTEXT中键入的内容播放计算出的歌曲。我需要一种方法来延迟后续的每个音符一定的时间,以便它像一首歌一样播放。。。有没有办法在没有更多案例陈述的情况下做到这一点 我的java代码:Java 如何在android studio中设置音频延迟?,java,android,string,audio,delay,Java,Android,String,Audio,Delay,我对这段代码的问题是,我的所有音频文件在同一时间播放。我正在尝试创建一个应用程序,根据您在EDITTEXT中键入的内容播放计算出的歌曲。我需要一种方法来延迟后续的每个音符一定的时间,以便它像一首歌一样播放。。。有没有办法在没有更多案例陈述的情况下做到这一点 我的java代码: public class MainActivity extends Activity { EditText edit; Button button; @Override protected void onCreate
public class MainActivity extends Activity {
EditText edit;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.box);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String string = edit.getText().toString();
char arr[]=string.toCharArray();
for(int i=0;i<arr.length;i++){
switch (arr[i]) {
case 'a':
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), sample);
mp.start();
break;
case 'b':
MediaPlayer mp1 = MediaPlayer.create(getApplicationContext(), sample1);
mp1.start();
break;
case 'c':
MediaPlayer mp2 = MediaPlayer.create(getApplicationContext(), sample2);
mp2.start();
break;
case 'd':
MediaPlayer mp3 = MediaPlayer.create(getApplicationContext(), sample3);
mp3.start();
break;
case 'e':
MediaPlayer mp4 = MediaPlayer.create(getApplicationContext(), sample4);
mp4.start();
break;
case 'f':
MediaPlayer mp5 = MediaPlayer.create(getApplicationContext(), sample5);
mp5.start();
break;
case 'g':
MediaPlayer mp6 = MediaPlayer.create(getApplicationContext(), sample6);
mp6.start();
break;
case 'h':
MediaPlayer mp7 = MediaPlayer.create(getApplicationContext(), sample);
mp7.start();
break;
case 'i':
MediaPlayer mp8 = MediaPlayer.create(getApplicationContext(), sample1);
mp8.start();
break;
case 'j':
MediaPlayer mp9 = MediaPlayer.create(getApplicationContext(), sample2);
mp9.start();
break;
case 'k':
MediaPlayer mp10 = MediaPlayer.create(getApplicationContext(), sample3);
mp10.start();
break;
case 'l':
MediaPlayer mp11 = MediaPlayer.create(getApplicationContext(), sample4);
mp11.start();
break;
case 'm':
MediaPlayer mp12 = MediaPlayer.create(getApplicationContext(), sample5);
mp12.start();
break;
case 'n':
MediaPlayer mp13 = MediaPlayer.create(getApplicationContext(), sample6);
mp13.start();
break;
case 'o':
MediaPlayer mp14 = MediaPlayer.create(getApplicationContext(), sample);
mp14.start();
break;
case 'p':
MediaPlayer mp15 = MediaPlayer.create(getApplicationContext(), sample1);
mp15.start();
break;
case 'q':
MediaPlayer mp16 = MediaPlayer.create(getApplicationContext(), sample2);
mp16.start();
break;
case 'r':
MediaPlayer mp17 = MediaPlayer.create(getApplicationContext(), sample3);
mp17.start();
break;
case 's':
MediaPlayer mp18 = MediaPlayer.create(getApplicationContext(), sample4);
mp18.start();
break;
case 't':
MediaPlayer mp19 = MediaPlayer.create(getApplicationContext(), sample5);
mp19.start();
break;
case 'u':
MediaPlayer mp20 = MediaPlayer.create(getApplicationContext(), sample6);
mp20.start();
break;
case 'v':
MediaPlayer mp21 = MediaPlayer.create(getApplicationContext(), sample);
mp21.start();
break;
case 'w':
MediaPlayer mp22 = MediaPlayer.create(getApplicationContext(), sample2);
mp22.start();
break;
case 'x':
MediaPlayer mp23 = MediaPlayer.create(getApplicationContext(), sample3);
mp23.start();
break;
case 'y':
MediaPlayer mp24 = MediaPlayer.create(getApplicationContext(), sample4);
mp24.start();
break;
case 'z':
MediaPlayer mp25 = MediaPlayer.create(getApplicationContext(), sample5);
mp25.start();
break;
case ' ':
MediaPlayer mp26 = MediaPlayer.create(getApplicationContext(), sample6);
mp26.start();
break;
}
公共类MainActivity扩展活动{
编辑文本编辑;
按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit=(EditText)findViewById(R.id.box);
按钮=(按钮)findViewById(R.id.button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
String String=edit.getText().toString();
char arr[]=string.toCharArray();
对于(int i=0;i使用MediaPlayer.onCompletionListener
在曲目结束时收听事件。之后将播放下一个音频文件。示例
mp.prepare();
mp1.prepare();
mp.start();
mp.setNextMediaPlayer(mp1);
编辑
要一个接一个地播放多个音频文件,您不必一个接一个地创建嵌套的onCompletionListener。您只需创建一个包含所有要播放的音频文件的数组并设置onCompletionListener即可。例如:
int[] myAudio = {R.raw.audio1, R.raw.audio2, R.raw.audio3};
int mTrackFinish = 0;
MediaPlayer mp = MediaPlayer.create(this, myAudio[0]);
mp.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
mTrackFinish++;
mp.reset();
if(mTrackFinish < myAudio.length)
// play some audio from list
else
mTrackFinish=0;
mp.release();
mp = null; // either set counter to 0 and start again or call end of list
}
});
mp.start();
int[]myAudio={R.raw.audio1,R.raw.audio2,R.raw.audio3};
int mTrackFinish=0;
MediaPlayer mp=MediaPlayer.create(这个,myAudio[0]);
mp.setOnCompletionListener(新的OnCompletionListener()
{
@凌驾
完成时的公共作废(MediaPlayer mp)
{
mTrackFinish++;
mp.reset();
if(mTrackFinish
不允许播放下一个音频。允许字符“b”播放。我想在前一个角色之后,准备并播放该系列中的下一个角色,无论它是什么。我已编辑了答案。此代码将在完成后一个接一个播放多个音频。P.令人惊讶的是,一个多月后突然出现了这个问题。