android:在媒体播放器上做一些代码特殊时间

问题描述:

我是机器人编程的新手..android:在媒体播放器上做一些代码特殊时间

我有一个媒体播放器在我的活动中播放声音。

我想在媒体播放器正在播放的特定时间上做一些代码。我的意思是我想在媒体播放器处于0到5秒的时间内做code1,并在5到14之间做code2,在14到18秒之间做code3。

这里是我的计时器代码,我不知道如何在特殊时期运行我的代码..

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

TextView timerTextView; 
long startTime = 0; 

//runs without a timer by reposting this handler at the end of the runnable 
Handler timerHandler = new Handler(); 
Runnable timerRunnable = new Runnable() { 

    @Override 
    public void run() { 
     long millis = System.currentTimeMillis() - startTime; 
     int seconds = (int) (millis/1000); 
     int minutes = seconds/60; 
     seconds = seconds % 60; 

     timerTextView.setText(String.format("%d:%02d", minutes, seconds)); 

     timerHandler.postDelayed(this, 500); 
    } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    timerTextView = (TextView) findViewById(R.id.text); 

    Button b = (Button) findViewById(R.id.button1); 
    b.setText("start"); 
    b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Button b = (Button) v; 
      if (b.getText().equals("stop")) { 
       timerHandler.removeCallbacks(timerRunnable); 
       b.setText("start"); 
      } else { 
       startTime = System.currentTimeMillis(); 
       timerHandler.postDelayed(timerRunnable, 0); 
       b.setText("stop"); 
      } 
     } 
    }); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    timerHandler.removeCallbacks(timerRunnable); 
    Button b = (Button)findViewById(R.id.button1); 
    b.setText("start"); 
} 

} 
+0

请出示你试过 – meda

+0

代码尝试实现的定时器(见[这个答案](http://*.com/questions/4597690/android - 时间 - 如何)的细节)。 您可以在开始播放声音时启动计时器,并使用计时器的回调来执行每次在轨道上所需的方法。 – FMontano

这是不是最优雅的解决方案,特别是如果你所有的时间块将正好是5个秒,但如果您在媒体播放器启动时设置了initalTime,则应该可以工作。对于uptimeMillis()和其他Android计时方法的进一步资料是linked here

int initialTime= SystemTimer.uptimeMillis(); 
while (mediaIsRunning){ 
    int currentTime=SystemTimer.uptimeMillis(); 
    int elapsed=currentTime-initialTime; 
    if (elapsed<=5000){ // 5 seconds 
     //your code 1 
    } 
    else if (elapsed<=10000){ //10 seconds 
     //code 2 
    } 
    //etc ... 
}