2012-11-25 51 views
0

我一直試圖給我的字母android應用程序添加聲音,但我似乎沒有成功。以下是我的代碼。Android - 將聲音添加到我的字母應用程序

public class Sound extends Activity implements OnCompletionListener { 
     /** Called when the activity is first created. */ 

    private ImageView b; 
    private ImageView t; 
    private ImageView j; 
    private MediaPlayer mp; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.alphabet); 

     b=(ImageView)findViewById(R.drawable.b); 
     t=(ImageView)findViewById(R.drawable.t); 
     j=(ImageView)findViewById(R.drawable.j); 

     b.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 

       b(); 
      } 

     }); 


     setup(); 

     t.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 

       t(); 
      }    
     }); 
     setup2(); 
     j.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       j(); 
      } 
     }); 
     setup3(); 
    } 
     public void onCompletion(MediaPlayer mp) { 
     stop(); 
    } 

    private void stop() { 
     mp.stop(); 

    } 

    private void b() { 
     mp.stop(); 
     loadClip(); 
     mp.start(); 

     b.setEnabled(true); 
    } 
    private void t() { 
     mp.stop(); 
     loadClip2(); 
     mp.start(); 

     t.setEnabled(true); 
    } 
    private void j() { 
     mp.stop(); 
     loadClip3(); 
     mp.start(); 

     j.setEnabled(true); 
    } 

    private void loadClip() { 

     try { 
      mp=MediaPlayer.create(this, R.raw.b); 
      mp.setOnCompletionListener(this); 

     } 
     catch (Throwable t) { 
      goBlooey(t); 
     } 
    } 
    private void loadClip2() { 

     try { 
      mp=MediaPlayer.create(this, R.raw.t); 
      mp.setOnCompletionListener(this); 

     } 
     catch (Throwable t) { 
      goBlooey(t); 
     } 
    } 

    private void loadClip3() { 

     try { 
      mp=MediaPlayer.create(this, R.raw.j); 
      mp.setOnCompletionListener(this); 

     } 
     catch (Throwable t) { 
      goBlooey(t); 
     } 
    } 

    private void setup() { 
     loadClip(); 
     b.setEnabled(true); 
    } 
    private void setup2() { 
     loadClip2(); 
     t.setEnabled(true); 
    } 

    private void setup3() { 
     loadClip3(); 
     j.setEnabled(true); 
    } 

    private void goBlooey(Throwable t) { 
     AlertDialog.Builder builder=new AlertDialog.Builder(this); 

     builder 
      .setTitle("Exception!") 
      .setMessage(t.toString()) 
      .setPositiveButton("OK", null) 
      .show(); 
    } 
} 

請您看看我的代碼,讓我知道在哪裏或缺少什麼。 所有的圖像都在drawable中,所有的剪輯都是原始的。 此致敬禮。

+0

請更具體。 – keyser

+0

我已經創建了一個字母應用程序,我希望點擊圖像時可以給出字母表的聲音。我已經創建了上面的代碼,但是當我點擊圖像時沒有聲音。 –

+0

我知道這一點,但嘗試通過調試或推理來找到實際問題。不要發佈整個課程。 – keyser

回答

1

快速瀏覽你的代碼,我會說你的mp不存在,以便在第一次運行加載另一個剪輯之前停止它。

頂部放 private MediaPlayer mp = null;

然後在每一行說mp.stop();將其更改爲if(mp!= null)mp.stop();

+0

仍然無法正常工作。我已經完成了你所建議的一切。仍然沒有聲音。 –

+0

聲音文件格式是mp3還是wav?是你的測試設備上出現的聲音?你有沒有收到你的「goBlooey」函數的消息? logcat中有什麼東西出現? –

+0

該應用程序有兩個組件,一個用聲音播放動畫(此部分工作正常),另一個是手動的,以便當用戶單擊圖像時會聽到聲音(發音)。 logcat上沒有任何內容。 –

相關問題