1

私はアンドロイド開発が初めてです。私はディクテーションに基づいてアプリを作っています。
以下のアクティビティには、15 個の小さなオーディオ クリップがあります。ファイルは 5 秒の遅延で次々と再生されます。
私の質問は、どうすれば 15 のクリップから 10 のクリップだけを再生できるかということです。また、10 個のクリップをランダムに再生したいと考えています。
どんな助けでも大歓迎です。

package com.example.dictationary;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;

public class Level1 extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.level1);
        MediaPlayer n1 = MediaPlayer.create(this,R.raw.assassin); 
        final MediaPlayer n2 = MediaPlayer.create(this,R.raw.accessible);
        final MediaPlayer n3 = MediaPlayer.create(this,R.raw.bashfully);
        final MediaPlayer n4 = MediaPlayer.create(this,R.raw.blistering);
        final MediaPlayer n5 = MediaPlayer.create(this,R.raw.butter);
        final MediaPlayer n6 = MediaPlayer.create(this,R.raw.campaign);
        final MediaPlayer n7 = MediaPlayer.create(this,R.raw.circumstances);
        final MediaPlayer n8 = MediaPlayer.create(this,R.raw.clinching);
        final MediaPlayer n9 = MediaPlayer.create(this,R.raw.deferential);
        final MediaPlayer n10 = MediaPlayer.create(this,R.raw.distinguished);
        final MediaPlayer n11 = MediaPlayer.create(this,R.raw.embarrass);
        final MediaPlayer n12 = MediaPlayer.create(this,R.raw.etiquette);
        final MediaPlayer n13 = MediaPlayer.create(this,R.raw.fatigue);
        final MediaPlayer n14 = MediaPlayer.create(this,R.raw.feasible);
        final MediaPlayer n15 = MediaPlayer.create(this,R.raw.glitch);

        n1.start();





    Timer buttonTimer = new Timer();
    buttonTimer.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n2.start();

                }

            });
        }
    }, 5000);

    Timer buttonTimer1 = new Timer();
    buttonTimer1.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n3.start();

                }
            });
        }
    }, 10000);

    Timer buttonTimer2 = new Timer();
    buttonTimer2.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n4.start();

                }
            });
        }
    }, 15000);


    Timer buttonTimer3 = new Timer();
    buttonTimer3.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n5.start();

                }
            });
        }
    }, 20000);

    Timer buttonTimer4 = new Timer();
    buttonTimer4.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n6.start();

                }
            });
        }
    }, 25000);

    Timer buttonTimer5 = new Timer();
    buttonTimer5.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n7.start();

                }
            });
        }
    }, 30000);

    Timer buttonTimer6 = new Timer();
    buttonTimer6.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n8.start();

                }
            });
        }
    }, 35000);

    Timer buttonTimer7 = new Timer();
    buttonTimer7.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n9.start();

                }
            });
        }
    }, 40000);

    Timer buttonTimer8 = new Timer();
    buttonTimer8.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n10.start();

                }
            });
        }
    }, 45000);

    Timer buttonTimer9 = new Timer();
    buttonTimer9.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n11.start();

                }
            });
        }
    }, 50000);

    Timer buttonTimer10 = new Timer();
    buttonTimer10.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n12.start();

                }
            });
        }
    }, 55000);

    Timer buttonTimer11 = new Timer();
    buttonTimer11.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n13.start();

                }
            });
        }
    }, 60000);


    Timer buttonTimer12 = new Timer();
    buttonTimer12.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n14.start();

                }
            });
        }
    }, 65000);


    Timer buttonTimer13 = new Timer();
    buttonTimer13.schedule(new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                     n15.start();

                }
            });
        }
    }, 70000);
}
    }
4

2 に答える 2

0

コードが現在編成されている方法ではできません...

にリファクタリングする必要があります

`MediaPlayer n = new MediaPlayer[];
n[1] = MediaPlayer.create(this,R.raw.assassin);
//...
n[15] = MediaPlayer.create(this,R.raw.assassin);

次に、間隔内の乱数[0-15)(15を除く)を選択して、それを再生します。

さらに、繰り返される TimerTask が 1 つだけ必要であり、そのたびに乱数 (単語) が呼び出されるため、コードは大幅に簡素化されます。ただし、これにより単語が繰り返されることになります。単語が繰り返されないようにするために、ランダムに選択された番号をalreadyHeardリストに追加し、そのインデックスを再生する代わりに、単に新しいものを選択して再度テストします (実際には、while()思いつくまでそれらを選択します)。alreadyHeardリストにないもの)

それはあなたが望むものを手に入れるはずです:)

于 2013-05-22T09:49:37.873 に答える