2011-03-29 9 views
19

안녕하세요 여러분, 텍스트를 클릭 할 때 특정 mp3 파일을 재생하고 싶습니다.Android : TextView를 클릭하면 원시 리소스에서 mp3 파일 재생

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); 

    } 
} 

내가 실행 예를 들어, 내 지저분한 코드

죄송 단어 앱이 nicholas.mp3을 재생해야 "니콜라스"... 클릭, 나는 안드로이드 디바이스에 새로운 해요 이, 힘을 가까이서 오류가 있어요. 당신은 이것에 대해 훨씬 더 좋은 아이디어가 있습니까? 미리 많은 감사드립니다! create() 호출 한 후, 이미 실행 준비,

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

또한, 그래서 당신은 단지 start() 권리를 호출, 명시 적으로 수행 할 필요가 없습니다 :

답변

44

당신은 MediaPlayer.create 방법에 컨텍스트 인스턴스에 전달해야 create() 이후.

4

mPlayer 개체를 만들 때 상황에 맞는 PlayWord.this 인 개체를 전달해야합니다.

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

코드 전용 답변을 피하십시오. 코드가 OP 문제를 해결하는 방법을 설명하십시오. 당신이 약간의 상황과 설명을 제공 할 수 있다면, 특히 당신보다 경험이 적은 사람들 모두에게 더 도움이됩니다. –