繁体   English   中英

在Android中按下按钮之前播放音频

[英]Playing an audio until button is pressed in Android

我想在 Android 中制作 Harmonium 的按钮,当按下按钮时会产生声音。 松开按钮时,声音停止。 我的代码如下。

package com.example.akshay.soundapp;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.*;

public class MainActivity extends AppCompatActivity {

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

        final Button btn=(Button)findViewById(R.id.btn);
        final MediaPlayer mp=MediaPlayer.create(this,R.raw.sound);

        btn.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if(motionEvent.getAction()==MotionEvent.ACTION_DOWN)
                {
                    mp.start();
                }
                else if(motionEvent.getAction()==MotionEvent.ACTION_UP)
                {
                    mp.stop();
                }

                return false;
            }
        });
    }
}

对于 onTouch(),如果我保持 true 作为返回值,那么按钮似乎没有被按下,而是只发出 1 次声音。 下次我按时,它不起作用。

如果我保留 false 作为返回值,则按钮会在按下时出现并产生声音,并且声音会在释放事件时停止。 但是如果我再按一次按钮,它就不会发出声音。

您应该使用 pause() 而不是 stop() ,然后返回 true 将在以后工作。 如果您希望音频在您停止触摸按钮之前永远不会停止,您也应该使用 setLooping(true) 。

      btn.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction()==MotionEvent.ACTION_DOWN)
            {
                mp.setLooping(true);
                mp.start();
            }
            else if(motionEvent.getAction()==MotionEvent.ACTION_UP)
            {
                mp.pause();
            }

            return true;
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM