-1

外部ストレージで曲を検索し、ボタンをクリックして再生するアプリケーションがあります。使用String path = getFullFilePath(getApplicationContext(), "FILENAME");していますが、song.mp3のようなものを入力すると正常に動作します... EditText.getText().toString(); 「FILENAME」以外を使用しようとしましたが、動作しません。これはOnCreateの私のコードです:

EditText et = (EditText) findViewById(R.id.et1);
            String string = et.getText().toString();
        sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
        String path = getFullFilePath(getApplicationContext(), string);
        mSoundId = sp.load(path, 1);

そしてLogCatは`11-0714:26:39.909:W / SoundPool(12627):サンプル1は準備ができていないと言います

しかし、入力すればet.setText("SongName");問題なく動作します。edittextに何かを入力して、ファイル名として使用したいのですが。ありがとう`

4

2 に答える 2

1

OnCreate でこれを行います。

mEditText = (EditText) findViewById(R.id.et1); 
mSoundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    public void onLoadComplete (SoundPool soundPool, int sampleId, int status) {
        mStreamId = soundPool.play(sampleId, 1, 1, 1, 0, 1f);
    }
}

次に、onClick で次のことを行います。

public void yourOnClickMethod(View view) { 
    if (mStreamId != 0) { 
        mSoundPool.stop(mStreamId); 
    } 

    String path = getFullFilePath(getApplicationContext(), EditText.getText().toString());
    mSoundId = mSoundPool.load(path, 1); 
}
于 2012-11-07T13:52:23.770 に答える
0

OnCreate は、Activity の有効期間ごとに 1 回だけ呼び出されます。そのため、OnCreate を使用して UI を初期化します。そのため、EditText の変更は取得されません。ボタンを持ってください。クリックすると、edittext からデータを取得します。それはあなたの問題を解決するはずです。

于 2012-11-07T13:41:45.737 に答える