android toolbar - لعب الافتراضي الروبوت صوت زر ، النقر فوق onTouch()الأسلوب




example action (4)

استخدم هذا الرمز في طريقة onTouch () الخاصة بك:

view.playSoundEffect(android.view.SoundEffectConstants.CLICK);

إذا كنت تبحث ببساطة عن صوت Android مسبق ، فمن الأفضل استخدام هذه الوظيفة التي يتم توفيرها لك مجانًا من خلال إطار العمل. إن القيام بأي شيء آخر ، ما لم يكن ضروريًا للتخصيص ، سيؤدي ببساطة إلى العمل ضد إطار العمل بدلاً من العمل معه.

في تطبيق Android لدي بعض الأزرار ، والتي يجب أن تعمل مع طريقة onTouch () ، بالطبع أحتاج إلى تغيير نص الزر ، عند الإصبع في موضع ACTION_DOWN. ولكن يجب أن تلعب هذه الأزرار الافتراضية الروبوت زر النقر (كما في طريقة onClick ()). أين يمكنني العثور على هذا الصوت؟ أعتقد أنه يجب أن يكون في SDK ، ولكن كيف يمكنني العثور عليه؟ وما هي الأساليب الأفضل لمثل هذه العملية؟ أنا أستخدم MediaPlayer.

قائمة:

public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    switch (action) {
    case MotionEvent.ACTION_DOWN:
        addTextShadow(v);
        Log.v(LOG_TAG, "ACTION_DOWN");
        break;
    case MotionEvent.ACTION_MOVE:
        clearTextShadow(v);
        isMoved = true;
        Log.v(LOG_TAG, "ACTION_MOVE");
        break;
    case MotionEvent.ACTION_UP:
        Log.v(LOG_TAG, "ACTION_UP");
        if (!isMoved) {
            clearTextShadow(v);
            if (v.getId() == R.id.btn_new) {
                Log.v(LOG_TAG, "New pressed");

                            playSound(); //MY METHOD TO PLAY SOUND

            } else if (v.getId() == R.id.btn_saved) {
                Log.v(LOG_TAG, "Saved pressed");
            } else if (v.getId() == R.id.btn_random) {
                Log.v(LOG_TAG, "Random pressed");
            }
        }
        isMoved = false;
        break;
    }
    return true;
}

ولطريقة playSound () الخاصة بي:

    public void playSound(){
    if (mp != null) {
        mp.release();
        mp = null;
    }
    try {
        mp = MediaPlayer
    .create(MyActivity.this, R.raw.sound); //BUT HERE I NEED DEFAULT SOUND!
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

استخدام الأصوات الافتراضية من /system/media/audio/

يساعد MediaPlayer أو SoundPool على تنفيذ التشغيل.


فكر في استخدام view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); .

وسوف يقوم كلاهما: تشغيل الصوت الافتراضي والاهتزاز إذا قام المستخدم بتمكينه في الإعدادات العامة.


It could be built with easiest way:

Alert Dialog with Custom View and with two Buttons (Positive & Negative).

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).setTitle(getString(R.string.select_period));
builder.setPositiveButton(getString(R.string.ok), null);

 builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

    // Click of Cancel Button

   }
 });

  LayoutInflater li = LayoutInflater.from(getActivity());
  View promptsView = li.inflate(R.layout.dialog_date_picker, null, false);
  builder.setView(promptsView);

  DatePicker startDatePicker = (DatePicker)promptsView.findViewById(R.id.startDatePicker);
  DatePicker endDatePicker = (DatePicker)promptsView.findViewById(R.id.endDatePicker);

  final AlertDialog alertDialog = builder.create();
  alertDialog.show();

  Button theButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
  theButton.setOnClickListener(new CustomListener(alertDialog, startDatePicker, endDatePicker));

CustomClickLister of Positive Button of Alert Dailog :

private class CustomListener implements View.OnClickListener {
        private final Dialog dialog;
        private DatePicker mStartDp, mEndDp;
    public CustomListener(Dialog dialog, DatePicker dS, DatePicker dE) {
        this.dialog = dialog;
        mStartDp = dS;
        mEndDp = dE;
    }

    @Override
    public void onClick(View v) {

        int day1  = mStartDp.getDayOfMonth();
        int month1= mStartDp.getMonth();
        int year1 = mStartDp.getYear();
        Calendar cal1 = Calendar.getInstance();
        cal1.set(Calendar.YEAR, year1);
        cal1.set(Calendar.MONTH, month1);
        cal1.set(Calendar.DAY_OF_MONTH, day1);


        int day2  = mEndDp.getDayOfMonth();
        int month2= mEndDp.getMonth();
        int year2 = mEndDp.getYear();
        Calendar cal2 = Calendar.getInstance();
        cal2.set(Calendar.YEAR, year2);
        cal2.set(Calendar.MONTH, month2);
        cal2.set(Calendar.DAY_OF_MONTH, day2);

        if(cal2.getTimeInMillis()>=cal1.getTimeInMillis()){
            dialog.dismiss();
            Log.i("Dialog", "Dismiss");
            // Condition is satisfied so do dialog dismiss
            }else {
            Log.i("Dialog", "Do not Dismiss");
            // Condition is not satisfied so do not dialog dismiss
        }

    }
}

فعله







android android-mediaplayer audio ontouchlistener