Java 数组中每个值之间的延迟

Java 数组中每个值之间的延迟,java,android,Java,Android,我在一个长[]中存储了很多值,用于android中的振动方法 int dot = 100; int dash = 220; int short_gap = 200; int medium_gap = 700; vibIndicator = (TextView)findViewById(R.id.TextView01); vibPattern = new long[] {0, da

我在一个长[]中存储了很多值,用于android中的振动方法

        int dot = 100;
        int dash = 220;     
        int short_gap = 200;    
        int medium_gap = 700;  
        vibIndicator = (TextView)findViewById(R.id.TextView01);
        vibPattern = new long[] {0, dash, short_gap, dot, short_gap, dot, short_gap, dot, medium_gap};          
        for (int i = 0; i < vibPattern.length; i++)
        {
            if (vibPattern[i] == 100)
            {
                vibIndicator.setBackgroundResource(R.color.White);
            }
            else if(vibPattern[i] == 220)
            {
                vibIndicator.setBackgroundResource(R.color.Red);
            }

            try 
            {                   
                Thread.sleep(vibPattern[i]);
            } 
            catch (InterruptedException e) 
            {
                //
            }
        }
        Vibrator vibrator;
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);       
        vibrator.vibrate(vibPattern, -1);
int点=100;
int dash=220;
int short_gap=200;
int-medium_-gap=700;
vibIndicator=(TextView)findViewById(R.id.TextView01);
vibPattern=新长[]{0,短划线,短间隙,点,短间隙,点,短间隙,点,中间隙};
对于(int i=0;i
当文本视图变成破折号或圆点时,我需要相应地更改其背景颜色

应用程序将挂起一段时间(我假设它处于睡眠状态),并且在恢复时只显示最后一个背景色。sleep()不保证它睡眠多长时间,您需要自己编程,例如:

private void sleep(long ms) {
    long start = System.currentTimeMillis();
    while ((System.currentTimeMillis() - start) < ms) {
        try {
            Thread.sleep(ms - (System.currentTimeMillis() - start));
        } catch (InterruptedException e) {
        }
    }
}
private void sleep(长毫秒){
长启动=System.currentTimeMillis();
而((System.currentTimeMillis()-start)
Thread.sleep()
无法保证它能睡多久,您需要自己编程,比如:

private void sleep(long ms) {
    long start = System.currentTimeMillis();
    while ((System.currentTimeMillis() - start) < ms) {
        try {
            Thread.sleep(ms - (System.currentTimeMillis() - start));
        } catch (InterruptedException e) {
        }
    }
}
private void sleep(长毫秒){
长启动=System.currentTimeMillis();
而((System.currentTimeMillis()-start)
嗯,我想学习如何使用可控震源,并快速编写了这个程序,它可以满足您的需要。必须在AndroidManifest中设置可控震源权限:

<uses-permission android:name="android.permission.VIBRATE"/> 


import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Vibrator;
import android.widget.TextView;
import android.widget.Toast;


public class Launch extends Activity {
    int dot = 100;         
    int dash = 220;              
    int short_gap = 200;             
    int medium_gap = 700; 
    int i = 0;
    long[] vibPattern = new long[] {0, dash, short_gap, dot, short_gap, dot, short_gap, dot, medium_gap};
    TextView vibIndicator;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        vibIndicator = (TextView)findViewById(R.id.textView1); 
        simpleTimer();
    }


    public void simpleTimer(){
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                if (vibPattern[i] == dot){                 
                   vibIndicator.setBackgroundColor(Color.WHITE);  
                   vibratePhone(vibPattern[i]);
                }else if(vibPattern[i] == dash){                 
                   vibIndicator.setBackgroundColor(Color.RED);
                   vibratePhone(vibPattern[i]);
                }else{
                     vibIndicator.setBackgroundColor(Color.TRANSPARENT); 
                }   

                i++;
                if (i< vibPattern.length){
                    simpleTimer();           
                }else{
                    Toast.makeText(Launch.this, "Finished", Toast.LENGTH_LONG).show();
                }  
            }
        }, vibPattern[i]);  
    }

    public void vibratePhone(long timeLength){
        Vibrator vibrator;           
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);                  
        try{
            vibrator.vibrate(timeLength);
        }catch(Exception e){

        }
    }

}

导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.可控震源;
导入android.widget.TextView;
导入android.widget.Toast;
公开课的推出扩大了活动的范围{
int点=100;
int dash=220;
int short_gap=200;
int-medium_-gap=700;
int i=0;
long[]vibPattern=新的long[]{0,破折号,短_间距,点,短_间距,点,短_间距,点,中_间距};
文本视图振动指示器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vibIndicator=(TextView)findViewById(R.id.textView1);
simpleTimer();
}
public-void-simpleTimer(){
new Handler().postDelayed(new Runnable()){
@凌驾
公开募捐{
如果(vibPattern[i]==dot){
vibIndicator.setBackgroundColor(颜色:白色);
振动电话(振动模式[i]);
}else如果(vibPattern[i]==破折号){
vibIndicator.setBackgroundColor(颜色:红色);
振动电话(振动模式[i]);
}否则{
vibIndicator.setBackgroundColor(颜色.透明);
}   
i++;
if(i
嗯,我想学习如何使用可控震源,并快速编写了这个程序,它可以满足您的需要。必须在AndroidManifest中设置可控震源权限:

<uses-permission android:name="android.permission.VIBRATE"/> 


import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Vibrator;
import android.widget.TextView;
import android.widget.Toast;


public class Launch extends Activity {
    int dot = 100;         
    int dash = 220;              
    int short_gap = 200;             
    int medium_gap = 700; 
    int i = 0;
    long[] vibPattern = new long[] {0, dash, short_gap, dot, short_gap, dot, short_gap, dot, medium_gap};
    TextView vibIndicator;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        vibIndicator = (TextView)findViewById(R.id.textView1); 
        simpleTimer();
    }


    public void simpleTimer(){
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                if (vibPattern[i] == dot){                 
                   vibIndicator.setBackgroundColor(Color.WHITE);  
                   vibratePhone(vibPattern[i]);
                }else if(vibPattern[i] == dash){                 
                   vibIndicator.setBackgroundColor(Color.RED);
                   vibratePhone(vibPattern[i]);
                }else{
                     vibIndicator.setBackgroundColor(Color.TRANSPARENT); 
                }   

                i++;
                if (i< vibPattern.length){
                    simpleTimer();           
                }else{
                    Toast.makeText(Launch.this, "Finished", Toast.LENGTH_LONG).show();
                }  
            }
        }, vibPattern[i]);  
    }

    public void vibratePhone(long timeLength){
        Vibrator vibrator;           
        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);                  
        try{
            vibrator.vibrate(timeLength);
        }catch(Exception e){

        }
    }

}

导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.可控震源;
导入android.widget.TextView;
导入android.widget.Toast;
公开课的推出扩大了活动的范围{
int点=100;
int dash=220;
int short_gap=200;
int-medium_-gap=700;
int i=0;
long[]vibPattern=新的long[]{0,破折号,短_间距,点,短_间距,点,短_间距,点,中_间距};
文本视图振动指示器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vibIndicator=(TextView)findViewById(R.id.textView1);
simpleTimer();
}
public-void-simpleTimer(){
new Handler().postDelayed(new Runnable()){
@凌驾
公开募捐{
如果(vibPattern[i]==dot){
vibIndicator.setBackgroundColor(颜色:白色);
振动电话(振动模式[i]);
}else如果(vibPattern[i]==破折号){
vibIndicator.setBackgroundColor(颜色:红色);
振动电话(振动模式[i]);
}否则{
vibIndicator.setBackgroundColor(颜色.透明);
}   
i++;
如果(i