it-swarm.com.de

Spielen Sie den Sound beim Klicken auf die Schaltfläche "Android"

Wie bekomme ich eine Schaltfläche, um beim Klicken einen rohen Sound abzuspielen? Ich habe gerade eine Schaltfläche mit der ID button1 erstellt, aber der Code, den ich schreibe, ist falsch.

import Android.media.MediaPlayer;

public class BasicScreenActivity extends Activity {

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

    Button one = (Button)this.findViewById(R.id.button1);
    MediaPlayer = mp;
    mp = MediaPlayer.create(this, R.raw.soho);
    zero.setOnCliclListener(new View.OnClickListener() )

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



}
83
Dmitry

Dies ist der wichtigste Teil des Codes im ursprünglichen Beitrag. 

Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){

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

Um es Schritt für Schritt zu erklären:

Button one = (Button) this.findViewById(R.id.button1);

Erstens ist die Initialisierung der Taste, die beim Abspielen des Sounds verwendet werden soll. Wir verwenden die findViewById der Aktivität und übergeben die von uns zugewiesene ID (in diesem Beispiel: R.id.button1), um die Schaltfläche zu erhalten, die wir benötigen. Wir gießen es als Button, damit es leicht der Variablen one zugeordnet werden kann, die wir initialisieren. Weitere Erklärungen dazu, wie dies funktioniert, sind für diese Antwort nicht geeignet. Dieses gibt einen kurzen Einblick, wie es funktioniert.

final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);

So initialisieren Sie eine MediaPlayer . Der MediaPlayer folgt dem Static Factory Method Design Pattern . Um eine Instanz zu erhalten, rufen wir ihre create() -Methode auf und übergeben den Kontext und die Ressourcen-ID des Sounds, den wir spielen möchten, in diesem Fall R.raw.soho. Wir erklären es als final. Jon Skeet hat eine großartige Erklärung dafür gegeben, warum wir hier

one.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        //code
    }
});

Zum Schluss legen wir fest, was unsere zuvor initialisierte Schaltfläche tun soll. Spielen Sie einen Ton beim Klicken der Taste! Dazu setzen wir die OnClickListener unserer Schaltfläche one. Im Inneren befindet sich nur eine Methode, onClick(), die enthält, welche Anweisungen die Schaltfläche ausführen soll beim Klicken auf.

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

Um den Ton abzuspielen, rufen wir die start() -Methode von MediaPlayer auf. Diese Methode startet die Wiedergabe des Sounds.

Dort können Sie jetzt einen Tastendruck in Android abspielen!


Bonus Teil:

Wie im Kommentar unten angegebenDanke Langusten Gustel!und wie empfohlen in der Android Developer Reference , ist es wichtig, die release() -Methode aufzurufen, um Ressourcen freizugeben, die nicht mehr verwendet werden. Normalerweise geschieht dies, sobald der wiederzugebende Sound abgeschlossen ist. Dazu fügen wir eine OnCompletionListener zu unserer mpwie folgt hinzu:

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        //code
    }
});

Innerhalb der onCompletion-Methode veröffentlichen wir sie wie folgt:

public void onCompletion(MediaPlayer mp) {
    mp.release();
}

Es gibt offensichtlich bessere Wege zur Implementierung dies. Sie können beispielsweise den MediaPlayer zu einer Klassenvariablen machen und seinen Lebenszyklus zusammen mit dem Lebenszyklus von Fragment oder Activity, die ihn verwenden, handhaben. Dies ist jedoch ein Thema für eine andere Frage. Um den Umfang dieser Antwort klein zu halten, habe ich sie geschrieben, um zu zeigen, wie ein Sound beim Klicken auf die Schaltfläche in Android gespielt wird.


Ursprünglicher Beitrag

Zuerst. Sie sollten Ihre Anweisungen in einen Block einfügen, in diesem Fall die Methode onCreate.

Zweite. Sie haben die Schaltfläche als Variable initialisiert einDann haben Sie eine Variable verwendet null und setzen Sie seinen onClickListener auf einen unvollständigen onClickListener. Verwenden Sie die Variable ein für den setOnClickListener.

Drittens fügen Sie die Logik ein, um den Sound im onClick abzuspielen.

In Summe:

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

public class BasicScreenActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basic_screen);

        Button one = (Button)this.findViewById(R.id.button1);
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
        one.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {
                mp.start();
            }
        });
    }
}
174
Keale

Getestet und funktioniert 100%

public class MainActivity extends ActionBarActivity {
    Context context = this;
    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        mp = MediaPlayer.create(context, R.raw.sound);
        final Button b = (Button) findViewById(R.id.Button);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.sound);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
            }
        });
    }
}

Das war alles was wir tun mussten

if (mp.isPlaying()) {
    mp.stop();
    mp.release();
    mp = MediaPlayer.create(context, R.raw.sound);
}
33
DeathRs

Der beste Weg, dies zu tun, ist hier, nachdem ich im LogCat nach einem Problem nach dem anderen gesucht habe

MediaPlayer mp;
mp = MediaPlayer.create(context, R.raw.sound_one);
mp.setOnCompletionListener(new OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mp.reset();
        mp.release();
        mp=null;
    }
});
mp.start();

Nicht Freigabe Der Media Player gibt Ihnen diesen Fehler in LogCat aus:

Android: MediaPlayer wurde ohne Veröffentlichung abgeschlossen

Nicht Zurücksetzen Der Media-Player gibt diesen Fehler in LogCat aus:

Android: mediaplayer went away with unhandled events

Spielen Sie also sicheren und einfachen Code, um den Media Player zu verwenden.

Um mehrere Sounds in derselben Aktivität/Fragment wiederzugeben, ändern Sie einfach die resID, während Sie einen neuen Media Player erstellen

mp = MediaPlayer.create(context, R.raw.sound_two);

und spiel es!

Habe Spaß!

28
sud007
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 mp;
    Button one;

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

        mp = MediaPlayer.create(this, R.raw.soho);
        one = (Button)this.findViewById(R.id.button1);

        one.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mp.start();
            }
        });
    }
}
8
Auto-Droid ツ
  • Das Audio muss im Ordner raw abgelegt werden. Wenn es nicht vorhanden ist, erstellen Sie
  • Der Raw-Ordner muss sich im Res-Ordner befinden
  • Der Name darf weder - noch Sonderzeichen enthalten.

Für Ihre Aktivität benötigen Sie ein Objekt MediaPlayer, in der onCreate-Methode oder der onclick-Methode müssen Sie MediaPlayer wie MediaPlayer.create(this, R.raw.name_of_your_audio_file) initialisieren. Dann ist Ihre Audiodatei bereit, um mit dem Aufruf für start() abgespielt zu werden. Da Sie möchten, dass es in eine Schaltfläche eingefügt wird, müssen Sie es in die onClick-Methode einfügen.

Beispiel:

private Button myButton;
private MediaPlayer mp;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myactivity);
        mp = MediaPlayer.create(this, R.raw.gunshot);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();
            }
        });
}
}
4
res
Button button1=(Button)findViewById(R.id.btnB1);
button1.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
MediaPlayer mp1 = MediaPlayer.create(this, R.raw.b1);
mp1.start();
}
});

Versuchen Sie dies, ich denke es wird funktionieren

1
Uzzal Prasad

öffentliche Klasse MainActivity erweitert AppCompatActivity {

public void clickMe (View view) {

    MediaPlayer mp = MediaPlayer.create(this, R.raw.xxx);
    mp.start();

}

einen Button mit einer Methode erstellen, könnte aufgerufen werden, wenn der Button gedrückt wurde 

erstellen Sie dann eine Variable für die (MediaPlayer) -Klasse mit dem Pfad Ihrer Datei

MediaPlayer mp = MediaPlayer.create (dies, R.raw.xxx);

führen Sie schließlich die Startmethode in dieser Klasse aus 

mp.start ();

die Datei wird ausgeführt, wenn der Knopf gedrückt wird. Ich hoffe, das war hilfreich!

0
NEC

wenn die Schaltfläche für die Aufnahme oder andere Medienfunktionen vorgesehen ist, haben Sie einige vordefinierte Sounds: SHUTTER_CLICK, FOCUS_COMPLETE, START_VIDEO_RECORDING, STOP_VIDEO_RECORDING. 

Nett! 

MediaActionSound 

Eine Klasse zum Erzeugen von Sounds, die denen entsprechen, die durch verschiedene Aktionen der Medien- und Kamera-APIs erzeugt werden. Dokumente

verwenden Sie wie:

fun playBeepSound() {
    val sound = MediaActionSound()
    sound.play(MediaActionSound.START_VIDEO_RECORDING)
}
0
Dan Alboteanu

Anstatt es wie von DeathRs vorgeschlagen zurückzusetzen:

if (mp.isPlaying()) {
       mp.stop();
       mp.release();
       mp = MediaPlayer.create(context, R.raw.sound);
} mp.start();

wir können den MediaPlayer einfach zurücksetzen, damit er verwendet werden kann:

if (mp.isPlaying()) {
       mp.seekTo(0)
}
0