Android 获取已完成方法的静态时间

Android 获取已完成方法的静态时间,android,audio,android-audiomanager,android-music-player,Android,Audio,Android Audiomanager,Android Music Player,我正在为Android开发音乐播放器,我需要获得静态时间才能开始播放音乐。Acutally command context.player.start()从[ms]范围内随机抽取时间,但我需要获取完成方法的静态时间。我的代码如下。我的意思是“调用方法之前的时间”和“方法完成之后的时间”之间的时间差需要是静态的(方法应该占用静态时间) 公共类SpeakerActivity扩展了AppCompativity{ 音乐播放器; @凌驾 创建时受保护的void(Bundle savedInstanceSta

我正在为Android开发音乐播放器,我需要获得静态时间才能开始播放音乐。Acutally command context.player.start()从[ms]范围内随机抽取时间,但我需要获取完成方法的静态时间。我的代码如下。我的意思是“调用方法之前的时间”和“方法完成之后的时间”之间的时间差需要是静态的(方法应该占用静态时间)

公共类SpeakerActivity扩展了AppCompativity{
音乐播放器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、活动和扬声器);
player=新音乐播放器(SpeakerActivity.this);
run();
}
私家车{
AsyncTask.execute(新的Runnable(){
@凌驾
公开募捐{
ClientTask ct=新的ClientTask(SpeakerActivity.this);
试一试{
ct.run();
}捕获(IOE1异常){
e1.printStackTrace();
}
}
});
}
}
公共类ClientTask扩展了侦听器{
ClientTask(上下文){this.Context=Context);}
...
//我只打算从Listener.class实现这个方法,因为我只需要使用这个方法。
收到公共无效(连接c、对象p){
//收到的数据包是否与PacketMessage.class属于同一类?
if(p PacketMessage实例){
//将其强制转换,以便我们可以访问其中的消息。
PacketMessage packet=(PacketMessage)p;
if(packet.message.charAt(0)='p'){
字符串latencyString=packet.message.replace('p','0');
int latency=Integer.parseInt(latencyString);
试一试{
睡眠(延迟);

context.player.start();什么是静态时间?你想要什么,你得到了什么?阅读你的标题,你完全不清楚你想要什么。你想要增加0-20毫秒的延迟吗?或者你有延迟,你想摆脱它吗?请更新问题好的,我刚刚更新。现在清楚了吗?你是说恒定时间?就像它总是以相同的时间执行一样我?或者你想让它执行得更快,以便更具响应性?是的,我指的是固定时间。没有必要执行得更快或更慢。我只需要获得固定的执行时间。我在类
上下文中找不到名为
player
的成员或方法,所以我对行执行(甚至编译)感到惊讶.在哪里
player
被定义为
上下文的成员?
public class SpeakerActivity extends AppCompatActivity {


    MusicPlayer player;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_speaker);
        player = new MusicPlayer(SpeakerActivity.this);
        run();
    }

    private void run() {
       AsyncTask.execute(new Runnable() {
           @Override
           public void run() {
               ClientTask ct = new ClientTask(SpeakerActivity.this);
               try {
                   ct.run();
               } catch (IOException e1) {
                   e1.printStackTrace();
               }
           }

       });
    }

}


public class ClientTask extends Listener {

    ClientTask(Context context) { this.context = context);}

    ...


    //I'm only going to implement this method from Listener.class because I only need to use this one.
    public void received(Connection c, Object p){
        //Is the received packet the same class as PacketMessage.class?

        if(p instanceof PacketMessage){

            //Cast it, so we can access the message within.
            PacketMessage packet = (PacketMessage) p;


            if(packet.message.charAt(0) == 'p') {

                String latencyString = packet.message.replace('p','0');
                int latency = Integer.parseInt(latencyString);
                try {
                    Thread.sleep(latency);
                    context.player.start(); <---- THIS LINE TAKE RANDOM AMOUNT OF TIME
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }



            }
        }
    }


}


public class MusicPlayer {

    private MediaPlayer player;
    private Context context;

    public MusicPlayer(Context context) {
        this.context = context;
        player = MediaPlayer.create(context, R.raw.zero);
    }

    public void start() {
        player.start();
    }

    public void stop() {
        player.stop();
    }

}