私はボタンプレスで音を再生する8つの画像ボタンを備えたドラックパッドアプリを製作しています。私は、ボタンが押されたときにだけSoundpoolがファイルを再生するという問題があるので、ボタンのプレスをより敏感にする方法を見つけようとしています。Android Soundpool - タッチイベント
ボタンをonTouchEventを使って触れるようにする方法があることがわかりましたが、私のコードにその方法を実装する方法はわかりません。私は両方の.oggと.wavファイルタイプをサウンドに使用しようとしましたが、それは問題ではありません。私はまた、キーが押されているときにサウンドファイルをループするボタンを作成するつもりですが、私の主な問題は、すべてのボタンをタッチするのではなく、リリースする方法です。コード:
package com.example.user.soundboard;
import android.os.Bundle;
import android.view.View;
import android.view.MotionEvent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
SoundPool mySound, mySound2, mySound3, mySound4, mySound5, mySound6, mySound7, mySound8;
int hihatId, kickId, snareId, clapId, snare2Id, hihat2Id, kick2Id, openHatId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySound = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound2 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound3 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound4 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound5 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound6 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound7 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
mySound8 = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
hihatId = mySound.load(this, R.raw.ogghat30, 1);
hihat2Id = mySound.load(this, R.raw.ogghihat14, 1);
kickId = mySound.load(this, R.raw.oggkick, 1);
kick2Id = mySound.load(this, R.raw.oggkick2, 1);
snareId = mySound.load(this, R.raw.oggsnare8, 1);
snare2Id = mySound.load(this, R.raw.oggsnare8, 1);
clapId = mySound.load(this, R.raw.oggclap5, 1);
openHatId = mySound.load(this, R.raw.ogghat24, 1);
}
public void playHihat(View view) {
mySound.play(hihatId, 1, 1, 1, 0, 1);
}
public void playHihat2(View view) {
mySound.play(hihat2Id, 1, 1, 1, 0, 1);
}
public void playOpenHat(View view) {
mySound.play(openHatId, 1, 1, 1, 0, 1);
}
public void playKick(View view) {
mySound.play(kickId, 1, 1, 1, 0, 1);
}
public void playKick2(View view) {
mySound.play(kick2Id, 1, 1, 1, 0, 1);
}
public void playSnare(View view) {
mySound.play(snareId, 1, 1, 1, 0, 1);
}
public void playSnare2(View view) {
mySound.play(snare2Id, 1, 1, 1, 0, 1);
}
public void playClap(View view) {
mySound.play(clapId, 1, 1, 1, 0, 1);
}
ImageButtonについては、私は現在LayoutでonClickメソッドを使用しています。
ありがとうございました!
ありがとう:ここ
あなたは例を持っています!魅力的な作品!しかし、私は、ボタン・プレスでボタン・イメージがそれ以上変わらないという新しい問題に直面しました。以前は、アンドロイド:src = "@ drawable/changecolorsnare"をレイアウトに使用する前に、サウンドを再生するために実装した新しいonTouchコードを使用しない他のボタンでも使用できるボタンイメージを変更するonTouchを作成しました。同じボタンのためにonTouchとImageViewのonTouchの両方を使用すると、アプリケーションがクラッシュします。サウンドの新しいコードを変更せずに、それらを組み合わせたり、別の方法で行う方法はありますか?Image button BTWを使用しています。 – 808