有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java添加按钮在array或db中单击或点击以在安卓中重复相同的操作

我正在开发一个drum pad应用程序,我想记录用户单击按钮的次数,并在用户单击“记录”按钮时将其保存在ArrayList或数据库中,并通过编程方式模拟相同的单击次数,以混合这些按钮 我正在使用Soundpool和on touch事件

我花了好几个小时寻找,但什么也没找到

代码:

public class MainActivity extends Activity implements View.OnTouchListener {

Button btn_1, btn_2, btn_3, btn_4, btn_5, btn_6, btn_7, btn_8, btn_9, btn_10, btn_11, btn_12, rec_btn; 
SoundPool sp;
int sound_1, sound_2, sound_3, sound_4, sound_5, sound_6, sound_7, sound_8, sound_9, sound_10, sound_11, sound_12;
boolean isRecording = false;
SeekBar seekBar;
int progress;
float sp_flot = 1f; 
long startTime;
private final int MAX_STREAM = 10;
Animation anim;

  @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        AudioAttributes attributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_GAME)
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .build();

        sp = new SoundPool.Builder()
                .setAudioAttributes(attributes)
                .setMaxStreams(MAX_STREAM)
                .build();
    } else {
        sp = new SoundPool(MAX_STREAM, AudioManager.STREAM_MUSIC, 0);
    }



    seekBar = (SeekBar) findViewById(R.id.seekBar);
    anim = new AlphaAnimation(0.0f, 1.0f);
    anim.setDuration(500); //You can manage the blinking time with this parameter
    anim.setStartOffset(200);
    anim.setRepeatMode(Animation.REVERSE);
    anim.setRepeatCount(Animation.INFINITE);
    btn_1 = (Button) findViewById(R.id.btn1);
    btn_2 = (Button) findViewById(R.id.btn2);
    btn_3 = (Button) findViewById(R.id.btn3);
    btn_4 = (Button) findViewById(R.id.btn4);
    btn_5 = (Button) findViewById(R.id.btn5);
    btn_6 = (Button) findViewById(R.id.btn6);
    btn_7 = (Button) findViewById(R.id.btn7);
    btn_8 = (Button) findViewById(R.id.btn8);
    btn_9 = (Button) findViewById(R.id.btn9);
    btn_10 = (Button) findViewById(R.id.btn10);
    btn_11 = (Button) findViewById(R.id.btn11);
    btn_12 = (Button) findViewById(R.id.btn12);
    rec_btn = (Button) findViewById(R.id.rec_btn);
    btn_1.setOnTouchListener(this);
    btn_2.setOnTouchListener(this);
    btn_3.setOnTouchListener(this);
    btn_4.setOnTouchListener(this);
    btn_5.setOnTouchListener(this);
    btn_6.setOnTouchListener(this);
    btn_7.setOnTouchListener(this);
    btn_8.setOnTouchListener(this);
    btn_9.setOnTouchListener(this);
    btn_10.setOnTouchListener(this);
    btn_11.setOnTouchListener(this);
    btn_12.setOnTouchListener(this);

    sound_1 = sp.load(this, R.raw.drum_01, 1);
    sound_2 = sp.load(this, R.raw.drum_02, 1);
    sound_3 = sp.load(this, R.raw.drum_03, 1);
    sound_4 = sp.load(this, R.raw.drum_04, 1);
    sound_5 = sp.load(this, R.raw.drum_05, 1);
    sound_6 = sp.load(this, R.raw.drum_06, 1);
    sound_7 = sp.load(this, R.raw.drum_07, 1);
    sound_8 = sp.load(this, R.raw.drum_08, 1);
    sound_9 = sp.load(this, R.raw.drum_09, 1);
    sound_10 = sp.load(this, R.raw.drum_10, 1);
    sound_11 = sp.load(this, R.raw.drum_11, 1);
    sound_12 = sp.load(this, R.raw.drum_12, 1);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            double fm = (double) progress / 10;
            sp_flot = (float) fm;


        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });



    rec_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!isRecording)  {
                rec_btn.startAnimation(anim);
                isRecording = true;

            } else  {
                 rec_btn.clearAnimation();
                isRecording = false; 

            }

        }
    });

}




@Override
public boolean onTouch(View v, MotionEvent event) {
    int pointerIndex = event.getActionIndex();
    float x = event.getX(pointerIndex);
    float y = event.getY(pointerIndex);


    int v_id = v.getId();
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

            startTime = System.currentTimeMillis();
            switch (v_id) {
                case R.id.btn1:



                    btn_1.setBackgroundResource(R.drawable.sound_on);
                   sp.play(sound_1, 1, 1, 1, 0, sp_flot);



                    break;
                case R.id.btn2:
                    btn_2.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_1, 1, 1, 1, 0, sp_flot);




                    break;
                case R.id.btn3:


                    btn_3.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_3, 1, 1, 1, 0, sp_flot);


                    break;
                case R.id.btn4: 

                    btn_4.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_4, 1, 1, 1, 0, sp_flot); 

                    break;
                case R.id.btn5:

                    btn_5.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_5, 1, 1, 1, 0, sp_flot);


                    break;
                case R.id.btn6: 
                    btn_6.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_6, 1, 1, 1, 0, sp_flot);


                    break;
                case R.id.btn7: 
                    btn_7.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_7, 1, 1, 1, 0, sp_flot);

                    break;
                case R.id.btn8: 
                    btn_8.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_5, 1, 1, 1, 0, sp_flot);

                    break;
                case R.id.btn9: 
                    btn_9.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_9, 1, 1, 1, 0, sp_flot);


                    break;
                case R.id.btn10:
                     btn_10.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_9, 1, 1, 1, 0, sp_flot);

                    break;
                case R.id.btn11:
                     btn_11.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_11, 1, 1, 1, 0, sp_flot);

                    break;
                case R.id.btn12:
                     btn_12.setBackgroundResource(R.drawable.sound_on);
                    sp.play(sound_12, 1, 1, 1, 0, sp_flot);


                    break;
            }


            break;

        case MotionEvent.ACTION_UP:
            switch (v_id) {
                case R.id.btn1:
                    btn_1.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn2:
                    btn_2.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn3:
                    btn_3.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn4:
                    btn_4.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn5:
                    btn_5.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn6:
                    btn_6.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn7:
                    btn_7.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn8:
                    btn_8.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn9:
                    btn_9.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn10:
                    btn_10.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn11:
                    btn_11.setBackgroundResource(R.drawable.sound_off);
                     break;
                case R.id.btn12:
                    btn_12.setBackgroundResource(R.drawable.sound_off);
                     break;
            }

            break; 
    }

    return false;
}

}

共 (1) 个答案

  1. # 1 楼答案

    您不应该存储触摸事件,而应该保存正在播放的带有时间戳的声音id,以后您可以按顺序播放它们。您还可以在用户之间共享这些数据,并在不同的设备上播放相同的数据