-1

アプリケーションには、クリックするとサウンドが再生される 16 個のボタンがあります。SD カードからサウンドを選択してインポートしたいと考えています。それを行う方法に関する提案や例はありますか?

ここに私のJavaコードがあります:

public class App extends MultiTouchActivity {
SoundPool sp;
MediaPlayer mp;
int mSoundId, mSoundId1, mSoundId2, mSoundId3, mSoundId4, mSoundId5,
        mSoundId6, mSoundId7, mSoundId8, mSoundId9, mSoundId10, mSoundId11,
        mSoundId12, mSoundId13, mSoundId14, mSoundId15;
int mStreamId, mStreamId1, mStreamId2, mStreamId3, mStreamId4, mStreamId5,
        mStreamId6, mStreamId7, mStreamId8, mStreamId9, mStreamId10,
        mStreamId11, mStreamId12, mStreamId13, mStreamId14,
        mStreamId15 = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(
            WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
    mSoundId = sp.load(this, R.raw.dub1, 1);
    mSoundId1 = sp.load(this, R.raw.dub2, 1);
    mSoundId2 = sp.load(this, R.raw.dub3, 1);
    mSoundId3 = sp.load(this, R.raw.dub4, 1);
    mSoundId4 = sp.load(this, R.raw.dub5, 1);
    mSoundId5 = sp.load(this, R.raw.dub6, 1);
    mSoundId6 = sp.load(this, R.raw.dub7, 1);
    mSoundId7 = sp.load(this, R.raw.dub8, 1);
    mSoundId8 = sp.load(this, R.raw.dub9, 1);
    mSoundId9 = sp.load(this, R.raw.dub10, 1);
    mSoundId10 = sp.load(this, R.raw.dub11, 1);
    mSoundId11 = sp.load(this, R.raw.dub12, 1);
    mSoundId12 = sp.load(this, R.raw.dub13, 1);
    mSoundId13 = sp.load(this, R.raw.dub14, 1);
    mSoundId14 = sp.load(this, R.raw.dub15, 1);
    mSoundId15 = sp.load(this, R.raw.dub16, 1);
}

//

public void dubstep1(View view) {
    if (mStreamId != 0) {
        sp.stop(mStreamId);
    }
    mStreamId = sp.play(mSoundId, 1, 1, 1, 0, 1f);
}

public void dubstep2(View view) {
    if (mStreamId1 != 0) {
        sp.stop(mStreamId1);
    }
    mStreamId1 = sp.play(mSoundId1, 1, 1, 1, 0, 1f);
}

public void dubstep3(View view) {
    if (mStreamId2 != 0) {
        sp.stop(mStreamId2);
    }
    mStreamId2 = sp.play(mSoundId2, 1, 1, 1, 0, 1f);
}

public void dubstep4(View view) {
    if (mStreamId3 != 0) {
        sp.stop(mStreamId3);
    }
    mStreamId3 = sp.play(mSoundId3, 1, 1, 1, 0, 1f);
}

public void dubstep5(View view) {
    if (mStreamId4 != 0) {
        sp.stop(mStreamId4);
    }
    mStreamId4 = sp.play(mSoundId4, 1, 1, 1, 0, 1f);
}

public void dubstep6(View view) {
    if (mStreamId5 != 0) {
        sp.stop(mStreamId5);
    }
    mStreamId5 = sp.play(mSoundId5, 1, 1, 1, 0, 1f);
}

public void dubstep7(View view) {
    if (mStreamId6 != 0) {
        sp.stop(mStreamId6);
    }
    mStreamId6 = sp.play(mSoundId6, 1, 1, 1, 0, 1f);
}

public void dubstep8(View view) {
    if (mStreamId7 != 0) {
        sp.stop(mStreamId7);
    }
    mStreamId7 = sp.play(mSoundId7, 1, 1, 1, 0, 1f);
}

public void dubstep9(View view) {
    if (mStreamId8 != 0) {
        sp.stop(mStreamId8);
    }
    mStreamId8 = sp.play(mSoundId8, 1, 1, 1, 0, 1f);
}

public void dubstep10(View view) {
    if (mStreamId9 != 0) {
        sp.stop(mStreamId9);
    }
    mStreamId9 = sp.play(mSoundId9, 1, 1, 1, 0, 1f);
}

public void dubstep11(View view) {
    if (mStreamId10 != 0) {
        sp.stop(mStreamId10);
    }
    mStreamId10 = sp.play(mSoundId10, 1, 1, 1, 0, 1f);
}

public void dubstep12(View view) {
    if (mStreamId11 != 0) {
        sp.stop(mStreamId11);
    }
    mStreamId11 = sp.play(mSoundId11, 1, 1, 1, 0, 1f);
}

public void dubstep13(View view) {
    if (mStreamId12 != 0) {
        sp.stop(mStreamId12);
    }
    mStreamId12 = sp.play(mSoundId12, 1, 1, 1, 0, 1f);
}

public void dubstep14(View view) {
    if (mStreamId13 != 0) {
        sp.stop(mStreamId13);
    }
    mStreamId13 = sp.play(mSoundId13, 1, 1, 1, 0, 1f);
}

public void dubstep15(View view) {
    if (mStreamId14 != 0) {
        sp.stop(mStreamId14);
    }
    mStreamId14 = sp.play(mSoundId14, 1, 1, 1, 0, 1f);
}

public void dubstep16(View view) {
    if (mStreamId15 != 0) {
        sp.stop(mStreamId15);
    }
    mStreamId15 = sp.play(mSoundId15, 1, 1, 1, 0, 1f);
}
4

1 に答える 1

1

SD カードからロードする場合は、再生するオーディオ ファイルへのパスを取得し、SoundPool.load(String path, int priority). Environment.getExternalStorageDirectoryここでファイルを見つけるのに役立ちます。

また、補足として、コードの再利用を実際に学ぶ必要があります。指が感謝します。1 つの変数を変更するためだけに、同じ動作を 16 回繰り返さなければならない理由はありません。

これらの 16 個の関数すべてを次のように置き換えることができます。

int[] mStreamIds = new int[16];
int[] mSoundIds = new int[16];

public void dubstep(int id) {
    if(mStreamIds[id] != 0){
       sp.stop(mStreamIds[id]);
    }
    mStreamIds[id] = sp.play(mSoundIds[id], 1,1,1,0,1f);
}
于 2012-10-29T18:12:43.420 に答える