2

ボタンが 1 つだけのシンプルなアプリが 1 つあります。押すと1音(btn001)鳴ります。私がやりたいのは、生のフォルダーからランダムなサウンドを再生することです。btn001 から btn047 という名前の 47 個のサウンドファイルがあります。コードを変更して機能させる簡単な方法はありますか。私はウェブ上に同じ質問がたくさんあることを知っています。見つけたものはすべて試しました。私はとてもイライラしますが、うまくいきません。これが私のコードです:

 import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button pushMe = (Button) findViewById(R.id.button1);
        final MediaPlayer cheer = MediaPlayer.create(MainActivity.this, R.raw.btn001);

        pushMe.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                cheer.start();
            ;
            };}

        );
            }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    }
4

3 に答える 3

1

ありがとうございました!これでコードが機能します。他の誰かがそのようなものを必要とする場合に備えて、最終的なコードを投稿します。APPNAME とサウンドファイルの名前だけを変更する必要があります。

package com.example.APPNAME;

import java.util.Random;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button sound = (Button) findViewById(R.id.button1);
    sound.setOnClickListener(new View.OnClickListener() {

    final int[] btns = new int[] {R.raw.btn001, R.raw.btn002, R.raw.btn003, R.raw.btn004, R.raw.btn005, R.raw.btn006,
            R.raw.btn007, R.raw.btn008, R.raw.btn009, R.raw.btn010, R.raw.btn011, R.raw.btn012, R.raw.btn013,
            R.raw.btn014, R.raw.btn015, R.raw.btn016, R.raw.btn017, R.raw.btn018, R.raw.btn019, R.raw.btn020,
            R.raw.btn021, R.raw.btn022, R.raw.btn023, R.raw.btn024, R.raw.btn025, R.raw.btn026, R.raw.btn027,
            R.raw.btn028, R.raw.btn029, R.raw.btn030, R.raw.btn031, R.raw.btn032, R.raw.btn033, R.raw.btn034,
            R.raw.btn035, R.raw.btn036, R.raw.btn037, R.raw.btn038, R.raw.btn039, R.raw.btn040, R.raw.btn041,
            R.raw.btn042, R.raw.btn043, R.raw.btn044, R.raw.btn045, R.raw.btn046, R.raw.btn047,     
    };
    private Random rnd = new Random();

        @Override
        public void onClick(View v) {
            int sndToPlay = rnd.nextInt(btns.length);
            final MediaPlayer mp = MediaPlayer.create(MainActivity.this, btns[sndToPlay] );
            mp.start();
        ;
        };}
    );
        }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}
于 2013-10-16T19:21:24.093 に答える
1

すべてのサウンドを追加するリストを作成し、そのリストからランダムなサウンドを再生します。次の方法でランダムなインデックスを取得できます(int)(Math.random()*47)

于 2013-10-06T15:09:41.030 に答える
0

クリックするたびにランダムなサウンド (btn001 - btn047) を再生する 1 つのボタンを備えた 1 つのシンプルなアプリ。現在、クリックごとにランダムに選択された 1 つのサウンドのみが再生されます。他のサウンドを再生するには、アプリを閉じて再度起動する必要があります。

import java.util.Random;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

// MediaPlayer player;
private Random rnd = new Random();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // player = new MediaPlayer;
    Button sound = (Button) findViewById(R.id.button1);
    sound.setOnClickListener(new View.OnClickListener() {
    // Random r = new Random();
    // int x = r.nextInt(1);

    final int[] btns = new int[] {R.raw.btn001, R.raw.btn002, R.raw.btn003, R.raw.btn004, R.raw.btn005, R.raw.btn006,
            R.raw.btn007, R.raw.btn008, R.raw.btn009, R.raw.btn010, R.raw.btn011, R.raw.btn012, R.raw.btn013,
            R.raw.btn014, R.raw.btn015, R.raw.btn016, R.raw.btn017, R.raw.btn018, R.raw.btn019, R.raw.btn020,
            R.raw.btn021, R.raw.btn022, R.raw.btn023, R.raw.btn024, R.raw.btn025, R.raw.btn026, R.raw.btn027,
            R.raw.btn028, R.raw.btn029, R.raw.btn030, R.raw.btn031, R.raw.btn032, R.raw.btn033, R.raw.btn034,
            R.raw.btn035, R.raw.btn036, R.raw.btn037, R.raw.btn038, R.raw.btn039, R.raw.btn040, R.raw.btn041,
            R.raw.btn042, R.raw.btn043, R.raw.btn044, R.raw.btn045, R.raw.btn046, R.raw.btn047,     
    };
    // new int alfa = btns;

    // private Random rnd = new btns;

    int sndToPlay = rnd.nextInt(btns.length);
    final MediaPlayer mp = MediaPlayer.create(MainActivity.this, btns[sndToPlay] );
  // mp.seekTo(0);
  // mp.start();  

    // final MediaPlayer cheer = MediaPlayer.create(MainActivity.this, R.raw.btn001);

        @Override
        public void onClick(View v) {
            mp.start();
        ;
        };}

    );
        }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
于 2013-10-07T19:31:22.177 に答える