1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. naruto25, 21.05.2012 #1
    naruto25

    naruto25 Threadstarter Android-Hilfe.de Mitglied

    Nabend leute,

    habe folgende frage, ich habe einen imagebutton. wenn ich auf den button klicke soll ein sound abgespielt werden.

    das bekomme ich auch hin mit dem code:

    Code:
    
    SoundPool sp;
    ....
    
            final int bum;
            sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
            
    ....
    imagebutton.setImageResource(R.drawable.ingrammac);
                    bum = sp.load(this, R.raw.mac10, 1);
                    
                    imagebutton.setOnClickListener(new OnClickListener() {
                         
                        @Override
                        public void onClick(View arg0) {
                        sp.play(bum, 1, 1, 0, 0, 1);
                        }
                    });
    
    ich möchte das aber so haben, dass wenn ich den button gedrückt halte, die sounds so lange wiedergegeben werden bis man den button loslässt. beim image handelt es sich um ein waffe. beim gedrückt halten soll also dauerfeuer ausgelöst werden.

    ich habe das auch mit der onTouch() methode versucht. hier der code:

    Code:
    
    imagebutton.setImageResource(R.drawable.schmidtmp);
                    bum = sp.load(this, R.raw.tmp, 1);
                    
                    imagebutton.setOnTouchListener(new OnTouchListener() {
                         
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                        
                            if(event.getAction() == MotionEvent.ACTION_UP ||    event.getAction() == MotionEvent.ACTION_MOVE) {
    
                            sp.play(bum, 1, 1, 0, 0, 1);
                            
                            }
                            return true;
                        }
    });
    
    das funktioniert auch wenn ich gedrückt halte und dabei mein finger um den button bewege. aber nicht wenn ich auf einen punkt gedrückt halte. das bekomme ich irgendwie nicht hin. habe das mit dem setOnLongClickListener versucht, da hat er mir eine fehlermeldung gegeben. :(
    ich weiss also nicht mehr weiter und bitte um eure ratschläge. ich bedanke mich im voraus. :winki:

    schöne grüße
     
  2. Lightning2010, 21.05.2012 #2
    Lightning2010

    Lightning2010 Junior Mitglied

    wenn du bei ACTION_DOWN anfängst zuspielen und bei ACTION_UP aufhörst sollte es genau den gewünschten Effekt haben

    Gruß
    -Lightning2010
     
  3. naruto25, 21.05.2012 #3
    naruto25

    naruto25 Threadstarter Android-Hilfe.de Mitglied

    Hallo Lightning2010,

    danke für deine Antwort. Ich habe es so versucht wie du es gesagt hast, aber irgendwie bekomme ich das nicht hin. habe das mit if-else bzw. mit do-while schleife versucht. wenn ich einmal drauf klicke dann entsteht eine endlosschleife :huh:
     
  4. naruto25, 22.05.2012 #4
    naruto25

    naruto25 Threadstarter Android-Hilfe.de Mitglied

    habe das nun mit folgendem code versucht, klappt leider immernoch nicht.

    Code:
    @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                                
                            switch(event.getAction()){
                            
                            case MotionEvent.ACTION_DOWN:
                            {
                                sp.setLoop(bum, 1);
                                sp.play(bum, 1, 1, 0, 0, 1);
                            }
                            break;
                            
                            case MotionEvent.ACTION_UP:
                            {
                                sp.pause(bum);
                            }
                            }
                            
                            return true;
                        }
    
    wenn ich drücke und gedrückt halte, wird nur einmal der sound wiedergegeben. kann mir denn keiner helfen? :confused:
     
  5. hsofx, 23.05.2012 #5
    hsofx

    hsofx App-Anbieter (Werbung)

    Ich würd's auch mit onTouch machen. Allerdings wird die OnTouch-Funktion beim Drücken ja nur einmal ausgeführt. Egal wie lange Du auf der Taste bleibst.

    Ich würds so machen, dass beim Drücken ein Timer gestartet wird in einem Intervall, der so lange ist, wie der gewünschte Intervall der einzelnen Schüsse des Dauerfeuers. Wenn der Timer zu kurz eingestellt ist, überlagern sich die Sounds, was ja nicht gewollt ist.

    Bsp: Wenn Du einen Schuss pro Sekunde abfeuert willst, kannst du bei ACTION_DOWN den ersten Schuss absetzen und den Sound spielen. Gleich danach startest Du einen Timer der jede Sekunde abläuft. Im Timer wird dann jedesmal geprüft ob ACTION_UP bereits da war. Wenn nicht wird wieder ein Schuss ausgelöst.
     
  6. naruto25, 24.05.2012 #6
    naruto25

    naruto25 Threadstarter Android-Hilfe.de Mitglied

    Hallo hsofx,

    danke für deine hilfe. du hast recht, das sich die sounds überlagen. werde es so versuchen wie du gesagt hast. thx. :thumbup:
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Constraint: Buttons gleichmäßig untereinander ausrichten Android App Entwicklung 11.10.2017
[OFFEN] RadioButtons mit Button Tinting sehen auf Geräten unterschiedlich aus (API > 21) Android App Entwicklung 09.09.2017
[ERLEDIGT] Android Studio - EditText (Passwort) mit Button einfügen? Android App Entwicklung 22.07.2017
[ERLEDIGT] Android Studio - Buttons zu bestimmten Punkten per klick bewegen lassen Android App Entwicklung 20.07.2017
[OFFEN] Mysteriöser Button Android App Entwicklung 24.06.2017
[ERLEDIGT] Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung 23.06.2017
[OFFEN] Probleme mit Action Floating Button Android App Entwicklung 27.05.2017
[ERLEDIGT] Buttontext per klick ändern Android App Entwicklung 14.03.2017
SnackBar Action Button wird nicht an den unteren Rand gesetzt Android App Entwicklung 07.03.2017
Der Zurück-Button wird nicht angezeigt Android App Entwicklung 23.01.2017
Du betrachtest das Thema "Sound solange wieder geben solange Button gedrückt wird" im Forum "Android App Entwicklung",