Autore Topic: chiamare un intent con parametri diversi ogni volta  (Letto 718 volte)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
chiamare un intent con parametri diversi ogni volta
« il: 22 Febbraio 2011, 16:59:02 CET »
0
Salve ragazzi. in pratica ho cercato su internet ma forse sbaglio nel digitare le parole della ricerca. In pratica io ho una serie di azioni da fare. Ogni azione corrisponde ad un intent. ma ogni volta che chiamo un intent esso deve eseguirmi l'azione con paramentri diversi, che vorrei passargli io, alla sua chiamata....
si può fare in.... ?  o_O 

grazie in anticipo

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:chiamare un intent con parametri diversi ogni volta
« Risposta #1 il: 22 Febbraio 2011, 17:42:43 CET »
0
...in java.
...in 4 righe.
^_^

i parametri li passi nell'intent come extras, quindi devi agire su questi.
Ma non ho capito bene la domanda. Se provi a fare un esempio più concreto, provo a vedere se riesco ad aiutarti.

7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiamare un intent con parametri diversi ogni volta
« Risposta #2 il: 22 Febbraio 2011, 17:57:18 CET »
0
ok, allora tra le tante cose ripetitive che devo fare questa è una:
ho un mediaplayer. esso lo devo chiamare più volte, per fargli eseguire dei wav diversi. come il wav, anche il testo che viene visualizzato nello stesso layout di mediaplayer deve cambiare.  quindi ho pensato di parametrizzare il testo e il wav (sottoforma di path)
mediaplayer.java
Codice (Java): [Seleziona]
import java.io.IOException;

import com.GameGuide.R;



import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class mediaplayer extends Activity {

            private MediaPlayer mMediaPlayer = new MediaPlayer();
         
           private String  path="mnt/sdcard/explore/cattedrale.wav"; ;
           TextView storia_scritta;
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.mediaplayer);
               storia_scritta=(TextView)findViewById(R.id.storia);
                //this.prepare_mediaplayer();
             }
               
           

    /** Called when the activity is first created. */
 
   public void prepare_mediaplayer(String path, String testo_storia){
         
           
     
        this.setPath(path);
        storia_scritta.setText(testo);
       storia_scritta.setText("La Cattedrale di Bari è un'altra importante struttura religiosa e architettonica, dedicata a San Sabino di Canosa, fu iniziata in stile bizantino nel 1034, ma distrutta nel 1156. Un nuovo edificio venne costruito tra il 1170 1178, in parte ispirato a quello di San Nicola. Della struttura originale rimangono solo alcune tracce della pavimentazione del transetto. L'architettura visibile oggi è quella romanica e si caratterizza per la bella facciata con i tre portali. La cripta ospita le reliquie di San Sabino e l'icona della Madonna Odigitria. Il Castello Svevo Normanno è un'altra meta da non mancare; fu eretto da Ruggero II di Sicilia intorno a 1131. Distrutto nel 1156, fu ricostruita da Federico II di Hohenstaufen. Oggi ospita una galleria d'arte con esposizioni temporanee.");
    // setContentView(storia_scritta);
      //  Bundle extras = getIntent().getExtras();
        //playAudio(extras.getInt(MEDIA));
       
                playAudio();
    }
public void setPath(String path){
        this.path=path;
}
    public void playAudio() {
       
         if (path == "") {
             // Tell the user to provide an audio file URL.
             Toast
                     .makeText(
                             mediaplayer.this,
                             "Please edit MediaPlayer_Audio Activity, "
                                     + "and set the path variable to your audio file path."
                                     + " Your audio file must be stored on sdcard.",
                             Toast.LENGTH_LONG).show();

         }
       // mMediaPlayer = new MediaPlayer();
        try {
                        mMediaPlayer.setDataSource(path);
                        mMediaPlayer.prepare();
                } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
         
}
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // TODO Auto-generated method stub
        if (mMediaPlayer != null) {
            mMediaPlayer.release();
            mMediaPlayer = null;
        }

    }
   
   
    public void playResource(View button) {
        try {
               
                       
                         mMediaPlayer.start();
                } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
       
       
        //System.out.println("CLICCO PLAY");    
       
    }
 
   public void stopResource(View button) {
       
       
        try {
                 mMediaPlayer.stop();
             mMediaPlayer.reset();
             mMediaPlayer.setDataSource(path);
                        mMediaPlayer.prepare();
                } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
       // System.out.println("CLICCO STOP");
       
    }
   public void pauseResource(View button) {
       
       mMediaPlayer.pause();
       //System.out.println("CLICCO PAUSE");
     
   }
   
   
}

e questo invee è storia.java ovvero il punto in cui vorrei chiamare mediaplayer e passargli cose diverse. (che poi farò ovviamente con un ciclo) ovviamente qui ho provato a fare il richiamo del mediaplayer coi parametri. .... ma.... :-(  o_O  :-\

Codice (Java): [Seleziona]
import com.GameGuide.R;
import com.tts_mediaplayer.mediaplayer;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;

public class storia extends Activity{
        @Override
        public void onCreate(Bundle savedInstanceState) {
                //se si può parametrizzare un intent allora qui ci sarà la logica di gioco e non si chiamerà più storia
                super.onCreate(savedInstanceState);
                setContentView(R.layout.mediaplayer);
                //potrei chiamare mediaplayer e ogni volta pasargli il nodo testo da visualizzare
                //e quindi da ascoltare
                String testo_storia=xml.explore.mainExplore.parserContext.getParsedDataContext().get(0).getStoria();
                //l'audio lo metto in explore
                String  path=xml.explore.mainExplore.parserContext.getParsedDataContext().get(0).getAudiotts();
                mediaplayer media=new mediaplayer();
               
                 
                media.prepare_mediaplayer(path, testo_storia);
                Intent media1=new Intent(storia.this, mediaplayer.class);
                startActivity(media1);
        }
}
« Ultima modifica: 22 Febbraio 2011, 17:59:02 CET da softmystery »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:chiamare un intent con parametri diversi ogni volta
« Risposta #3 il: 22 Febbraio 2011, 17:59:17 CET »
+1
usa gli extras per passare i parametri aggiuntivi ad un intent quando invochi un'action.
Questo è quello che ti serve.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
Re:chiamare un intent con parametri diversi ogni volta
« Risposta #4 il: 22 Febbraio 2011, 22:37:51 CET »
0
fantastico! grazie