Autore Topic: riproduzione file audio al click  (Letto 834 volte)

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
riproduzione file audio al click
« il: 09 Settembre 2013, 19:48:49 CEST »
0
Ciao a tutti

Volevo fare una semplice app composta da un'immagine su sfondo che quando viene selezionata con un tocco riproduce un file audio random tra quelli possibili.

Per ora ho creato l'activity principale con l'immagine che mi interessava.. Ma per il resto non ho molte idee.

Siccome l'idea mi sembra di veloce realizzazione per chi ha più pratica di me (son agli inizi) vi chiedo se qualcuno gentilmente mi da due idee su come procedere o butta giù un po di codice per la realizzazione

Grazie in anticipo

Offline matttt

Re:riproduzione file audio al click
« Risposta #1 il: 09 Settembre 2013, 20:11:17 CEST »
+1
Cosa usi per l'immagine? In funzione di quello possiamo dirti come gestire l'evento del click.
Poi per il play di un suono puoi fare:
Codice (Java): [Seleziona]
MediaPlayer beep = MediaPlayer.create( getApplicationContext(), R.raw.beep );
beep.start();

E in res/raw inserisci il file audio.
Documentazione:
Media Playback | Android Developers
Le mie apps su Google Play Store:

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
Re:riproduzione file audio al click
« Risposta #2 il: 09 Settembre 2013, 20:54:37 CEST »
0
Per ora ho semplicemente modificato l'xml aggiungendo l'immagine con il tag ImageView

Codice: [Seleziona]
       
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentTop="true"
android:src="@drawable/img" />


Offline matttt

Re:riproduzione file audio al click
« Risposta #3 il: 09 Settembre 2013, 21:09:53 CEST »
+1
Ok, allora prova così ( dentro onCreate() ):
Codice (Java): [Seleziona]
ImageView imgView = (ImageView) findViewById( R.id.imageView1 );
imgView.setOnClickListener( new OnClickListener() {
    public void onClick( View view ) {
        MediaPlayer beep = MediaPlayer.create( getApplicationContext(), R.raw.beep );
        beep.start();
    }
});
Le mie apps su Google Play Store:

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
Re:riproduzione file audio al click
« Risposta #4 il: 09 Settembre 2013, 21:37:32 CEST »
0
perfetto!
ecco e se ora volessi implementare una modifica tale che ad ogni click il player riproduce uno a caso dei file presenti nella cartella raw?
chiedo troppo?  :D

Offline matttt

Re:riproduzione file audio al click
« Risposta #5 il: 09 Settembre 2013, 21:55:42 CEST »
+1
:)
Dovrebbe essere così... ma fai buone prove, sto andando molto ad improvvisazione:
Codice (Java): [Seleziona]
Field[] fields = R.raw.class.getFields();
Random r = new Random();
int num = r.nextInt( fields.length );
MediaPlayer beep = MediaPlayer.create( getApplicationContext(), fields[num].getInt( fields[num] ) );
beep.start();

Se ti sono stato utile un bel click su fa sempre bene :)
Le mie apps su Google Play Store:

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
Re:riproduzione file audio al click
« Risposta #6 il: 09 Settembre 2013, 22:23:16 CEST »
0
l'avrei già fatto ma non lo vedo proprio!

comunque il codice che mi hai scritto non l'ho capito bene quindi mi resta difficile adattarlo.
In particolare la prima riga e fields[num].getInt( fields[num]

non capisco quale file di import devo aggiungere per risolvere
« Ultima modifica: 09 Settembre 2013, 23:01:55 CEST da vietcong85 »

Offline matttt

Re:riproduzione file audio al click
« Risposta #7 il: 09 Settembre 2013, 23:31:34 CEST »
+1
Il pulsante [THANKS] è in alto a destra nelle risposte.

Devi importare da java.lang.reflect

In sostanza... la prima riga fa una lista delle risorse di tipo raw (Java Reflect li chiama Field).
Poi genera un numero random compreso tra 0 e il numero di elementi in fields.
E poi ricava l'id della risorsa corrispondente a quel numero random (la forma sembra un po' strada ma credo sia corretta).

Insomma dovrebbe essere corretto :) ma non ho provato. Casomai fammi sapere.
Le mie apps su Google Play Store:

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
Re:riproduzione file audio al click
« Risposta #8 il: 10 Settembre 2013, 22:28:53 CEST »
0
avevo importato da ma comunque mi da un errore di tipo
Citazione
Unhandled exception type IllegalAccessException 
sul codice
Codice (Java): [Seleziona]
fields[num].getInt( fields[num] )

Offline matttt

Re:riproduzione file audio al click
« Risposta #9 il: 10 Settembre 2013, 23:38:28 CEST »
+1
Significa che devi racchiungere la riga con un try & catch.
Codice (Java): [Seleziona]
try {
  // ...
}
catch( IllegalAccessException e ) {
  // ...
}

Eventualmente se vai col mouse sopra l'errore indicato in rosso puoi dire ad Eclipse di aggiungerti lui il blocco try & catch.
Le mie apps su Google Play Store:

Offline vietcong85

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy tab
  • Sistema operativo:
    windows7
Re:riproduzione file audio al click
« Risposta #10 il: 12 Settembre 2013, 19:12:33 CEST »
0
perfetto!! grazie mille funziona tutto come volevo! Grazie mille  :-) :-) :-) :-)