Visualizzazione stampabile
-
Quote:
Originariamente inviato da matteosci84
Ragazzi ho un problemino ancora nell'utilizzo della funzione per generare un suon alla pressione di un pulsante..
Funziona tutto correttamente attraverso il metodo che ho descritto all'inizio del post ma c'è un "effetto collaterale" durante la pressione ripetuta dei pulsanti impostati per riprodurre il suono.
Praticamente se ripremo a distanza di 1 secondo circa il pulsante con il suono sento ripeterlo correttamente ad ogni pressione..invece se premo velocemente (per esempio 4 volte) succede che il suono (beep) si sente una volta sola perchè è come se fosse ancora in esecuzione.
Il suono ha una durata quasi di un secondo (poco inferiore).
Io credo che si tratti del fatto che ci vorrebbe un modo per far si che ogni volta che si premer il pulsante si debba eseguire indipendentemente il suono anche se questo non sia terminato.
Mi sapreste dire come si fa? io vorrei ottenere un effetto stile suono di una tastiera musicale.
spero di essere stato chiaro
Grazie
Prova così, al click del bottone come prima istruzione invoca il metodo stop() sul media player.
In questo modo se il suono è in riproduzione viene stoppato e poi riavviato col metodo play().
Spero di essere stato chiaro
Inviato dal mio HTC Desire usando Androidiani App
-
Quote:
Originariamente inviato da
freebong
Prova così, al click del bottone come prima istruzione invoca il metodo stop() sul media player.
In questo modo se il suono è in riproduzione viene stoppato e poi riavviato col metodo play().
Spero di essere stato chiaro
Inviato dal mio HTC Desire usando
Androidiani App
Purtroppo come mi hai indicato tu non mi funziona....ho scritto così:
codice:
....
....
case R.id.assoc1:
{
mpButton.stop();
azione_assoc(1);
mpButton.start();
}
break;
....
.......
ho provato anche a mettere lo start subito dopo lo stop...oppure lo stop dopo la funzione...ma non va...praticamente in questo modo non sento nemmeno più il suono...
:-(
-
Quote:
Originariamente inviato da
matteosci84
Purtroppo come mi hai indicato tu non mi funziona....ho scritto così:
codice:
....
....
case R.id.assoc1:
{
mpButton.stop();
azione_assoc(1);
mpButton.start();
}
break;
....
.......
ho provato anche a mettere lo start subito dopo lo stop...oppure lo stop dopo la funzione...ma non va...praticamente in questo modo non sento nemmeno più il suono...
:-(
Era un tentativo, se vuoi prova a postare il codice completo e vediamo come si puo fare
-
Quote:
Originariamente inviato da
freebong
Era un tentativo, se vuoi prova a postare il codice completo e vediamo come si puo fare
Ok.. eccoti la classe main.java ho inserito gli stop nei primi 3 case per mostrarti come avevo scritto la modifica e l'ho provata sia inserendo lo stop prima della chiamata della funzione e anche dopo...L'effetto in run time con le istruzioni scritte in questo modo è che se c'è lo stop inserito così, praticamente appena si preme uno dei pulsanti con lo il metodo stop come prima volta, si sente il suono e poi se premo nuovamente qualsiasi altro tasto non si sente più nulla...Come se non andasse più in esecuzione il metodo start.
codice:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText totale;
private int somma= 0;
private int[] colli;
private EditText [] c;
private Button [] farm;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
colli = new int[11];
c = new EditText[11];
farm = new Button[11];
farm[1] = (Button) findViewById(R.id.button1);
farm[2] = (Button) findViewById(R.id.button2);
farm[3] = (Button) findViewById(R.id.button3);
farm[4] = (Button) findViewById(R.id.button4);
farm[5] = (Button) findViewById(R.id.button5);
farm[6] = (Button) findViewById(R.id.button6);
farm[7] = (Button) findViewById(R.id.button7);
farm[8] = (Button) findViewById(R.id.button8);
farm[9] = (Button) findViewById(R.id.button9);
farm[10] = (Button) findViewById(R.id.button10);
totale = (EditText) findViewById(R.id.total);
final MediaPlayer mpButton = MediaPlayer.create(this,R.raw.beep8);
View.OnClickListener gestore = new View.OnClickListener() {
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
{
mpButton.stop();
azione_colli(1);
mpButton.start();
}
break;
case R.id.button2:
{
azione_colli(2);
mpButton.stop();
mpButton.start();
}
break;
case R.id.button3:
{
azione_colli(3);
mpButton.stop();
mpButton.start();
}
break;
case R.id.button4:
{azione_colli(4); mpButton.start();}
break;
case R.id.button5:
{azione_colli(5); mpButton.start();}
break;
case R.id.button6:
{azione_colli(6); mpButton.start();}
break;
case R.id.button7:
{azione_colli(7); mpButton.start();}
break;
case R.id.button8:
{azione_colli(8); mpButton.start();}
break;
case R.id.button9:
{azione_colli(9); mpButton.start();}
break;
case R.id.button10:
{azione_colli(10); mpButton.start();}
break;
}
somma = sum_colli(colli);
String rT = Integer.toString(somma);
totale.setText(rT);
}
};
for (int i=1;i<=10;i++)
{
farm[i].setOnClickListener(gestore);
}
}
// metodo per incrementare il numero di colli
public void azione_colli(int i)
{
colli[i]=colli[i] + 1;
somma(c[i],colli[i]);
}
//metodo per aggiornare il valore della text edit dei colli o degli associati
public void somma(EditText e, int f)
{
String n = Integer.toString(f);
e.setText(n);
//s=Integer.parseInt(e.getText().toString());
}
//metodo per la somma totale dei colli caricati
public int sum_colli(int[]c)
{
int tot=0;
for (int i=0;i<c.length;i++)
tot=c[i]+tot;
return tot;
}
-
Quote:
Originariamente inviato da matteosci84
Ok.. eccoti la classe main.java ho inserito gli stop nei primi 3 case per mostrarti come avevo scritto la modifica e l'ho provata sia inserendo lo stop prima della chiamata della funzione e anche dopo...L'effetto in run time con le istruzioni scritte in questo modo è che se c'è lo stop inserito così, praticamente appena si preme uno dei pulsanti con lo il metodo stop come prima volta, si sente il suono e poi se premo nuovamente qualsiasi altro tasto non si sente più nulla...Come se non andasse più in esecuzione il metodo start.
Quote:
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText totale;
private int somma= 0;
private int[] colli;
private EditText [] c;
private Button [] farm;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
colli = new int[11];
c = new EditText[11];
farm = new Button[11];
farm[1] = (Button) findViewById(R.id.button1);
farm[2] = (Button) findViewById(R.id.button2);
farm[3] = (Button) findViewById(R.id.button3);
farm[4] = (Button) findViewById(R.id.button4);
farm[5] = (Button) findViewById(R.id.button5);
farm[6] = (Button) findViewById(R.id.button6);
farm[7] = (Button) findViewById(R.id.button7);
farm[8] = (Button) findViewById(R.id.button8);
farm[9] = (Button) findViewById(R.id.button9);
farm[10] = (Button) findViewById(R.id.button10);
totale = (EditText) findViewById(R.id.total);
final MediaPlayer mpButton = MediaPlayer.create(this,R.raw.beep8);
View.OnClickListener gestore = new View.OnClickListener() {
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
{
mpButton.stop();
azione_colli(1);
mpButton.start();
}
break;
case R.id.button2:
{
azione_colli(2);
mpButton.stop();
mpButton.start();
}
break;
case R.id.button3:
{
azione_colli(3);
mpButton.stop();
mpButton.start();
}
break;
case R.id.button4:
{azione_colli(4); mpButton.start();}
break;
case R.id.button5:
{azione_colli(5); mpButton.start();}
break;
case R.id.button6:
{azione_colli(6); mpButton.start();}
break;
case R.id.button7:
{azione_colli(7); mpButton.start();}
break;
case R.id.button8:
{azione_colli(8); mpButton.start();}
break;
case R.id.button9:
{azione_colli(9); mpButton.start();}
break;
case R.id.button10:
{azione_colli(10); mpButton.start();}
break;
}
somma = sum_colli(colli);
String rT = Integer.toString(somma);
totale.setText(rT);
}
};
for (int i=1;i<=10;i++)
{
farm.setOnClickListener(gestore);
}
}
// metodo per incrementare il numero di colli
public void azione_colli(int i)
{
colli=colli + 1;
somma(c,colli);
}
//metodo per aggiornare il valore della text edit dei colli o degli associati
public void somma(EditText e, int f)
{
String n = Integer.toString(f);
e.setText(n);
//s=Integer.parseInt(e.getText().toString());
}
//metodo per la somma totale dei colli caricati
public int sum_colli(int[]c)
{
int tot=0;
for (int i=0;i<c.length;i++)
tot=c+tot;
return tot;
}
Te la butto lì..
Prova ad aggiungere prima del metodo public void onClick @ override
Inviato dal mio HTC Desire usando Androidiani App
-
Quote:
Originariamente inviato da
freebong
Te la butto lì..
Prova ad aggiungere prima del metodo public void onClick @ override
Inviato dal mio HTC Desire usando
Androidiani App
Niente da fare.....:-(
Ma può essere che esiste un altro modo per fare eseguire un suono a ripetizione continua simulando un pulsante di un pianoforte.. per farmi intendere..perchè l'effetto dovrebbe essere proprio di impulso ad ogni tocco.....:-(