[英]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.