2011-03-29 21 views
19

Merhaba arkadaşlar Bir metin tıklandığında belli bir mp3 dosyasını çalmak istiyorum.Android: Bir hamleye tıkladığınızda ham kaynaktan mp3 dosyasını çalın

package com.example.playword; 

import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
//import android.os.Handler; 
import android.view.View; 
//import android.view.View.OnClickListener; 
//import android.widget.Button; 
import android.widget.TextView; 

public class PlayWord extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //final Handler mHandler = new Handler(); 

     final TextView nicholas = (TextView) findViewById(R.id.nicholas); 
     final TextView was = (TextView) findViewById(R.id.was); 

     nicholas.setText("Nicholas "); 
     was.setText("was ");   

     /* 
     Button btn = (Button) (findViewById(R.id.nicholasBtn)); 

     btn.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       nicholas.setText("Nicholas (Clicked!) "); 
      } 

      }); 
     */ 

     View.OnClickListener handler = new View.OnClickListener(){ 
      public void onClick(View v) { 
       switch (v.getId()) { 
        case R.id.nicholas: // doStuff 

         MediaPlayer mPlayer = MediaPlayer.create(null, R.raw.aaanicholas); 

         try { 
          mPlayer.prepare(); 
         } catch (IllegalStateException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

         mPlayer.start(); 

         nicholas.setText("Nicholas (Clicked!) "); 
         break; 

        case R.id.was: // doStuff 

         MediaPlayer mPlayer1 = MediaPlayer.create(null, R.raw.aaawas); 

         try { 
          mPlayer1.prepare(); 
         } catch (IllegalStateException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

         mPlayer1.start(); 

         was.setText("was (Clicked!) "); 
         break; 
       } 
      } 
     }; 

     findViewById(R.id.nicholas).setOnClickListener(handler); 
     findViewById(R.id.was).setOnClickListener(handler); 

    } 
} 

Ben çalıştırın: Örneğin, benim dağınık kodu için

Maalesef sözcüğü, uygulama nicholas.mp3 oynamak zorunda "Nicholas" ... tıklandığında, ben android dev yeniyim Bu, bir güç kapanışı hatası alıyorum .. Bu konuda daha iyi bir fikrin var mı? Şimdiden çok teşekkürler! create() çağrısından sonra, zaten yürütülür hazırlamak,

MediaPlayer mPlayer = MediaPlayer.create(PlayWorld.this, R.raw.aaanicholas); 

Ayrıca, bu yüzden sadece start() hakkı çağırmak, açıkça yürütmek gerekmez:

cevap

44

Sen MediaPlayer.create yöntem haline bir bağlam örneğinde geçmesi gerekiyor create()'dan sonra.

4

mPlayer nesnesini oluşturduğunuzda, sizin durumunuz olan Bağlamı PlayWord.this iletmeniz gerekir.

0
MediaPlayer mPlayer = MediaPlayer.create(FakeCallScreen.this, R.raw.mysoundfile); 
    mPlayer.start(); 
+0

Lütfen yalnızca kod yanıtları vermekten kaçının. Kodunuzun OP'in problemini nasıl çözdüğünü açıklamaya çalışın. Bazı bağlam ve açıklamayı sağlayabiliyorsanız, herkesten, özellikle sizden daha az tecrübeli olanlar için daha yararlıdır. –

İlgili konular