Jun*_*urg 10 android action button motion
按住当前按钮(ACTION_DOWN)以获得按下时的当前时间.当我释放按钮(ACTION_UP)时,也会拍摄当前时间,并按时间差剪切和粘贴音频文件.如果用户按下并释放按钮太快,则会生成无效的音频文件.所以我想实现无条件按压超过1秒的功能.
按钮ACTION_DOWN,ACTION_UP有没有办法在动作事件中实现这样的功能?如果你知道,请帮我个忙.以下是触摸侦听器的源代码.
recordBtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN: {
long currentDuration = vAudioPlayer.getCurrentDuration();
// ?? ?? ( combineList ???? ??? ? )
if (mRecordThread != null) {
if (combineList.size() % 2 == 0) {
mRecordThread.startFileWrite(currentDuration);
combineList.add(currentDuration);
}
}
}
// ??, ??? ? ?????
micBg1.setVisibility(View.VISIBLE);
micBg2.setVisibility(View.VISIBLE);
micBg1.startAnimation(animMic1);
micBg2.startAnimation(animMic2);
//userImg.setImageBitmap(userImgBitmap);
userImg.startAnimation(animZoomIn);
// artistImg.setImageBitmap(artistBlurImg);
artistImg.startAnimation(animZoomOut);
break;
case MotionEvent.ACTION_UP: {
long currentDuration = vAudioPlayer.getCurrentDuration();
if (mRecordThread != null) {
// ??? ?? ( combineList? ??? ?: ??? ??? ??? ? combineList? ???? ??? ?? )
if (combineList.size() % 2 == 1) {
mRecordThread.stopFileWrite();
File waveFile = new File(RecordActivity.currentCreateFileName.replaceAll("/ucc/", "/tmp/")
+ "_" + calTime(combineList.get(combineList.size() - 1), false) + "_uv.pcm");
// ?? ??? ?? ?? ??? ???? wav ??? ??,
if (waveFile.exists()) {
copyWaveFile(RecordActivity.currentCreateFileName.replaceAll("/ucc/", "/tmp/") + "_" + calTime(combineList.get(combineList.size() - 1), false) + "_uv.pcm",
RecordActivity.currentCreateFileName.replaceAll("/ucc/", "/tmp/") + "_" + calTime(combineList.get(combineList.size() - 1), false) + "_u0.wav");
// wav ?? ?? ??
if (mMp3ConcatThread != null) {
mMp3ConcatThread.startCombine(null, 3333333333333333333L, combineList.get(combineList.size() - 1), currentDuration);
}
}
combineList.add(currentDuration);
// startCombine Thread ?? ??( if old_position: 0, 3333333333333333333L, 7777777777777777777L, ? ? )
if (combineList.size() == 2) {
// 0: ?? ?? ??? ?
mMp3ConcatThread.startCombine(null, 0, combineList.get(combineList.size() - 2), currentDuration);
} else {
// ? ?: ?? ?? ??? ?
mMp3ConcatThread.startCombine(null, combineList.get(combineList.size() - 3), combineList.get(combineList.size() - 2), currentDuration);
}
}
}
}
// ??, ??? ? ?????
micBg1.setVisibility(View.GONE);
micBg2.setVisibility(View.GONE);
micBg1.clearAnimation();
micBg2.clearAnimation();
// userImg.setImageBitmap(userBlurImg);
userImg.startAnimation(animZoomOut);
// artistImg.setImageBitmap(artistImgBitmap);
artistImg.startAnimation(animZoomIn);
break;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
您必须进行检查,如果操作向上和向下之间的差异小于 1 分钟,则将 UP 时间设置为停机时间 + 60 秒。这将解决您的问题。你必须把这个逻辑放在这里:
case MotionEvent.ACTION_UP: {
long currentDuration = vAudioPlayer.getCurrentDuration();
//your logic here
if (mRecordThread != null) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |